Incomplete referenced artifact analysis
- Category
- analysis-evasion
- Confidence
- 100% confidence
- Finding
Referenced artifact was not completely inspected
- Content
md node scripts/video.mjs --mode clip --task main-image-video \
Security audit
Security checks for vulnerabilities and agentic risk
Review is needed because this video skill can use existing API credentials to send your image to a still-image service while ignoring your chosen video model.
Before running, explicitly select a video-capable provider and verify its actual model and endpoint with --dry-run. Do not assume DLAZY_VIDEO_MODEL controls every backend. Submitted images, prompts, and optional brand references go to the selected cloud provider; use approved content and verify the output is genuinely video before running a batch.
Referenced artifact was not completely inspected
node scripts/video.mjs --mode clip --task main-image-video \
Referenced artifact was not completely inspected
node scripts/video.mjs --mode clip --task main-image-video --image x.jpg \
Without declared permissions the skill's intent is opaque and cannot be validated.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
| 图生视频 | 一张商品图 → 3–5 秒运动镜头 |
| 运镜控制 | 推、拉、环绕、俯仰、微距扫过 |
| 材质动态 | 面料飘动、金属反光扫过、液体晃动 |
| 批量 | 配合 [batch-image](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/batch-image/skill.md) 整批出 |
| 不能做 | 说明 |
| --- | --- |
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
| 不能做 | 说明 |
| --- | --- |
| 长视频 | 超过 8 秒请用 [product-video-ad](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/product-video-ad/skill.md) 分镜串联 |
| 口播 | 用 [ugc-testimonial](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/ugc-testimonial/skill.md) |
| 改商品 | 视频模型会放大原图的瑕疵,先用 [item-repair](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-repair/skill.md) 修好 |
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
## Tips
- **3 秒够用**。主图位视频不是广告片,讲清楚一个卖点就行。
- **别加文字**。主图视频的文字规则和主图一样严,字幕留给 [product-video-ad](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/product-video-ad/skill.md)。
- **首帧就是封面**。用商品最好看的角度做输入图,因为它大概率是静止时显示的那一帧。
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
| 不能做 | 说明 |
| --- | --- |
| 长视频 | 超过 8 秒请用 [product-video-ad](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/product-video-ad/skill.md) 分镜串联 |
| 口播 | 用 [ugc-testimonial](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/ugc-testimonial/skill.md) |
| 改商品 | 视频模型会放大原图的瑕疵,先用 [item-repair](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-repair/skill.md) 修好 |
---
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
| --- | --- |
| 长视频 | 超过 8 秒请用 [product-video-ad](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/product-video-ad/skill.md) 分镜串联 |
| 口播 | 用 [ugc-testimonial](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/ugc-testimonial/skill.md) |
| 改商品 | 视频模型会放大原图的瑕疵,先用 [item-repair](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-repair/skill.md) 修好 |
---
The workflow directs an initial generation run without explicitly explaining that the selected backend may receive the input image and prompt. For a remote provider, this can disclose unpublished product imagery, identifiable models, or confidential prompt content before the user understands the data transfer; explicit backend selection and the optional dry run reduce, but do not eliminate, this risk.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
3. **单张试跑**。视频比图贵得多,先跑一条 3 秒的看运镜对不对。
4. **确认后再批量**。
5. **过一遍平台规格**。视频也有规格要求(时长、比例、体积),
目前 [platform-compliance](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/platform-compliance/skill.md) 只校验静态图,视频请人工对照平台文档。
---
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
| 现象 | 原因 | 怎么办 |
| --- | --- | --- |
| 商品在动的过程中变形 | 运动幅度给太大 | 换成 `slow` / `subtle` 系的词,缩短时长 |
| 画面糊 | 原图分辨率不够 | 先用 [material-enhancement](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/material-enhancement/skill.md) 提清晰度 |
| 模特脸在动的时候崩 | 人脸是视频模型的重灾区 | 改用不露脸的景别,或改成商品特写 |
| 时长对不上 | 多数模型的时长是档位不是连续值 | 按模型支持的档位取,别硬凑 |
| 报错说没指定模型 | `DLAZY_VIDEO_MODEL` 没设 | 见「先配后端」 |
The file instructs users to supply reference images through --images for video generation, with external backends such as fal and Replicate configured above. Unlike the backend catalog alone, this is an instruction to use user data, but it does not warn that potentially private images will be transmitted to the selected provider.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
model: () => env.GEN_MODEL_OPENAI || 'gpt-image-1',
describe(req) {
const ep = req.images?.length ? 'images/edits' : 'images/generations'
return `POST https://api.openai.com/v1/${ep} model=${openai.model()} size=${mapSize(req.size)} n=${req.batch}`
},
async run(req) {
const key = env.OPENAI_API_KEY
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
: await readFile(p)
fd.append('image[]', new Blob([buf], { type: mimeOf(p) }), path.basename(p))
}
r = await fetch('https://api.openai.com/v1/images/edits', {
method: 'POST', headers: { authorization: `Bearer ${key}` }, body: fd,
})
} else {
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
: await readFile(p)
fd.append('image[]', new Blob([buf], { type: mimeOf(p) }), path.basename(p))
}
r = await fetch('https://api.openai.com/v1/images/edits', {
method: 'POST', headers: { authorization: `Bearer ${key}` }, body: fd,
})
} else {
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
method: 'POST', headers: { authorization: `Bearer ${key}` }, body: fd,
})
} else {
r = await fetch('https://api.openai.com/v1/images/generations', {
method: 'POST',
headers: { authorization: `Bearer ${key}`, 'content-type': 'application/json' },
body: JSON.stringify({
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
method: 'POST', headers: { authorization: `Bearer ${key}` }, body: fd,
})
} else {
r = await fetch('https://api.openai.com/v1/images/generations', {
method: 'POST',
headers: { authorization: `Bearer ${key}`, 'content-type': 'application/json' },
body: JSON.stringify({
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
model: (req) =>
env.GEN_MODEL_REPLICATE ||
(req?.images?.length ? 'black-forest-labs/flux-kontext-pro' : 'black-forest-labs/flux-dev'),
describe(req) { return `POST https://api.replicate.com/v1/models/${replicate.model(req)}/predictions` },
async run(req) {
const input = { prompt: req.prompt, num_outputs: req.batch }
if (req.images?.length) input.input_image = await asDataUri(req.images[0])
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
const input = { prompt: req.prompt, num_outputs: req.batch }
if (req.images?.length) input.input_image = await asDataUri(req.images[0])
const j = await postJson(
`https://api.replicate.com/v1/models/${replicate.model(req)}/predictions`,
{ input },
{ authorization: `Bearer ${env.REPLICATE_API_TOKEN}`, prefer: 'wait' },
req.timeoutMs,
The manifest promises to turn a product image into a 3–5 second video, but automatic routing selects the first credentialed provider without checking video support. OpenAI exclusively calls image-editing/generation endpoints and returns image files (L131–L174), while Ark likewise calls images/generations and returns JPEGs (L290–L306); neither implementation uses req.video to generate video.
The manifest describes turning one product image into a 3–5-second listing video. The storyboard branch instead reads an arbitrary list of shots, generates a separate video for each shot using its own image and duration, and concatenates the results into a longer production. This is an explicit additional workflow, not merely an implementation detail of single-image animation.
Detected: suspicious.dangerous_exec, suspicious.env_credential_access