关于 image-to-video
这是一项面向 Agent 的技能,可按需求将图像转视频任务路由到 RunComfy 模型,涵盖人像或产品动画、自定义音轨口型同步和多参考素材合成。它通过 RunComfy CLI 提交任务并下载结果。
主要功能
- 01按意图选择模型
- 02HappyHorse 图像动画
- 03Wan 2.7 自定义音轨口型同步
- 04Seedance 多参考素材生成
- 05调用 RunComfy CLI
适用场景
- 01在保持身份特征的同时制作人像动画
- 02让视频口型匹配指定配音
- 03结合主体、场景和音频参考素材
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ genmedia-labs/ skills --skill image-to-video安装后在 Claude Code 中输入/image-to-video确认已加载。
详细介绍
图像转视频 — RunComfy 专业版
runcomfy.com · HappyHorse I2V · Wan 2.7 · Seedance 2.0 Pro · GitHub
意图路由的图像转视频。 这项技能不会将你限定在某个模型上,而是根据用户的实际需求,从 RunComfy 目录中选择合适的 i2v 模型:人像动画、自定义配音口型同步,或多模态合成。
npx skills add agentspace-so/runcomfy-skills --skill image-to-video -g
根据用户意图选择合适的模型
| 用户意图 | 模型 | 原因 |
|---|---|---|
| 为人像制作动画 — 保持身份稳定 | HappyHorse 1.0 I2V | Artificial Analysis Arena 排名第 1(Elo 1392);面部保真度高 |
| 产品展示 / 360 度旋转 / 微距运动 | HappyHorse 1.0 I2V | 保持几何形状 + 平滑的镜头运动 |
| 一次生成原生同步环境音频 | HappyHorse 1.0 I2V | 在生成过程中合成音频 |
| 制作动画并与自定义配音音轨进行口型同步 | Wan 2.7 + audio_url | 接受你自己的 MP3/WAV(3–30 秒,≤15MB),并据此驱动口型同步 |
| 多语言配音版本(同一图像,每次调用使用不同音频) | Wan 2.7 + audio_url | 使用同一镜头,每种语言替换对应的 audio_url |
| 多模态 — 同时使用图像 + 参考视频 + 参考音频 | Seedance 2.0 Pro | 最多支持 9 张参考图、3 段参考视频(每段 2–15 秒)、3 段参考音频 |
| 保持品牌一致性的叙事,包含角色参考 + 场景参考 + 声音参考 | Seedance 2.0 Pro | 图像保持身份,视频保持场景,音频保持声音 |
| 未指定时的默认选项 | HappyHorse 1.0 I2V | 综合品质最佳 + 原生音频 |
Agent 会读取此表,对用户意图进行分类,并选择下方对应的小节。
先决条件
- RunComfy CLI —
npm i -g @runcomfy/cli - RunComfy 账户 —
runcomfy login会打开浏览器设备代码验证流程。 - CI / 容器 — 设置
RUNCOMFY_TOKEN=<token>。 - 源图像 URL — JPEG/PNG/WebP,最小 300px,≤10MB;宽高比为 1:2.5 到 2.5:1(HappyHorse)——其他模型的规格也类似。
路由 1:HappyHorse 1.0 I2V — 人像 / 产品 / 通用动画的默认选项
模型:happyhorse/happyhorse-1-0/image-to-video · 竞技场排名:第 1(Elo 1392)
参数规范
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
image_url | string | 是 | — | JPEG/JPG/PNG/WEBP。最小 300px。宽高比 1:2.5–2.5:1。≤10MB。 |
prompt | string | 是 | — | ≤5000 个非 CJK 字符或 2500 个 CJK 字符。描述运动 / 镜头 / 光线。 |
resolution | enum | 否 | 1080P | 720P 或 1080P。 |
duration | int | 否 | 5 | 3–15 秒。 |
seed | int | 否 | 0 | 可复用以比较不同版本。 |
watermark | bool | 否 | true | 提供商水印开关。 |
输出宽高比 = 输入宽高比。不支持独立重新取景。
调用
runcomfy run happyhorse/happyhorse-1-0/image-to-video \
--input '{
"image_url": "https://.../portrait.jpg",
"prompt": "Gentle camera drift around the subject'\''s face, subtle breathing motion, identity-stable features, soft natural light."
}' \
--output-dir <absolute/path>
提示词技巧
- 以运动动词开头: “漂移”、“推近”、“环绕”、“上仰”、“显现”、“眨眼”、“呼吸”。优先说明正在运动的对象。
- 不要重复描述图像 — 模型能看到图像。将提示词重点放在发生变化的内容上。
- 明确说明保留要求:“身份特征保持稳定”、“包装保持不变”、“背景几何结构保持稳定”。
- 描述光线变化:“轮廓光逐渐增强”、“镜头升高时阴影逐渐缩短”。
- 每段片段只安排一个节拍 — 只包含一个主要运动(环绕或推近或倾斜或角色动作)。
路线 2:Wan 2.7 + audio_url — 用户有自定义配音时
模型:wan-ai/wan-2-7/text-to-video(不是 /image-to-video——Wan 2.7 的 t2v 端点接受用于驱动口型同步的 audio_url)
关于使用 Wan 2.7 进行 i2v 的说明:此处没有专用端点用于 Wan 2.7 的主要 i2v 动画。对于纯 i2v(仅由运动提示词驱动的图像动画),优先选择 HappyHorse i2v。仅当用户有自定义音轨,并希望将其与生成的谈话人头部片段进行口型同步时,才使用 Wan 2.7。
Schema(带音频的 Wan 2.7 t2v)
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
prompt | string | 是 | — | 最多约 5000 个字符。描述谈话人头部镜头:构图、光线、运动。 |
audio_url | string | 是(用于口型同步) | — | WAV/MP3,3–30 秒,≤15MB。用于驱动口型同步。 |
aspect_ratio | enum | 否 | 16:9 | 16:9、9:16、1:1、4:3、3:4。 |
resolution | enum | 否 | 1080p | 720p 或 1080p。 |
duration | enum | 否 | 5 | 2–15(整秒)。与音频时长匹配。 |
negative_prompt | string | 否 | — | 具体说明要避免的问题(例如“无字幕、无闪烁”)。 |
seed | int | 否 | — | 用于复现结果。 |
调用
runcomfy run wan-ai/wan-2-7/text-to-video \
--input '{
"prompt": "Medium close-up of a confident spokesperson in a softly-lit recording booth, leaning slightly toward the camera, locked tripod, shallow DOF, warm key light from camera-left.",
"audio_url": "https://.../voiceover-en.mp3",
"duration": 12,
"aspect_ratio": "9:16"
}' \
--output-dir <absolute/path>
提示词技巧
- 描述谈话人头部镜头——构图、光线、镜头质感。音频驱动口型同步;提示词则构建与之匹配的视觉画面。
- 让
duration与音频时长匹配——如果片段太长,音频结束后画面会静音。 - 用
negative_prompt指定要避免的问题:"no subtitles, no flicker, no distorted hands"。 - 制作多语言配音——提示词保持不变,每次调用时替换
audio_url。锁定 seed,确保不同语言版本的画面一致。
路线 3:Seedance 2.0 Pro — 多模态动画(图像 + 参考视频 + 参考音频)
模型:bytedance/seedance-v2/pro
当用户希望生成一个片段,同时结合主体图像、参考视频中的场景和参考音频中的语气时使用。
Schema(Seedance 2.0 Pro 中与 i2v 相关的字段)
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
prompt | string | 是 | — | 中文 ≤500 字,或英文 ≤1000 词。 |
image_url | array | 是(用于 i2v) | [] | 0–9 张图像。第一张是主要主体。 |
video_url | array | 否 | [] | 0–3 个参考片段(MP4/MOV),每个 2–15 秒。 |
audio_url | array | 否 | [] | 0–3 段参考音频(WAV/MP3),每段 2–15 秒、< 15MB。 |
aspect_ratio | enum | 否 | adaptive | adaptive、16:9、9:16、4:3、3:4、1:1、21:9。 |
duration | int | 否 | 5 | 4–15(整秒)。 |
resolution | enum | 否 | 720p | 480p 或 720p。 |
generate_audio | bool | 否 | true | 在生成过程中同步生成语音、音效或音乐。 |
seed | int | 否 | — | 用于复现结果。 |
调用
runcomfy run bytedance/seedance-v2/pro \
--input '{
"prompt": "Subject from image 1 walks through the café in video 1, voice tone matches audio 1. Medium close-up, slow push-in, warm light, gentle ambience.",
"image_url": ["https://.../subject.jpg"],
"video_url": ["https://.../cafe-locked-shot.mp4"],
"audio_url": ["https://.../voice-tone.mp3"],
"duration": 8
}' \
--output-dir <absolute/path>
提示词技巧
- 区分图像与文本的作用——对于必须保持稳定的内容(面部、服装、品牌),使用
image_url;对于需要变化的内容(动作、情绪、光线),使用prompt。 - 在提示词中为参考素材编号:
"subject from image 1, lighting from video 1, voice from audio 1"。Seedance 会正确匹配这些提示信息。 - 参考媒体规格——视频和音频时长必须为 2–15 秒;音频 < 15MB。
- 不要混用风格差异极大的素材——如果图像 1 是水彩风格,而视频 1 是写实风格,输出效果会发生偏移。
限制
- 每条路线都受其模型限制约束。 HappyHorse:最长 15 秒,输出宽高比与输入一致。Wan 2.7:最长 15 秒,音频 3–30 秒/15MB。此模板中的 Seedance:最高 720p,最长 15 秒。
- 不支持混合多条路线。 此技能每次调用只选择一个模型。如果用户希望在同一片段中结合 HappyHorse 动画和 Wan 风格的口型同步,需要调用两次并拼接(不在此处讨论范围内)。
- 品牌特定的覆盖规则——如果用户指定了此处未列出的特定模型变体(例如 Wan 2.6、Seedance 1.5),请改用对应的品牌技能(
wan-2-7、seedance-v2),而不是强行通过此技能处理。
退出代码
| code | 含义 |
|---|---|
| 0 | 成功 |
| 64 | CLI 参数错误 |
| 65 | 输入 JSON 错误 / 架构不匹配 |
| 69 | 上游 5xx |
| 75 | 可重试:超时 / 429 |
| 77 | 未登录或令牌被拒绝 |
完整参考:docs.runcomfy.com/cli/troubleshooting。
工作原理
该技能会根据用户意图选择 HappyHorse 1.0 I2V / Wan 2.7 t2v+audio / Seedance 2.0 Pro 之一,并使用对应的 JSON 请求体调用 runcomfy run <model_id>。CLI 会向 Model API 发送 POST 请求、轮询请求状态、获取结果,并将任何 .runcomfy.net/.runcomfy.com URL 下载到 --output-dir。Ctrl-C 会在退出前取消远程请求。
安全与隐私
- 令牌存储:
runcomfy login会将 API 令牌写入~/.config/runcomfy/token.json,权限模式为 0600(仅所有者可读写)。在 CI / 容器中设置RUNCOMFY_TOKEN环境变量即可完全跳过该文件。 - 输入边界:用户提示词会作为 JSON 字符串通过
--input传递给 CLI。CLI 不会对提示词进行 shell 展开,而是直接通过 HTTPS 将 JSON 请求体发送到 Model API。提示词内容不会造成 shell 注入风险。 - 第三方内容:你提供的图像 / 蒙版 / 视频 URL 由 RunComfy 模型服务获取,而不是由你本机上的 CLI 获取。请将外部 URL 视为不可信;基于图像的提示词注入是任何图像编辑 / 视频编辑模型都已知的风险。
- 出站端点:仅使用
model-api.runcomfy.net(提交请求)和*.runcomfy.net/*.runcomfy.com(生成结果的下载白名单)。没有遥测,也没有回调。 - 生成文件大小上限:CLI 会中止任何大于 2 GiB 的单个下载,以防恶意或失控的模型输出占满磁盘。