image-to-video

作者: doany-ai

We need to translate the given text from English to Simplified Chinese. The text describes a skill called "image-to-video" but the instruction says to preserve the name only if it appears in the source text. The name "image-to-video" does appear in the source? Actually the source text starts with "Animate any still image on RunComfy — this skill is a smart router..." The name "image-to-video" is not explicitly in the source text; it's given as the directory item name. The instruction says "Do not include the name unless it appears in the source text." So we should not add "image-to-video" to the translation. We only translate the text inside <text>. Also preserve product names, protocol names, URLs, numbers, technical terms. So "RunComfy", "HappyHorse 1.0 I2V", "Arena #1", "Wan 2.7", "audio_url", "Seedance 2.0 Pro" should remain as is. Translate the rest naturally. The text ends with

npx skills add https://github.com/doany-ai/skills --skill image-to-video

Image-to-Video — Pro Pack on RunComfy

runcomfy.com · HappyHorse I2V · Wan 2.7 · Seedance 2.0 Pro · GitHub

Image-to-video, intent-routed. This skill doesn't lock you to one model — it picks the right i2v model in the RunComfy catalog based on what the user actually wants: portrait animation, custom-voiceover lip-sync, or multi-modal composition.

npx skills add agentspace-so/runcomfy-skills --skill image-to-video -g

Pick the right model for the user's intent

User intentModelWhy
Animate a portrait — keep identity stableHappyHorse 1.0 I2V#1 on Artificial Analysis Arena (Elo 1392); strong facial fidelity
Product reveal / 360 / macro motionHappyHorse 1.0 I2VGeometry preservation + smooth camera moves
Native synchronized ambient audio in one passHappyHorse 1.0 I2VIn-pass audio synthesis
Animate and lip-sync to a custom voiceover trackWan 2.7 + audio_urlAccepts your own MP3/WAV (3–30s, ≤15MB) and drives lip-sync to it
Multi-language dub variants (same image, different audio per call)Wan 2.7 + audio_urlSame shot, swap audio_url per language
Multi-modal — image + reference video + reference audio togetherSeedance 2.0 ProUp to 9 image refs, 3 video refs (2–15s each), 3 audio refs
Brand-consistent narrative with character ref + scene ref + voice refSeedance 2.0 ProImage holds identity, video holds scene, audio holds voice
Default if unspecifiedHappyHorse 1.0 I2VBest all-round quality + native audio

The agent reads this table, classifies the user's intent, and picks the matching subsection below.

Prerequisites

  1. RunComfy CLInpm i -g @runcomfy/cli
  2. RunComfy accountruncomfy login opens a browser device-code flow.
  3. CI / containers — set RUNCOMFY_TOKEN=<token>.
  4. A source image URL — JPEG/PNG/WebP, min 300px, ≤10MB; aspect 1:2.5 to 2.5:1 (HappyHorse) — other models have similar specs.

Route 1: HappyHorse 1.0 I2V — default for portrait / product / general animation

Model: happyhorse/happyhorse-1-0/image-to-video · Arena rank: #1 (Elo 1392)

Schema

FieldTypeRequiredDefaultNotes
image_urlstringyesJPEG/JPG/PNG/WEBP. Min 300px. Aspect 1:2.5–2.5:1. ≤10MB.
promptstringyes≤5000 non-CJK or 2500 CJK chars. Motion / camera / lighting description.
resolutionenumno1080P720P or 1080P.
durationintno53–15 seconds.
seedintno0Reuse for variant comparisons.
watermarkboolnotrueProvider watermark toggle.

Output aspect = input aspect. No independent reframing.

Invoke

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>

Prompting tips

  • Lead with motion verbs: "drift", "dolly in", "orbit", "tilt up", "reveal", "blink", "breathe". Front-load what's MOVING.
  • Don't restate the image — the model sees it. Focus tokens on what changes.
  • Preservation goals explicit: "identity-stable features", "packaging unchanged", "background geometry stable".
  • Lighting evolution: "rim light intensifying", "shadows shortening as camera rises".
  • One beat per clip — single primary motion (orbit OR dolly OR tilt OR character action).

