Nodes/KlingComfyUI/Kling Generate Motion (Ace Data Cloud)
ComfyUI Node

Kling Generate Motion (Ace Data Cloud)

Make your character do someone else's dance

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Kling Generate Motion (Ace Data Cloud)
    • status
    • task_id
    • media_urls_json
    • first_media_url
    • result_json
    • trace_id
    ◄parameters_json{}►
    ◄model_name►
    ◄mode►
    ◄keep_original_sound►
    ◄watermark_info►
    ◄image_url►
    ◄video_url►
    ◄character_orientation►
    ◄prompt►
    ◄callback_url►

    Two inputs, and that's the trick

    Most video nodes take a prompt. This one takes a still of a character and a video of someone else moving, and produces the first one performing the second one's motion. That's motion transfer - the capability that made Wan Animate and InfiniteTalk the open-weights answer to "I want this specific person doing this specific thing," and the one that closed models still do with noticeably less babysitting.

    Reach for it when the animation is the point and prompting is hopeless. Asking a text-to-video model to reproduce a specific dance, a specific gesture, or a specific walk cycle and actually get it is a fool's errand. Handing it a reference performance sidesteps the problem entirely.

    Be aware of the category you're buying into: Kling is closed, has no weights, and this pack is a third-party reseller wrapper with no community track record to read. The open route - Wan Animate and friends - is covered in wan-video.md, and if your GPU can carry it, it's free per run. This node is the paid shortcut. Sometimes that's exactly what you want, and for a one-off shot it's cheaper than a weekend of tuning.

    How it works

    Four inputs are required by the API contract, and the pack surfaces all four as widgets, so a corner with an empty mode fails locally rather than at the service:

    • mode - std or pro
    • image_url - your character
    • video_url - the driving performance
    • character_orientation - image or video

    That last one is the interesting dial: it controls which source governs the character's orientation, so you're choosing whether the subject keeps the framing it had in your still or turns to match the driving footage. When a result looks "wrong" but the motion is right, this is usually the setting to flip first.

    Optionally, model_name picks between kling-v2-6 and kling-v3 - only those two IDs are valid here, unlike the ten on Kling Generate Video. keep_original_sound is a yes/no string for whether the driving video's audio survives into the output. watermark_info is a JSON object like {"enabled": false}. prompt is available but is not required - motion transfer does most of the work, and a prompt is guidance rather than the primary instruction.

    Like everything in this pack, async is forced on. You get a task ID back immediately and poll with Kling Retrieve Task.

    Inputs and outputs

    Widgets: parameters_json, model_name, mode, keep_original_sound, watermark_info, image_url, video_url, character_orientation, prompt, callback_url. Numbers and booleans typed as text - keep_original_sound wants the string yes or no, not a checkbox. Objects like watermark_info go in as JSON strings.

    Outputs are the pack's six STRINGs: status, task_id, media_urls_json, first_media_url, result_json, trace_id. Wire first_media_url into Kling Load Video for a native VIDEO, and route status to a PreviewAny while you're developing - a STRING output with nothing attached is invisible.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/AceDataCloud/KlingComfyUI
    cd KlingComfyUI && python -m pip install -r requirements.txt
    # restart ComfyUI
    

    Manager: search Kling, publisher acedatacloud, package Kling by Ace Data Cloud (Registry ID kling). Requirements: requests and jsonschema. Native video loading needs ComfyUI 0.39.0 or newer.

    export ACEDATACLOUD_API_KEY=your_key_here   # then launch ComfyUI
    

    Common issues

    Both URLs have to be publicly reachable. image_url and video_url are URIs the service fetches. A path into your ComfyUI/input folder is not a URL, and there's no upload widget here - so motion transfer from local files means hosting them first. This is the biggest practical friction in the whole node.

    "Invalid character_orientation: does not meet the API's enum constraint." You wrote something plausible like auto or image_ref. The contract accepts exactly image and video, and it's checked before the request goes out.

    Keep the driving clip short. Motion transfer inherits the driving video's length and motion budget, and nothing in the node trims it for you. Trim upstream.

    One attempt, no retries on submit. The client only retries read-only queries. If a submission dies on a flaky connection it may still have created a task - find the ID and check before you re-queue and pay twice.

    Faces. You're handing a person's likeness and a performance clip to a third party. If either isn't yours to use, that's a problem you can't configure around.

    CategoryAce Data Cloud/Kling

    Inputs (10)

    NameTypeDefaultDescription
    parameters_jsonSTRING{}—
    model_nameSTRING—
    modeSTRING—
    keep_original_soundSTRING—
    watermark_infoSTRING—
    image_urlSTRING—
    video_urlSTRING—
    character_orientationSTRING—
    promptSTRING—
    callback_urlSTRING—

    Outputs (6)

    NameTypeDescription
    statusSTRING—
    task_idSTRING—
    media_urls_jsonSTRING—
    first_media_urlSTRING—
    result_jsonSTRING—
    trace_idSTRING—