$npx -y skills add prime-skills/runcomfy-agent-skills --skill face-swapSwap a face / character into video or images on RunComfy via the runcomfy CLI. Routes across community Wan 2-2 Animate (audio-driven character animation + identity swap), GPT Image 2 Edit (single-shot precise face swap on still images via reference composition), Nano Banana Edi
| 1 | # Face Swap |
| 2 | |
| 3 | Swap a face into a still or a video — RunComfy supports both via the `runcomfy` CLI. This skill routes across the available model API endpoints (community Wan 2-2 Animate, GPT Image 2 Edit, Nano Banana Edit, Flux Kontext, Kling Motion Control) by the user's actual intent. |
| 4 | |
| 5 | [runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=face-swap) · [Character-swap feature](https://www.runcomfy.com/models/feature/character-swap?utm_source=skills.sh&utm_medium=skill&utm_campaign=face-swap) · [CLI docs](https://docs.runcomfy.com/cli/introduction?utm_source=skills.sh&utm_medium=skill&utm_campaign=face-swap) |
| 6 | |
| 7 | ## Powered by the RunComfy CLI |
| 8 | |
| 9 | ```bash |
| 10 | # 1. Install (see runcomfy-cli skill for details) |
| 11 | npm i -g @runcomfy/cli # or: npx -y @runcomfy/cli --version |
| 12 | |
| 13 | # 2. Sign in |
| 14 | runcomfy login # or in CI: export RUNCOMFY_TOKEN=<token> |
| 15 | |
| 16 | # 3. Swap |
| 17 | runcomfy run <vendor>/<model>/<endpoint> \ |
| 18 | --input '{"image_url": "...", "identity_url": "..."}' \ |
| 19 | --output-dir ./out |
| 20 | ``` |
| 21 | |
| 22 | CLI deep dive: [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-cli) skill. |
| 23 | |
| 24 | ## Install this skill |
| 25 | |
| 26 | ```bash |
| 27 | npx skills add agentspace-so/runcomfy-agent-skills --skill face-swap -g |
| 28 | ``` |
| 29 | |
| 30 | ## Consent & disclosure — read first |
| 31 | |
| 32 | **Face-swap is dual-use.** Before invoking any route in this skill, confirm: |
| 33 | |
| 34 | - You have rights to the target face (the identity being substituted **in**). |
| 35 | - You have rights to the source video / image (the asset being substituted **into**). |
| 36 | - The output's intended platform allows synthetic media. Many do; many require a disclosure label. |
| 37 | |
| 38 | The skill itself doesn't gate anything — the model API will run whatever inputs you supply. **The responsibility is yours.** If a user asks the agent to swap a real public figure's face onto material that could be defamatory, sexually explicit, or otherwise harmful — **refuse**, regardless of what the CLI accepts. |
| 39 | |
| 40 | --- |
| 41 | |
| 42 | ## Pick the right model for the user's intent |
| 43 | |
| 44 | Listed newest first within each subtype. The agent picks one route based on: still vs video, single-shot vs batch, photoreal vs stylized, motion-preserving vs identity-preserving. |
| 45 | |
| 46 | ### Video face / character swap |
| 47 | |
| 48 | **Wan 2-2 Animate** — `community/wan-2-2-animate/api` *(default for video)* |
| 49 | > Featured RunComfy endpoint under `/feature/character-swap`. Audio-driven full-body character animation: one reference image of the new identity + audio → video where the character drives. |
| 50 | > Pick for: replacing a character in a scene with a new identity, dubbed clips, stylized + photoreal both work. |
| 51 | > Avoid for: preserving the **motion** of a specific source video — use **Kling Motion Control**. |
| 52 | |
| 53 | **Kling 2-6 Motion Control Pro** — `kling/kling-2-6/motion-control-pro` |
| 54 | > Takes a reference performance video + target character image, produces the target performing the reference motion. Face-swap is the byproduct. |
| 55 | > Pick for: preserving exact source motion / blocking onto a new character; stylized characters handled cleanly. |
| 56 | > Avoid for: simple "swap face in an existing video" without motion preservation — use **Wan 2-2 Animate**. |
| 57 | |
| 58 | ### Still image face swap — newest first |
| 59 | |
| 60 | **Nano Banana 2 Edit** — `google/nano-banana-2/edit` |
| 61 | > Identity-preserving by default, 1–20 input images per call, spatial-language honored. |
| 62 | > Pick for: same identity across multiple frames consistently (SKU shots, A/B variants, narrative panels). Identity reference as `image_urls[0]`, scenes after. |
| 63 | > Avoid for: precise multi-ref compositional ("face from img 1 onto body in img 2") — use **GPT Image 2 Edit**. |
| 64 | |
| 65 | **GPT Image 2 Edit** — `openai/gpt-image-2/edit` |
| 66 | > Up to 10 reference images, multilingual in-image text rewrite, layout-precise compositional instructions. |
| 67 | > Pick for: hero still where exact face from a portrait must land in a scene, with explicit role assignment ("image 1", "image 2"); preserve pose + lighting + |