Comfyui-Kling-Wrapper Text2Video
Type a prompt, get a Kling video — no GPU required
- image_list
- element_list
- url
- video_id
The name is a lie, and it's the best part. Comfyui-Kling-Wrapper Text2Video doesn't run Kling on your machine. It doesn't download weights, doesn't touch your VRAM, and doesn't need a single GB of free disk. It's a thin client for the Kling AI cloud API: you type a prompt, it submits an async task to Kling, polls until the clip is done, and hands you back a URL. You reach for this node when the local video stack - Wan, LTX, AnimateDiff - isn't giving you what a paid service can, and you'd rather pay per render than queue for hours.
This is part of a broader pattern that's been creeping into ComfyUI for a while: keep the local graph for conditioning and prep, then hand the final generation step to a cloud video model. People wire Kling, Veo, and Seedance into workflows through a single API key and treat the node graph as the front end for services that cost money per clip. That's exactly what this pack is - a bunch of cloud API calls dressed up as ComfyUI nodes.
How it works
Under the hood this node builds a Text2VideoRequest with everything you set, then runs it through a capability check before it ever spends your credits. That's a genuinely thoughtful touch: the pack keeps a map of which models support which features, and it refuses obviously doomed combinations instead of letting Kling bill you for an error. Then the request goes to whichever provider you configured in config.local.json (official, tencent_vod, or vapeur), the task is submitted asynchronously, and the node polls until the render finishes. Watch your console: it logs final_unit_deduction when the API reports billing, which is how you see the real cost of a generation.
The inputs that matter
- model - the dropdown spans
kling-v1up throughkling-v3,kling-v3-omni, andkling-v3-turbo. The pack intentionally hides models it hasn't confirmed live on real accounts. - prompt - the whole ballgame. With
shot_typeset tointelligence, write the multi-shot structure directly into the text. - duration - 3 to 14+ seconds depending on the model. Short clips are cheap; be honest about how much you need.
- mode -
std,pro, or4k. Onlykling-v3andkling-v3-omnitake4k; anything else gets rejected by the capability check before submission. - aspect_ratio -
16:9,9:16, or1:1. - sound + voice_preset - the native-audio path. Pick a voice preset (47 of them, including some delightfully anime-named ones) and turn
soundon. This mainly works onkling-v2-6. - camera_control_type / config / value - simple camera moves like pan, tilt, roll, and zoom.
- negative_prompt, cfg_scale, image_list, element_list, reference_video - all optional and model-gated.
The outputs are url (a playable, downloadable video URL) and video_id (the ID on Kling's side). That video_id is the key to everything downstream: feed it into Video Extender to keep the clip going, Video2Audio to add sound, or the lip-sync nodes to make someone talk.
Installing it
Install through ComfyUI Manager (search for "Comfyui-Kling-Wrapper") or:
cd ComfyUI/custom_nodes
git clone https://github.com/magicwang1111/Comfyui-Kling-Wrapper.git
cd Comfyui-Kling-Wrapper
pip install -r requirements.txt
Then create config.local.json in the repo root with your credentials. The newer flow is a static Kling Bearer token in api_key; the older access_key/secret_key JWT flow still works. Restart ComfyUI and the nodes appear under Comfyui-Kling-Wrapper. There are no model files to download - the "heavy dependency" here is the API key and a credit balance.
Common issues
The number one "failure" is configuration, not generation: no config.local.json and you get an access_key is required error at runtime. Fill in the key, restart, move on.
Where people actually get burned:
- Picking
4kmode on a model that doesn't support it. The node refuses it upfront - read that error, it's saving you money. - Expecting
kling-v3-turboto respect every widget. Turbo uses the newer 3.0 endpoint shape:durationonly goes 3–15,std/proboth map to 720p/1080p, andnegative_prompt,cfg_scale,sound,voice_list, andelement_listare silently ignored. - Combining voice and strong subject consistency. The reliable flow is to generate the bound video first, then add speech afterward with
Lip Sync,TextToAudio, orVideo2Audio. Kling's current endpoint rejectsvoice_listonkling-v3.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | 9 options: kling-v1, kling-v1-6, kling-v2-master, kling-v2-1-master, kling-v2-5-turbo, kling-v2-6, +3 | |
| prompt | STRING | — | |
| negative_promptopt | STRING | — | |
| cfg_scaleopt | FLOAT | 0.50–1 | — |
| modeopt | COMBO | 3 options: std, pro, 4k | |
| aspect_ratioopt | COMBO | 3 options: 16:9, 9:16, 1:1 | |
| durationopt | COMBO | 13 options: 3, 4, 5, 6, 7, 8, +7 | |
| camera_control_typeopt | COMBO | 6 options: None, simple, down_back, forward_up, right_turn_forward, left_turn_forward | |
| camera_control_configopt | COMBO | 6 options: horizontal, vertical, pan, tilt, roll, zoom | |
| camera_control_valueopt | FLOAT | 1-10–10 | — |
| soundopt | COMBO | 2 options: off, on | |
| voice_presetopt | COMBO | None | 47 options: None, Sunny | genshin_vindi2, Sage | zhinen_xuesheng, 运动少年 | tiyuxi_xuedi, Blossom | ai_shatang, Peppy | genshin_klee2, +41 |
| shot_typeopt | COMBO | 2 options: single, intelligence | |
| image_listopt | IMAGE | — | |
| element_listopt | COMFYUI_KLING_WRAPPER_ELEMENT_LIST | — | |
| reference_videoopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| url | STRING | — |
| video_id | STRING | — |