Nodes/KIE.ai Nodes Next/KIE • Kling 3.0 Omni Studio
ComfyUI Node

KIE • Kling 3.0 Omni Studio

The hand-built director node, not the generated one

By felipederosilva·Created about a month ago·Updated a day ago· 3
KIE • Kling 3.0 Omni Studio
  • first_frame
  • video
  • url
  • all_urls_json
  • task_id
  • raw_json
  • credits_consumed
  • credits_left
◄prompt►
◄shot_modesingle shot►
◄resolution720p►
◄aspect_ratio16:9►
◄duration5►
◄audiofalse►
◄camera_direction►
◄shot_sequence_json[]►
◄timeout_seconds1200►

Meet the Studio branch

Most nodes in ComfyUI-KIE-Nodes-Next are generated: the pack reads KIE's API docs at startup and builds one ComfyUI node per documented endpoint, turning request fields into widgets. The Studio nodes are different - they're written by hand, and it shows. Where the generated Kling nodes hand you a flat form, Studio hands you a shot planner.

KIE • Kling 3.0 Omni Studio (KIE_Next_Kling_Omni_Studio, in KIE Next/Studio/Kling) is the director's console for the Omni tier: single shot, automatic multi-shot, or a shot list you wrote, with optional image-guided generation and audio.

Same rules as the rest of Kling: Kuaishou's closed model, no weights to download, so the generation is a paid API call - through KIE.ai, on a KIE account with its own key and credits. Not ComfyUI's official Partner Nodes.

The inputs

  • prompt - the scene. Required in practice: the node refuses to run with no prompt and no camera direction.
  • shot_mode - single shot, automatic multi-shot, or manual shot sequence. This is the node's whole reason to exist.
  • resolution - 720p, 1080p, 4k.
  • aspect_ratio - 16:9, 9:16, 1:1.
  • duration - an integer, 3 to 15 seconds. In manual mode it becomes a budget you must spend exactly (see below).
  • audio - off by default.
  • camera_direction - free text. The Studio node appends it to your prompt as a second block, so you can write scene prose in prompt and camera language in this field and stop fighting yourself.
  • shot_sequence_json - your shot list, as JSON. Up to six shots, each needing a prompt and a duration of 1–15 seconds.
  • first_frame (IMAGE, optional) - connect one and the node quietly switches to the kling-3.0-omni/image-to-video model for you. That's the nicest piece of engineering in here: you don't pick a model, you just attach a frame.
  • timeout_seconds - 1200 seconds of polling.

What the three shot modes send

  • single shot → customize_multi_shots: false, prefer_multi_shots: false.
  • automatic multi-shot → customize_multi_shots: false, prefer_multi_shots: true. The model plans the coverage.
  • manual shot sequence → customize_multi_shots: true, prefer_multi_shots: false, plus your parsed multi_prompt array.

In manual mode the node validates locally before spending anything, which is a big improvement on the raw endpoint:

  • Shot list must be a JSON array; each shot needs a non-empty prompt; each duration must be 1–15 seconds.
  • The shot durations must sum exactly to duration. Miss it and you get "The sum of shot durations must equal the total duration" instead of a provider error.
  • Each shot can also carry a camera object with shot_size, angle, movement, lens, speed, stabilization and focus, which the node translates into a "Cinematography: …" sentence and appends to the shot prompt. In other words: camera language becomes prompt text, because the provider doesn't expose native camera parameters.

The rest of the studio

The Studio branch also ships KIE • Camera Director (pick shot size, angle, movement, lens, speed and stabilization; get a reusable camera sentence) and KIE • Shot Sequence (plan up to six shots with a shared setup plus per-shot camera moves; get shot_sequence_json, total_duration and a director prompt). Wire Camera Director's text into Shot Sequence, and Shot Sequence's JSON into this node's shot_sequence_json, and the duration check above stops being homework.

Outputs

video, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left. Same contract as every generation node in the pack: the credits spent and the live balance are printed on the node after each run, and credits_left reads -1 if KIE's balance endpoint is momentarily unavailable (the render still completes). Multi-shot 4K is the most expensive thing this pack will do for you, so that receipt is the number to watch.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next

Restart ComfyUI, then Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key - validated before it replaces an old key, stored outside your workflow JSON, confirmed with a masked fingerprint and ✅ CONNECTED. Servers can set KIE_API_KEY instead; it wins over the saved key. Dependencies are only requests, Pillow, numpy, PyYAML. Manager install works where the pack is listed, and the repo ships a ZIP plus a one-click Windows installer in dist/.

Where people get burned

  • Manual mode with a duration mismatch. The most common failure by far. Add up your shot durations.
  • Expecting the Studio nodes to work without a key. They call the same KIE client as everything else - no key, no run, with one clear error telling you which settings panel to open.
  • Treating the camera fields as a ControlNet. They're prompt text. Good prompt text, but text.
  • Iterating at 4K. Draft at 720p and 5 seconds with a shorter shot list, then re-run the winning plan at the top tier. This is the node where a careless sweep costs real money.
  • A stale install. The pack refuses to run mixed versions rather than silently executing old paid-generation code - if you see an install-integrity error naming two versions, delete the whole ComfyUI-KIE-Nodes-Next folder and reinstall cleanly.
CategoryKIE Next/Studio/Kling

Inputs (10)

NameTypeDefaultDescription
promptSTRING—
shot_modeCOMBOsingle shot3 options: single shot, automatic multi-shot, manual shot sequence
resolutionCOMBO720p3 options: 720p, 1080p, 4k
aspect_ratioCOMBO16:93 options: 16:9, 9:16, 1:1
durationINT53–15—
audioBOOLEANfalse—
camera_directionoptSTRING—
shot_sequence_jsonoptSTRING[]—
first_frameoptIMAGE—
timeout_secondsoptINT120030–7200—

Outputs (7)

NameTypeDescription
videoVIDEO—
urlSTRING—
all_urls_jsonSTRING—
task_idSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
credits_leftFLOAT—