Kling 2.6 · Motion Control
Put your character's face on someone else's dance
- image_url
- video_url
- video
- task id
This node takes a driving clip and copies its moves, expressions and gestures onto a photo of your own character. One picture plus one video in, one video out. It's the "do this dance but as my OC" node - motion transfer, motion control, character animation, whatever your corner of the internet calls it - and it's the reason Kling's name comes up whenever another model adds the same feature and gets praised for being "like Kling."
Two inputs and no text prompt requirement. Everything else is resolution.
- image_url - the character. One clear, full-body or half-body photo of the person,
IMAGEsocket, JPEG or PNG. This is the picture whose face, outfit and proportions get carried through the whole clip, so it's worth generating carefully: front-on, evenly lit, whole body in frame if the driving clip involves legs and arms, no heavy occlusion. - video_url - the driving clip, a
VIDEOsocket: 3 to 30 seconds of the moves to copy. The result is exactly as long as this clip. That's the single most important sentence on this page, because it's also how the bill is calculated. - prompt - optional notes on the result: the setting, the look, anything the driving clip doesn't show. Leave it empty for a straight motion transfer; use it when you want the dancing to happen in fog, at night, or with the character in a different wardrobe.
- resolution -
720p($0.069/s) or1080p($0.112/s). The node shows the updated rate as you flip it.
Outputs: video (VIDEO - Save Video, or a video node; not an image tensor), and task id (STRING, the run's handle in your SpicyAPI console).
No audio is produced. A driving clip's own sound is not carried through.
The arithmetic, since it's what decides whether you use this
Because the output length follows the driving clip and billing is per second, a ten-second driving clip at 720p is about 69 cents and a thirty-second one at 1080p is about $3.36. Motion transfer is one of those features that's delightful the first time and expensive the second - the temptation is to feed a full 30-second song performance in and then re-run it five times to fix a detail. Trim the driving clip to the shot you need first, then render. Cutting a 30-second clip to 6 seconds is a 5x saving on every iteration, and the model gets better with a shorter source because there's less to reinterpret.
Long driving clips also tend to lose the face partway through; the identity holds better over a short, energetic burst than over a whole routine.
What you're actually trading for
A driving clip is a specificity you can't write in a prompt. You can describe "a person doing a slow spin with their arms out", but the result won't have the timing, the weight shift and the shoulder movement of the reference. That specificity is what people pay for, and it's why this node is genuinely hard to replace with text-to-video at any quality level. It's the same reason the open-weight video releases that added motion control got such a warm reception - the capability is rare and obviously useful, and Kling's rendition of it is the one the field measures against.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart, then Settings > SpicyAPI and paste a key from spicyapi.ai/console/keys; restart once more so the node list loads from your account. Manager search: "SpicyAPI". Headless: set SPICY_API_KEY. Nothing else to install - no models, no GPU, no Python packages.
Practical notes
Both media inputs are uploaded for the run: the photo as PNG (or JPEG if it's over the 10 MiB ceiling) and the driving clip as-is, which is why the media upload limit here is 90 MiB. A big 4K driving clip will fail; export a 1080p or 720p H.264 version first.
Driving clip quality matters more than you'd think. Jittery, low-bitrate or heavily compressed sources produce a jittery transfer - the model faithfully copies noise too.
Set Max cost per run before your first render. The node quotes every job first and aborts anything above the ceiling, uncharged. With a per-second price and a variable-length input, this is the node in the pack that most needs a ceiling.
Cancel means stop watching. Interrupting leaves the task running on SpicyAPI; it's charged if it succeeds and the result stays in your console for up to 14 days. And on the standard fix-list: a model missing from your node search needs a ComfyUI restart, 40310 means an unverified email, 40004 means the option combination isn't served.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Optional notes on the result: the setting, the look, anything the driving clip does not show. | |
| image_url | IMAGE | The character to animate: one clear, full or half-body picture of the person. JPEG or PNG only. | |
| video_url | VIDEO | Driving clip, 3 to 30 seconds: the moves, expressions and gestures to copy. The result is as long as this clip. | |
| resolution | COMBO | 720p | Output resolution. Higher tiers cost more per second. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |