Kling AI Multi-Shot
One character, six consistent shots — Kling's answer to character drift
- auth
- images
- url
- task_id
Character consistency is the problem every image-video person eventually hits: you want the same person across multiple shots, and local tools want you to train a LoRA or wire up IP-Adapter to get there. KlingDirect_MultiShot sidesteps all of that with a single API call - give Kling one overall description plus up to six per-shot prompts, and it returns a batch of images that share a coherent subject, no training involved. It's Kling's own answer to the consistency problem, and it lives entirely on their servers.
The tradeoff is worth stating up front: this is a closed-model capability, so you're paying for it per call and you're trusting Kling's idea of "consistent." When it works - and for a single clearly-described character it works well - it beats the local multi-LoRA dance for speed. When it doesn't, there's no adapter to tune; you rewrite the prompt.
How it works
The node sends your prompt as the anchor - the overall scene and character description that every shot must honor - then sends each shot_*_prompt as an individual frame. shot_1_prompt is required; shots 2 through 6 are optional, so a two-shot storyboard is a valid workflow. aspect_ratio (default 1:1) applies to all shots, so pick once for the whole batch. Under the hood it uses Kling's kling-image-o1 multi-shot endpoint (/v1/images/ai-multi-shot), then downloads every returned image and stacks them into one IMAGE batch.
The mental model: the main prompt is the contract ("a red-haired detective in a trench coat, rain-slick city night"), and each shot prompt is a staging direction ("shot 2: she examines a photograph, close-up on her hands"). The more specific your character contract, the less drift you'll see.
Outputs
- images (
IMAGE) - all shots concatenated into a single batch, frames in order. Preview it, split it with a batch-indexing node, or pipe it straight intoVideo to Fileto rough-cut a storyboard reel. - url - hosted result.
- task_id - for chaining into
Task Status.
The batch-order detail matters: because everything comes back as one tensor, it's trivial to feed the whole thing into image-to-video later, one shot at a time.
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 weights download; the pack needs only your Kling access key + secret key (from https://app.klingai.com/global/dev, KYC required) in the Kling AI Authentication node, or set as KLING_ACCESS_KEY / KLING_SECRET_KEY env vars. Wire auth in and mind the region (Singapore default; China/US accounts need the Region Selector).
Where people get burned
- Vague anchor prompts. The whole consistency guarantee rests on the main
prompt. "A woman in a city" will drift between shots; name the outfit, the hair, the lighting, the vibe. - Forgetting it's metered. A six-shot generation is one API job but a multi-image job - it costs more than a single image, and you pay for every shot whether you keep it or not. Draft with two shots, expand once the character holds.
- Sharing the aspect ratio. All six shots share one
aspect_ratio; you can't mix a wide establishing shot with a vertical portrait in the same call. Plan the batch as one framing.
If you need consistency across separate generations rather than inside one batch, that's the harder problem - and Kling's single-shot image gen plus careful prompt engineering is your only lever here. For a storyboard in one call, this node is exactly the right tool.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| auth | KLING_AUTH | — | |
| prompt | STRING | Overall scene/character description for consistency across shots. | |
| shot_1_prompt | STRING | Prompt for shot 1 (required). | |
| aspect_ratio | COMBO | 1:1 | Aspect ratio for all generated shots. |
| shot_2_promptopt | STRING | Prompt for shot 2. | |
| shot_3_promptopt | STRING | Prompt for shot 3. | |
| shot_4_promptopt | STRING | Prompt for shot 4. | |
| shot_5_promptopt | STRING | Prompt for shot 5. | |
| shot_6_promptopt | STRING | Prompt for shot 6. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| url | STRING | — |
| task_id | STRING | — |