Kling Motion Control
Kling motion transfer
- auth
- image
- video
- video_file
- audio
- url
- task_id
Here's the trick that feels like magic the first time you pull it off: you have a still image of a character, and a completely different reference video of someone - or something - moving. KlingDirect_MotionControl takes the motion from the video and applies it to the image, animating your subject with choreography it never actually performed. Think "dance this reference clip," "do this camera pan," "react the way this person reacts."
This is the same motion-transfer idea the community knows from V2V workflows ("motion transfer like Kling" is the phrase you'll see in comparisons), but here it's a first-class API call rather than a diffusion trick you chain together locally. Kling does the motion extraction and re-render on their side, which is the honest reason to reach for it: local motion transfer is fiddly, wants specific models, and burns VRAM. This is one prompt field and a URL.
What you set
- image (
IMAGE) - your still. This is the subject that will move. - video_url - the reference motion video. Required, and it has to be a public URL; local files need hosting first (the pack's
Cloud Uploaderis the helper for that). - prompt - optional text to nudge the result. Describe the action you want to reinforce if the reference alone is ambiguous.
- model_name - defaults to
kling-v1-6; you can step up tokling-v3,kling-v2-6, orkling-v2-master. The newer models are better but pricier. - mode -
provsstd, same quality/speed/credit tradeoff as the rest of the pack. - character_orientation - the one that's easy to get wrong. Set to
image(default) to keep the character's orientation from your still, orvideoto inherit the orientation the reference video imposes. If your subject ends up facing the wrong way, this is the input that fixes it.
Outputs
Same five as every video node here: video (the animated frames as an IMAGE batch), video_file (downloaded path), audio (Kling can add sound to the result), url (hosted result), and task_id for chaining. For a still→motion job, video and task_id are the ones you'll actually use.
Install and what it needs
It's part of ComfyUI-Kling-Direct: ComfyUI Manager → search "Kling Direct" → install, or git clone https://github.com/IxMxAMAR/ComfyUI-Kling-Direct into ComfyUI/custom_nodes and restart. No model downloads - the pack's only real dependency beyond ComfyUI's built-ins is an API key. Get access key + secret key at https://app.klingai.com/global/dev (KYC first), drop them in the Kling AI Authentication node (or KLING_ACCESS_KEY / KLING_SECRET_KEY env vars), and wire auth in. Region matters: Singapore is the default; China and US accounts should insert the Region Selector ahead of this node.
Where people get burned
- A motion clip that's too busy. Reference videos with erratic cuts or heavy camera movement give the model nothing coherent to extract. A clean, single-action clip (one walk, one turn, one dance loop) gets dramatically better results than a montage.
- The orientation input. It's the most likely source of "the motion is right but my character is mirrored." Flip
character_orientationbefore you blame the prompt. - Cost. Motion control is a full video generation job - metered, per-call, and not cheap for long
prorenders. Draft withstdand a short reference clip, then commit.
The task_id output is worth remembering: it feeds Video Extend and Task Status, so you can extend a successful motion render or check on it without re-rendering.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| auth | KLING_AUTH | — | |
| image | IMAGE | — | |
| video_url | STRING | URL of the reference motion video. | |
| prompt | STRING | Optional text prompt to guide the motion-controlled generation. | |
| model_name | COMBO | kling-v1-6 | Kling model for motion control. |
| mode | COMBO | pro | Generation mode: 'pro' for higher quality, 'std' for faster. |
| character_orientation | COMBO | image | Whether to use the character orientation from the image or the reference video. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | IMAGE | — |
| video_file | STRING | — |
| audio | AUDIO | — |
| url | STRING | — |
| task_id | STRING | — |