image-to-video

Animate any still image on RunComfy — this skill is a smart router that matches the user's intent to the right i2v model in the RunComfy catalog. Picks HappyHorse 1.0 I2V (Arena #1, native audio, identity preservation) for general animations, Wan 2.7 with `audio_url` for custom-voiceover lip-sync, o

By prime-skills · 416,942 installs

npx skills add prime-skills/runcomfy-agent-skills --skill image-to-video

Source repository · Upstream listing

Image to Video — Pro Pack on RunComfy [runcomfy.com](https://www.runcomfy.com/?utm source=skills.sh&utm medium=skill&utm campaign=image to video) · [HappyHorse I2V](https://www.runcomfy.com/models/happyhorse/happyhorse 1 0/image to video?utm source=skills.sh&utm medium=skill&utm campaign=image to video) · [Wan 2.7](https://www.runcomfy.com/models/wan ai/wan 2 7/text to video?utm source=skills.sh&utm medium=skill&utm campaign=image to video) · [Seedance 2.0 Pro](https://www.runcomfy.com/models/bytedance/seedance v2/pro?utm source=skills.sh&utm medium=skill&utm campaign=image to video) · [GitHub](https://github.com/agentspace so/runcomfy skills/tree/main/image to video) 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. Pick the right model for the user's intent User intent Model Why Animate a portrait — keep identity stable HappyHorse 1.0 I2V 1 on Artificial Analysis Arena (Elo 1392); strong facial fidelity Product reveal / 360 / macro motion HappyHorse 1.0 I2V Geometry preservation + smooth camera moves Native synchronized ambient audio in one pass HappyHorse 1.0 I2V In pass audio synthesis Animate and lip sync to a custom voiceover track Wan 2.7 + audio url Accepts 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 url Same shot, swap audio url per language Multi modal — image + reference video + reference audio together Seedance 2.0 Pro Up to 9 image refs, 3 video refs (2–15s each), 3 audio refs Brand consistent narrative with character ref + scene ref + voice ref Seedance 2.0 Pro Image holds identity, video holds scene, audio holds voice Default if unspecified HappyHorse 1.0 I2V Best all round quality + native audio The agent reads this table, classifies the user's intent, and picks the matching subsection below. Prerequisites 1. RunComfy CLI — npm i g @runcomfy/cli 2. RunComfy account — runcomfy 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 Field Type Required Default Notes image url string yes — JPEG/JPG/PNG/WEBP. Min 300px. Aspect 1:2.5–2.5:1. ≤10MB. prompt string yes — ≤5000 non CJK or 2500 CJK chars. Motion / camera / lighting description. resolution enum no 1080P 720P or 1080P . duration int no 5 3–15 seconds. seed int no 0 Reuse for variant comparisons. watermark bool no true Provider watermark toggle. Output aspect = input aspect. No independent reframing. Invoke 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) Field Type Required Default Notes prompt string yes — Up to ~5000 chars. Describe the talking head shot: framing, lighting, motion. audio url string yes (for lip sync) — WAV/MP3, 3–30s, ≤15MB. Drives lip sync. aspect ratio enum no 16:9 16:9 , 9:16 , 1:1 , 4:3 , 3:4 . resolution enum no 1080p 720p or 1080p . duration enum no 5 2–15 (whole seconds). Match your audio length. negative prompt string no — Concrete issues to avoid (e.g. "no subtitles, no flicker"). seed int no — Reproducibility. Invoke 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) Field Type Required Default Notes prompt string yes — CN ≤500 chars OR EN ≤1000 words. image url array yes (for i2v) [] 0–9 images. First is the primary subject. video url array no [] 0–3 reference clips (MP4/MOV), 2–15s each. audio url array no [] 0–3 reference audio (WAV/MP3), 2–15s, < 15MB each. aspect ratio enum no adaptive adaptive , 16:9 , 9:16 , 4:3 , 3:4 , 1:1 , 21:9 . duration int no 5 4–15 (whole seconds). resolution enum no 720p 480p or 720p . generate audio bool no true In pass synchronized speech / SFX / music. seed int no — Reproducibility. Invoke 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 code meaning 0 success 64 bad CLI args 65 bad input JSON / schema mismatch 69 upstream 5xx 75 retryable: timeout / 429 77 not signed in or token rejected Full reference: [docs.runcomfy.com/cli/troubleshooting](https://docs.runcomfy.com/cli/troubleshooting?utm source=skills.sh&utm medium=skill&utm campaign=image to video). 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.