30 chapters · 145 min
Skills
Chapter 2 of 30
Create AI avatar, talking-head, and lip-sync videos on RunComfy via the runcomfy CLI.
6 minutes · 1,306 words · 30 sections
Put words in a face. This skill routes across RunComfy’s audio-driven avatar models — OmniHuman, Wan 2-7 with audio_url, HappyHorse, Seedance v2 — picking the right path for the user’s intent and shipping the documented prompts + the exact runcomfy run invoke for each.
runcomfy.com (opens in a new tab) · Lip-sync feature (opens in a new tab) · CLI docs (opens in a new tab)
# 1. Install (see runcomfy-cli skill for details)
npm i -g @runcomfy/cli # or: npx -y @runcomfy/cli --version
# 2. Sign in
runcomfy login # or in CI: export RUNCOMFY_TOKEN=<token>
# 3. Generate an avatar video
runcomfy run <vendor>/<model>/<endpoint> \
--input '{"prompt": "...", "audio_url": "https://...", "image_url": "https://..."}'
CLI deep dive: runcomfy-cli (opens in a new tab) skill.
npx skills add agentspace-so/runcomfy-agent-skills --skill ai-avatar-video -gListed newest first. The agent classifies user intent — pre-recorded audio file or just a script? Photoreal portrait or stylized character? Single shot or cinematic composition? — and picks one route below.
OmniHuman — bytedance/omnihuman/api (default)
ByteDance audio-driven full-body avatar. Feed one portrait + one audio file, get back a video where the subject speaks / sings / gestures naturally. Listed on RunComfy’s
/feature/lip-syncas the curated default. Pick for: UGC voiceover, virtual presenter, dubbed product demo, multi-language clips from same portrait. Avoid for: no audio file available (need to generate speech from a script) — use HappyHorse 1.0.
HappyHorse 1.0 — happyhorse/happyhorse-1-0/text-to-video (t2v) · happyhorse/happyhorse-1-0/image-to-video (i2v)
Arena #1 t2v / i2v with in-pass audio generated from prompt. No external audio file required — quote the spoken line inside the prompt. Pick for: written script with no audio file, “write a script → get a video”, concept clips, i2v talking-head from an existing portrait. Avoid for: precise lip-sync to a specific MP3 — audio is regenerated each call, not locked.
Seedance v2 Pro — bytedance/seedance-v2/pro
ByteDance multi-modal flagship — up to 9 reference images, 3 reference videos, 3 reference audio tracks composed in one pass with cinematic motion / lens / lighting control. Pick for: cinematic monologue with reference subject + reference audio + reference scene; ad creative. Avoid for: simple “portrait + audio” jobs — overpowered, slower. Use OmniHuman.
Wan 2-7 with audio_url — wan-ai/wan-2-7/text-to-video
Open-weights with
audio_urlfield — prompt describes the scene, audio file drives the mouth. Pick for: full scene control (not just a portrait), specific voiceover MP3, open-weights pipeline. Avoid for: simplest portrait-talks job — use OmniHuman.
Wan 2-2 Animate — community/wan-2-2-animate/api
Community-published variant on the Wan 2-2 base. Audio-driven full-body animation of stylized characters (illustration, anime, mascot). Pick for: stylized / illustrated character + audio (not a photoreal portrait). Avoid for: photoreal subjects — use OmniHuman or Wan 2-7.
Model: bytedance/omnihuman/api
Catalog: omnihuman (opens in a new tab) · /feature/lip-sync (opens in a new tab)
ByteDance OmniHuman is the strongest single-shot path: feed it one portrait image + one audio file, get back a video where the subject speaks / sings / gestures naturally to the audio. No prompt required beyond the inputs.
runcomfy run bytedance/omnihuman/api \
--input '{
"image_url": "https://your-cdn.example/presenter.jpg",
"audio_url": "https://your-cdn.example/voiceover.mp3"
}' \
--output-dir ./outaudio_url — open-weights lip-syncModel: wan-ai/wan-2-7/text-to-video
Catalog: wan-2-7 (opens in a new tab)
When you want full control over the scene (not just a portrait) and have a specific audio track. Wan 2-7 accepts an audio_url field — the model generates the scene from prompt and locks the subject’s mouth to the audio.
runcomfy run wan-ai/wan-2-7/text-to-video \
--input '{
"prompt": "Studio portrait of a woman in her 30s, confident expression, soft window light, neutral gray background.",
"audio_url": "https://your-cdn.example/voiceover.mp3",
"duration": 8
}' \
--output-dir ./outModel: community/wan-2-2-animate/api
Catalog: wan-2-2-animate (opens in a new tab) · /feature/character-swap (opens in a new tab)
Pick this when the subject is a stylized character (illustration, anime, mascot) rather than a photoreal portrait, and you want full-body motion synchronized to audio. Community-published variant on the Wan 2-2 base.
runcomfy run community/wan-2-2-animate/api \
--input '{
"image_url": "https://your-cdn.example/character.png",
"audio_url": "https://your-cdn.example/voiceover.mp3"
}' \
--output-dir ./outSchema details on the model page (opens in a new tab).
Model: happyhorse/happyhorse-1-0/text-to-video (t2v) or happyhorse/happyhorse-1-0/image-to-video (i2v)
Catalog: happyhorse-1-0 (opens in a new tab)
Pick HappyHorse when the user doesn’t have an audio file — they want a talking-head video from a written script and HappyHorse generates speech in-pass. The mouth sync is derived from the generated audio, not from an input file.
t2v with spoken script:
runcomfy run happyhorse/happyhorse-1-0/text-to-video \
--input '{
"prompt": "A woman in her 30s, confident expression, looks at the camera and says clearly: \"Welcome to our product demo. Today we are going to show you three things.\" Soft daylight, neutral background.",
"duration": 6,
"aspect_ratio": "9:16",
"resolution": "1080p"
}' \
--output-dir ./outi2v from an existing portrait:
runcomfy run happyhorse/happyhorse-1-0/image-to-video \
--input '{
"image_url": "https://your-cdn.example/portrait.jpg",
"prompt": "She looks at the camera and says clearly: \"Hi, I am Aria.\" Audio: friendly tone, neutral accent.",
"duration": 5
}' \
--output-dir ./outsays clearly: "…". Without the literal quote the model paraphrases or skips speech."Audio: friendly tone, neutral accent." — outside the spoken line.Model: bytedance/seedance-v2/pro
Catalog: seedance-v2 Pro (opens in a new tab)
Pick Seedance v2 Pro when the avatar work is part of a cinematic shot — reference your subject from an image, your audio from a reference track, and have Seedance compose them with full motion + lens control.
runcomfy run bytedance/seedance-v2/pro \
--input '{
"prompt": "Anamorphic close-up — the subject delivers a confident monologue to camera, golden hour light through window, shallow DoF.",
"reference_images": ["https://your-cdn.example/subject.jpg"],
"reference_audio": ["https://your-cdn.example/voiceover.mp3"],
"duration": 10,
"aspect_ratio": "21:9"
}' \
--output-dir ./outUp to 9 reference images, 3 reference videos, 3 reference audio tracks per call — match each role explicitly in the prompt.
ai-image-generation (opens in a new tab) → generate the portrait → upload resultaudio_url — most flexible scene + locked lip motion/models/feature/lip-sync (opens in a new tab) — RunComfy’s curated lip-sync capability tag/models/feature/character-swap (opens in a new tab) — character animation / swaprecently-added collection (opens in a new tab) — fresh additions, including new avatar models| 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 (opens in a new tab).
The skill classifies the user request — do they have a pre-recorded audio file, or only a script? Photoreal portrait or stylized character? Single shot or cinematic composition? — and picks one of the five routes above. It then invokes runcomfy run <model_id> with the matching JSON body. The CLI POSTs to the Model API, polls request status, fetches the result, and downloads any .runcomfy.net / .runcomfy.com URLs into --output-dir.
npm i -g @runcomfy/cli or npx -y @runcomfy/cli. Agents must not pipe an arbitrary remote install script into a shell on the user’s behalf.runcomfy login writes the API token to ~/.config/runcomfy/token.json with mode 0600. Set RUNCOMFY_TOKEN env var to bypass the file in CI / containers.--input. The CLI does not shell-expand prompt content. No shell-injection surface.model-api.runcomfy.net and *.runcomfy.net / *.runcomfy.com. No telemetry.allowed-tools: Bash(runcomfy *). The skill never instructs the agent to run anything other than runcomfy <subcommand>.runcomfy-cli (opens in a new tab) — the underlying CLIai-video-generation (opens in a new tab) — general t2v / i2v / extendlipsync (opens in a new tab) — narrow lip-sync technique routerface-swap (opens in a new tab) — identity-swap on existing videoimage-to-video — animate a still without an avatar-specific pathInstall this repository
npx skills add runcomfy-com/skillsSkills install per repository, not per chapter — the CLI has no documented per-skill form, so we do not print one.
Create AI avatar, talking-head, and lip-sync videos on RunComfy via the `runcomfy` CLI. Routes across ByteDance OmniHuman (audio-driven full-body avatar), Wan-AI Wan 2-7 (audio-driven mouth sync via `audio_url` on a portrait), HappyHorse 1.0 (Arena #1 t2v / i2v with in-pass audio), and Seedance v2 Pro (multi-modal cinematic with reference audio + reference subject). Picks the right model for the user's actual intent — UGC voiceover, virtual presenter, dubbed product demo, lip-synced character, dialog scene — and ships each model's documented prompting patterns plus the minimal `runcomfy run` invoke. Triggers on "talking head", "lip sync", "avatar video", "make X speak", "audio to video", "audio driven avatar", "virtual presenter", "AI spokesperson", "dubbed video", "UGC avatar", "HeyGen alternative", "Synthesia alternative", "digital human", "make this portrait talk", "video from voiceover", or any explicit ask to put words in a face.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
Bash(runcomfy*)ai-avatar-video/SKILL.mdmain, last pushed 18 May 2026.SKILL.md, not by matching a directory convention. One layout observed: */SKILL.md.h1 and no skipped levels:/runcomfy-com/skills.md, and each chapter at its own .md URL.ai-image-generation (opens in a new tab) — generate the portrait you’ll then animate