Kling Video Extend
Append seconds to a finished Kling video — by task ID, not re-render
- auth
- video
- video
- video_file
- audio
- url
- task_id
Kling's text-to-video tops out at 15 seconds per job, and most good shots need more runway than that. KlingDirect_VideoExtend is the pack's answer: take a video you already generated and append more seconds onto it - continuing the scene, not re-rendering from scratch. It's the difference between "extend the story" and "regenerate and hope."
The mechanism is what makes it worth using: instead of feeding it the video file, you feed it the task ID of the previous generation. Kling keeps your renders server-side and extends from the actual ending frames of the original clip, so the continuation is seeded by where the video actually stopped - which is how you get a coherent "and then" rather than a jump cut to a new hallucination. The video_id input is forceInput, so wire the previous node's task_id straight in.
What you set
- video_id - the task ID of the video to extend. Required. This is the whole point.
- prompt - what should happen in the extended portion. "The character turns and walks toward the door" - describe the new action.
- negative_prompt - things to avoid in the extension.
- cfg_scale - 0.5 default, 0–1 range, same meaning as the other Kling nodes: higher sticks closer to the prompt.
- video (
IMAGE, optional) - an optional preview/reference of the original frames. Not required for the extension to work; the server already has the source by task ID.
Outputs
The standard five: video (the extended clip as IMAGE frames), video_file, audio, url, task_id - and that task_id is the fun part, because you can chain extends: generate → extend → extend again, each step consuming the previous task ID to keep the story rolling past the model's single-shot length limits.
Install and what it needs
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, then restart. No local models. Needs Kling keys from https://app.klingai.com/global/dev (KYC required) via the Kling AI Authentication node or KLING_ACCESS_KEY/KLING_SECRET_KEY env vars, plus correct region (Singapore default).
Where people get burned
- Retyping a task ID. It's an opaque string; one wrong character and the extension fails server-side. Wire
task_idfrom the source node directly instead of copying it. - Cross-region task IDs. A task created in Singapore isn't visible to the China endpoint and vice versa. Keep one region across a chained generation.
- Cost scaling. Every extend is a fresh video job billed at the full rate for its duration. A 15s clip extended twice is three paid renders total - budget before you chain.
- Prompt drift. The extension is guided by your new prompt, and the model can wander if the prompt contradicts the established scene. Describe the continuation, not a new scene.
The workflow that makes this sing: Text to Video → task_id → Video Extend → task_id → extend again, then Video to File for a single playable MP4 of the whole story.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| auth | KLING_AUTH | — | |
| video_id | STRING | Task ID of the video to extend (from a previous generation). | |
| prompt | STRING | Prompt for the extended portion. | |
| negative_prompt | STRING | Things to avoid in the extended video. | |
| cfg_scale | FLOAT | 0.500–1 | Classifier-free guidance scale. |
| videoopt | IMAGE | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | IMAGE | — |
| video_file | STRING | — |
| audio | AUDIO | — |
| url | STRING | — |
| task_id | STRING | — |