Route 2: Wan 2.7 + audio_url — when the user has a custom voiceover

Model: wan-ai/wan-2-7/text-to-video (NOT /image-to-video — Wan 2.7's t2v endpoint accepts an audio_url that drives lip-sync)

Note on i2v with Wan 2.7: Wan 2.7's primary i2v animation isn't on a dedicated endpoint here. For pure i2v (image animated by motion prompt only), prefer HappyHorse i2v. Use Wan 2.7 specifically when the user has a custom audio track they want lip-synced to a generated talking-head clip.

Schema (Wan 2.7 t2v with audio)

FieldTypeRequiredDefaultNotes
promptstringyesUp to ~5000 chars. Describe the talking-head shot: framing, lighting, motion.
audio_urlstringyes (for lip-sync)WAV/MP3, 3–30s, ≤15MB. Drives lip-sync.
aspect_ratioenumno16:916:9, 9:16, 1:1, 4:3, 3:4.
resolutionenumno1080p720p or 1080p.
durationenumno52–15 (whole seconds). Match your audio length.
negative_promptstringnoConcrete issues to avoid (e.g. "no subtitles, no flicker").
seedintnoReproducibility.

Invoke

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>

Prompting tips

  • Describe the talking-head shot — framing, lighting, lens feel. The audio drives the lip-sync; the prompt builds the visual frame around it.
  • Match duration to audio length — clip will be silent past the audio if too long.
  • Use negative_prompt for issues: "no subtitles, no flicker, no distorted hands".
  • For multi-language dubs — same prompt, swap audio_url per call. Lock seed for visual consistency across languages.

Route 3: Seedance 2.0 Pro — multi-modal animation (image + ref video + ref audio)

Model: bytedance/seedance-v2/pro

Use when the user wants a single clip that combines: a subject image + scene from a reference video + voice tone from a reference audio.

Schema (Seedance 2.0 Pro, i2v-relevant fields)

FieldTypeRequiredDefaultNotes
promptstringyesCN ≤500 chars OR EN ≤1000 words.
image_urlarrayyes (for i2v)[]0–9 images. First is the primary subject.
video_urlarrayno[]0–3 reference clips (MP4/MOV), 2–15s each.
audio_urlarrayno[]0–3 reference audio (WAV/MP3), 2–15s, < 15MB each.
aspect_ratioenumnoadaptiveadaptive, 16:9, 9:16, 4:3, 3:4, 1:1, 21:9.
durationintno54–15 (whole seconds).
resolutionenumno720p480p or 720p.
generate_audioboolnotrueIn-pass synchronized speech / SFX / music.
seedintnoReproducibility.

Invoke

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>

Prompting tips

  • Image vs text division — use image_url for what must stay stable (face, costume, brand); use prompt for what should evolve (action, mood, lighting).
  • Number the refs in the prompt: "subject from image 1, lighting from video 1, voice from audio 1". Seedance routes cues correctly.
  • Reference media specs — videos / audio must be 2–15s; audio < 15MB.
  • Don't mix radically different aesthetics — if image 1 is a watercolor and video 1 is photoreal, output drifts.

Limitations

  • Each route inherits its model's limits. HappyHorse: 15s cap, output aspect = input aspect. Wan 2.7: 15s cap, audio 3–30s/15MB. Seedance: 720p ceiling on this template, 15s cap.
  • No multi-route blending. This skill picks one model per call. If the user wants HappyHorse animation + Wan-style lip-sync in the same clip, that's two calls + a stitch (out of scope here).
  • Brand-specific overrides — if the user named a specific model variant not listed (e.g. Wan 2.6, Seedance 1.5), route to the corresponding brand skill (wan-2-7, seedance-v2) instead of forcing it through here.

Exit codes

codemeaning
0success
64bad CLI args
65bad input JSON / schema mismatch
69upstream 5xx
75retryable: timeout / 429
77not signed in or token rejected

Full reference: docs.runcomfy.com/cli/troubleshooting.

How it works

The skill picks one of HappyHorse 1.0 I2V / Wan 2.7 t2v+audio / Seedance 2.0 Pro based on user intent and invokes runcomfy run <model_id> with the matching JSON body. The CLI POSTs to the Model API, polls the request, fetches the result, and downloads any .runcomfy.net/.runcomfy.com URL into --output-dir. Ctrl-C cancels the remote request before exit.

Security & Privacy

  • Token storage: runcomfy login writes the API token to ~/.config/runcomfy/token.json with mode 0600 (owner-only read/write). Set RUNCOMFY_TOKEN env var to bypass the file entirely in CI / containers.
  • Input boundary: the user prompt is passed as a JSON string to the CLI via --input. The CLI does NOT shell-expand the prompt; it transmits the JSON body directly to the Model API over HTTPS. No shell injection surface from prompt content.
  • Third-party content: image / mask / video URLs you pass are fetched by the RunComfy model server, not by the CLI on your machine. Treat external URLs as untrusted; image-based prompt injection is a known risk for any image-edit / video-edit model.
  • Outbound endpoints: only model-api.runcomfy.net (request submission) and *.runcomfy.net / *.runcomfy.com (download whitelist for generated outputs). No telemetry, no callbacks.
  • Generated-file size cap: the CLI aborts any single download > 2 GiB to prevent disk-fill from a malicious or runaway model output.

来自 doany-ai 的更多技能

image-edit
doany-ai
在RunComfy上编辑图像——该技能是一个智能路由,能将用户意图匹配到RunComfy目录中的正确编辑模型。可选择Nano Banana Edit(最多批量处理20张,默认保留身份特征)、OpenAI GPT Image 2 Edit(多语言图像内文本重写、多参考合成、布局精准)、Flux Kontext Pro(单参考高保真局部编辑)或Z-Image Turbo Inpaint(遮罩驱动的精准区域编辑)。该技能整合了每个模型的文档化提示模式,从而...
creativeimagemedia
seedance-v2
doany-ai
我们被要求将一段英文文本翻译成简体中文。文本描述了一个名为"seedance-v2"的agent skill。需要保留名称"seedance-v2"(但注意指令说"不要包含名称,除非它在源文本中出现"——源文本中出现了"seedance-v2"在最后一行?实际上最后一行是"seedance...",但前面有"seedance-v2"在路径中。指令说"Preserve product names, protocol names, URLs, numbers, and technical terms." 所以"seedance-v2"应该保留。但注意指令说"Translate only the text inside <text>. Do not include the name unless it appears in the source text." 所以如果名称出现在源文本中,就保留。这里"seedance-v2"出现在"runcomfy run bytedance/seedance-v2/pro"中,所以保留。另外"Seedance 2.0 Pro"也是产品名,保留。"RunComfy"保留。"HappyHorse 1.0 / Wan 2.7 /
videocreativemedia
kling-3-0
doany-ai
RunComfy上的Kling 3.0视频生成。Kling 3.0(也称Kling V3.0)是快手科技第三代多镜头视频模型,具备原生同步音频及跨镜头一致的角色身份。该技能覆盖全部六个Kling 3.0端点,涵盖三种渲染级别(标准、专业、4K)和两种模式(文生视频、图生视频)。通过本地RunComfy CLI调用runcomfy run kling/kling-3.0/ /。触发词为"kling"、"kling 3.0"、"kling v3"、"kling pro"等。
videocreativemedia
face-swap
doany-ai
我们要求翻译一段文本,目标语言是简体中文。文本内容是关于一个名为"face-swap"的agent skill的描述。需要保留产品名称、协议名称、URL、数字和技术术语。不要添加任何额外内容。文本中提到了多个工具/模型名称:RunComfy, runcomfy CLI, Wan 2-2 Animate, GPT Image 2 Edit, Nano Banana Edit, Flux Kontext, Kling 2-6 Motion Control Pro。这些都需要保留原样。另外注意"face-swap"是名称,但文本中没有出现,所以不翻译。翻译时只翻译<text>内的内容,不要包含"description"等标签。 文本内容:描述通过runcomfy CLI在RunComfy上实现换脸/换角色到视频或图像中。跨越多个社区模型/工具。最后一句"Picks the right model for..."不完整,但按原样翻译。 翻译时注意技术术语的准确性,比如"audio-driven character animation"译为"音频驱动的角色动画","identity swap"译为
creativevideoimage
video-outpainting
doany-ai
我们要求翻译一段文本,目标语言是简体中文。需要保留产品名称、协议名称、URL、数字和技术术语。不要添加声明、解释、Markdown、项目符号、链接、标签、前缀或额外评论。只翻译<text>内的内容,不包括名称除非它在源文本中出现。不要添加"description"、"server name"、"skill name"等标签。 源文本是英文,描述了一个agent skill:video-outpainting。翻译时注意保持技术术语如"RunComfy"、"CLI"、"Wan 2-7 edit-video"、"ComfyUI"等不翻译。注意"video-outpainting"是名称,但源文本中出现了"Video outpainting"作为开头,所以需要翻译"Video outpainting"为"视频外扩"或类似?但要求保留名称,但名称是"video-outpainting",而源文本中写的是"Video outpainting",大小写不同。根据指令"Name to preserve: video-outpainting",但源文本中出现的
videocreativemedia
ai-avatar-video
doany-ai
We need to translate the given English text into Simplified Chinese. The instruction says to preserve product names, protocol names, URLs, numbers, and technical terms. The name "ai-avatar-video" is not in the text, so we don't include it. We must not add any labels or extra commentary. Just translate the text inside <text> tags. The text describes creating AI avatar videos using runcomfy CLI, mentioning various models: ByteDance OmniHuman, Wan-AI Wan 2-7, HappyHorse 1.0, Seedance v2 Pro. Also mentions user intents like UGC voiceover, virtual presenter, etc. We need to ensure technical terms like "t2v", "i2v", "in-pass audio", "multi-modal cinematic" are preserved or appropriately translated? The instruction says preserve technical terms, so we can keep them as is or translate if common? But "t2v" and "i2v" are likely abbreviations for text-to-video and image-to-video, which are common. However,
videocreativemedia
flux-kontext
doany-ai
在RunComfy上使用Flux 1 Kontext Pro(Black Forest Labs的精准局部图像编辑模型)编辑图像——该技能内置了模型文档中的提示模式,因此相比直接使用同一模型进行简单提示,能获得更清晰的输出。文档说明了Flux Kontext的优势(单参考精准局部编辑、强提示控制、一致的高保真输出)、模式(单图像+提示),以及何时改用Nano Banana Edit / GPT Image 2 edit / Flux 2 Klein。调用...
creativeimagedocument
relight
doany-ai
我们要求翻译一段文本,目标语言是简体中文。需要保留产品名、协议名、URL、数字和技术术语。不要添加声明、解释、Markdown、项目符号、链接、标签、前缀或额外评论。只翻译<text>内的内容。注意不要包含名称"relight"除非它在源文本中出现。源文本中第一句就有"Relight",所以需要翻译。但注意指令说"不要包含名称除非它出现在源文本中",所以"Relight"作为动词应该翻译,但作为产品名或技能名?实际上"relight"在文本中作为动词出现,但也是技能名称。指令说"Name to preserve: relight",但翻译时只翻译文本,不额外添加名称。所以"Relight"作为动词应该翻译为"重新打光"或类似。但注意保留技术术语如"LoRA"、"CLI"等。另外"RunComfy"、"Qwen Edit 2509"、"Nano Banana 2 Edit"等是产品名,保留。翻译要
creativeimagemedia