Nodes/KlingComfyUI/Kling Video Commerce (Ace Data Cloud)
ComfyUI Node

Kling Video Commerce (Ace Data Cloud)

The talking avatar that sells the thing

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Kling Video Commerce (Ace Data Cloud)
    • status
    • task_id
    • media_urls_json
    • first_media_url
    • result_json
    • trace_id
    ◄parameters_json{}►
    ◄contents►
    ◄settings►
    ◄watermark►
    ◄callback_url►

    An avatar with a script

    Video Commerce is Goods Studio's chattier cousin. Where Goods Studio makes a product video, this makes a presenter video: an avatar on screen, holding the product, delivering a sales pitch you wrote, with the price and audience you specified baked in. It's a UGC-ad generator, and it's the shape of tool that's been quietly eating the low end of the video-ad market for a couple of years.

    The interesting design decision is that you don't just hand it a script and a product. You hand it goods_price, goods_target_audience and goods_selling_point as separate typed fields, and the service builds the pitch around them. allow_polish then lets it improve your copy. That's why it produces something coherent from relatively little input - you're giving it structure, not just text.

    The honest caveat, same as the rest of this pack: it's a third-party reseller wrapper around a closed model with no community track record, and every render is metered. This is production work you're buying, not a hobby toy. Budget accordingly, and do your testing on the shortest, cheapest settings you can.

    What goes in

    contents is a JSON array, minimum two entries, each with a type:

    • avatar_image - a URL; the person who'll appear on screen
    • avatar_id - text up to 128 characters; the same thing, but a pre-registered avatar reference
    • ref_image - a URL; the product
    • goods_title - text, up to 500 characters
    • goods_price - text, up to 256 characters (it's typed as text because "from $29.99" is a string, not a float)
    • goods_target_audience - text, up to 200 characters
    • goods_selling_point - text, up to 500 characters
    • speech_script - text, up to 2000 characters

    settings is a JSON object, and it's where the presentation gets dialled in: resolution (720p or 1080p), aspect_ratio (9:16 or 16:9 - vertical or horizontal, that's the whole choice), allow_polish (a boolean that lets the service rewrite your script), voice_id (from Kling Voices), speech_rate (0.8, 1 or 1.2), action_prompt (up to 2500 characters describing what the avatar should do), and bgm_enabled (a boolean for background music).

    The division is clean once you see it: contents is the facts, settings is the performance. If the ad says the right things in the wrong way, you're fixing settings.

    watermark is a STRING widget expecting true or false. callback_url if you want a webhook.

    Outputs and plumbing

    Widgets: parameters_json, contents, settings, watermark, callback_url.

    Outputs: status, task_id, media_urls_json, first_media_url, result_json, trace_id. Asynchronous, so first run is pending; poll with Kling Retrieve Task and load with Kling Load Video.

    Put a PreviewAny on status while you're building. A STRING output with nothing attached shows you nothing on the canvas, and "is it still rendering or did it fail" is the question you'll be asking most.

    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, confirm publisher acedatacloud and package Kling by Ace Data Cloud (Registry ID kling). Dependencies are requests and jsonschema; the whole pack is a thin HTTP client and weighs nothing. Native video loading needs ComfyUI 0.39.0 or newer.

    export ACEDATACLOUD_API_KEY=your_key_here   # then launch ComfyUI
    

    Common issues

    The avatar needs to exist as a URL or an ID. avatar_image is a fetchable link; avatar_id references something already registered with the service. There's no webcam upload here and no file picker.

    A cloned voice is a prerequisite for the voice you want. If settings.voice_id is empty you get the API default voice, which is rarely what people mean. Go make one in Kling Voices first - browsing presets there is a read-only call and costs nothing.

    allow_polish is doing more than you think. With it on, the service treats your speech_script as a draft. If you need the exact words, leave it off.

    Consent. An avatar image is usually a real person's face, and a cloned voice plus a synthetic face plus a sales pitch is the exact combination that gets platforms upset and regulators interested. Use your own likeness or one you have written permission for. The pack ships a short privacy note and puts the responsibility on you, which is about all a node pack can do.

    One submission, no retry. Paid requests aren't retried after a connection failure; read-only task queries are. If a submit dies, look up the task ID before you queue again - the same video twice is twice the bill.

    CategoryAce Data Cloud/Kling

    Inputs (5)

    NameTypeDefaultDescription
    parameters_jsonSTRING{}—
    contentsSTRING—
    settingsSTRING—
    watermarkSTRING—
    callback_urlSTRING—

    Outputs (6)

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