Nodes/Comfyui-Kling-Wrapper/Comfyui-Kling-Wrapper Advanced Element Create
ComfyUI Node

Comfyui-Kling-Wrapper Advanced Element Create

Train a reusable character on Kling without training anything

By magicwang1111·Created 5 months ago·Updated 17 days ago· 1
Comfyui-Kling-Wrapper Advanced Element Create
  • image
  • image_list
  • element
  • element_id
  • element_json
element_type
element_name
element_description
video_url
element_voice_id
extra_payload_json

Kling's advanced elements are the closest thing the API has to a LoRA you don't train. Feed it a few photos of a subject, and it registers that subject as a reusable "element" you can then bind into video generation via an element list. If you've spent time on local identity work - IP-Adapter, FaceID, all that - this is the API-native shortcut: no fine-tuning, no weights, just reference images and a name.

The catch is that it's exacting about its inputs. This node is where Kling's subject-consistency actually happens, and Kling enforces a real constraint: one frontal subject image plus 1–3 additional reference images of the same subject. Background or scene images do not count. Get the references right and this node feels like magic; get them wrong and Kling will politely tell you off.

The three element types

element_type has three options:

  • image_subject - a single image of a subject (plus references). The classic character-lock.
  • multi_image_subject - same idea with multiple images as the primary reference, for subjects that need more angles to pin down.
  • video_character - a character defined by a video instead of stills. This one requires video_url (a public http(s) URL) instead of images.

For image_subject and multi_image_subject, you connect the frontal shot to image and the 1–3 supporting shots to image_list. The node enforces the total between 2 and 4 images, so you can't sneak a single-photo registration past it.

The fields that will bite you

  • element_name - max 20 characters. It's an identifier, not a prompt.
  • element_description - max 100 characters. This describes the reusable subject itself. The README is explicit that it's unrelated to Image2Video's voice mode, so don't reuse a voice description here.
  • element_voice_id - optional, only relevant if you're pairing the element with a cloned voice on the models that support it.

There's also extra_payload_json if you need to pass fields the widgets don't cover, but you'll rarely touch it.

Outputs and wiring

The node returns three things:

  • element - the typed element object that feeds directly into Element List Builder
  • element_id - the string ID, for when you want to wire it manually or query it later
  • element_json - the raw JSON, mostly for debugging or extra_payload_json use

The standard flow: create the element here, drop it into Element List Builder to assemble an element_list, then bind that list into Image2Video or Motion Control. It also works with kling-v3-omni, which can combine elements with voice lists.

Install and gotchas

Pack install as always: ComfyUI Manager (search "Comfyui-Kling-Wrapper") or clone into custom_nodes, pip install -r requirements.txt, restart, Kling API key in config.local.json. API node - no models, just credits.

Where people get burned: feeding scene photos as "references" and getting a rejection, because backgrounds don't count; and exceeding the character limits, which are hard errors, not warnings. Also note that if you want a bound subject and voiced output, the README's reliable path is to generate the element-bound video first, then add speech with Lip Sync or a TTS/audio node - the current endpoint doesn't love doing both at once. Get the reference photos right and this node does the identity work that used to take a training run.

CategoryComfyui-Kling-Wrapper

Inputs (8)

NameTypeDefaultDescription
element_typeCOMBO3 options: image_subject, multi_image_subject, video_character
element_nameSTRING
element_descriptionSTRING
imageoptIMAGE
image_listoptIMAGE
video_urloptSTRING
element_voice_idoptSTRING
extra_payload_jsonoptSTRING

Outputs (3)

NameTypeDescription
elementCOMFYUI_KLING_WRAPPER_ELEMENT
element_idSTRING
element_jsonSTRING