Nodes/KIE.ai Nodes Next/KIE • Shot Sequence
ComfyUI Node

KIE • Shot Sequence

A Storyboard Your Video Model Will Actually Obey

By felipederosilva·Created about a month ago·Updated a day ago· 3
KIE • Shot Sequence
    • shot_sequence_json
    • total_duration
    • director_prompt
    ◄shot_sizemedium►
    ◄camera_angleeye level►
    ◄lens35mm natural►
    ◄motion_speedslow►
    ◄stabilizationgimbal smooth►
    ◄shot_1_promptEstablish the subject and environment►
    ◄shot_1_duration2►
    ◄shot_1_movementlocked-off►
    ◄shot_1_focus►
    ◄shot_2_prompt►
    ◄shot_2_duration2►
    ◄shot_2_movementpush-in with parallax►
    ◄shot_2_focus►
    ◄shot_3_prompt►
    ◄shot_3_duration2►
    ◄shot_3_movementpush-in with parallax►
    ◄shot_3_focus►
    ◄shot_4_prompt►
    ◄shot_4_duration2►
    ◄shot_4_movementpush-in with parallax►
    ◄shot_4_focus►
    ◄shot_5_prompt►
    ◄shot_5_duration2►
    ◄shot_5_movementpush-in with parallax►
    ◄shot_5_focus►
    ◄shot_6_prompt►
    ◄shot_6_duration2►
    ◄shot_6_movementpush-in with parallax►
    ◄shot_6_focus►

    No model, no API call, no credits

    This one is a text builder. It takes a shared visual setup plus up to six shots and emits three strings. Nothing is generated, nothing leaves your machine, and it costs nothing to run - which makes it the most obviously safe node in this batch and, if you're doing AI video seriously, quietly one of the most useful.

    The premise is that video models respond to camera language, and that most people write it badly or not at all. "Wide shot, eye level, 35mm, slow dolly in, gimbal-smooth" is a different sentence than "a woman walks down a street." This node makes you pick that language from dropdowns once, then attach it to each shot, then hands your video node a director's prompt it can actually follow. The node's own description is upfront that these camera controls are translated into prompt guidance when the provider doesn't expose native camera parameters - which is most providers, most of the time. Treat it as structured prompting, not a control layer.

    The inputs

    Shared setup, required, chosen once for the whole sequence: shot_size (default medium), camera_angle (default eye level), lens (default 35mm natural), motion_speed (default slow), stabilization (default gimbal smooth).

    Then six optional shot blocks. Each has four fields - shot_N_prompt, shot_N_duration (an INT, 1 to 15 seconds), shot_N_movement (a 21-value enum: locked-off, pan left/right, tilt up/down, dolly in/out, truck left/right, pedestal up/down, orbit clockwise, and on), and shot_N_focus (a free-text string for things like a rack focus). Only shot 1's prompt is strictly required, and shots with an empty prompt are silently skipped rather than submitted as blanks - so you can build a three-shot sequence by leaving 4–6 alone.

    Outputs, and how they wire up

    • shot_sequence_json - a JSON array of shots, each with its prompt, duration and full camera block. This is the one that matters: KIE • Kling 3.0 Omni Studio takes a shot_sequence_json input for its manual-shot mode, which is exactly this socket.
    • total_duration - an INT summing the shot durations, for sanity-checking against a provider's clip ceiling.
    • director_prompt - a STRING of human-readable shot directions, all joined into one line.

    For KIE • Seedance Studio, the natural wiring is director_prompt → camera_direction (that node appends camera direction to your prompt) or fold it into prompt yourself. KIE • Camera Director, its single-shot sibling, does the same job for one setup if you don't need a sequence.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
    pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
    

    Restart ComfyUI. You still need a KIE key for the downstream generation nodes - set it once at Settings → KIE.ai Nodes Next → Connection - but this node itself runs fine without one, so it's a safe first thing to add while you're deciding whether the pack is for you.

    How I'd use it

    Plan here, generate there. Write the whole sequence, check total_duration against what your video model will actually accept, then send one shot at a time so a bad take costs you one clip instead of a whole sequence. Providers limit clip length hard - several providers cap out around five seconds - so a six-shot, 30-second plan is realistically six generations plus a stitch, and the JSON is what keeps them feeling like one scene.

    One caveat the node can't solve: prompt-level camera language is a suggestion, not a constraint. If you need a specific move, check whether your provider has native camera parameters and use those instead - the shot language is still useful for everything that doesn't.

    CategoryKIE Next/Studio/Direction

    Inputs (29)

    NameTypeDefaultDescription
    shot_sizeCOMBOmedium9 options: extreme wide, wide, full body, medium wide, medium, medium close-up, +3
    camera_angleCOMBOeye level10 options: eye level, low angle, high angle, bird's-eye, worm's-eye, Dutch angle, +4
    lensCOMBO35mm natural11 options: 14mm ultra-wide, 18mm wide, 24mm cinematic wide, 35mm natural, 50mm standard, 85mm portrait, +5
    motion_speedCOMBOslow6 options: very slow, slow, moderate, fast, very fast, speed ramp
    stabilizationCOMBOgimbal smooth5 options: tripod stable, gimbal smooth, steadicam organic, handheld subtle, handheld energetic
    shot_1_promptSTRINGEstablish the subject and environment—
    shot_1_durationINT21–15—
    shot_1_movementCOMBOlocked-off21 options: locked-off, pan left, pan right, tilt up, tilt down, dolly in, +15
    shot_1_focusSTRINGOptional per-shot focus behavior, such as a rack focus or deep focus.
    shot_2_promptoptSTRING—
    shot_2_durationoptINT21–15—
    shot_2_movementoptCOMBOpush-in with parallax21 options: locked-off, pan left, pan right, tilt up, tilt down, dolly in, +15
    shot_2_focusoptSTRINGOptional per-shot focus behavior, such as a rack focus or deep focus.
    shot_3_promptoptSTRING—
    shot_3_durationoptINT21–15—
    shot_3_movementoptCOMBOpush-in with parallax21 options: locked-off, pan left, pan right, tilt up, tilt down, dolly in, +15
    shot_3_focusoptSTRINGOptional per-shot focus behavior, such as a rack focus or deep focus.
    shot_4_promptoptSTRING—
    shot_4_durationoptINT21–15—
    shot_4_movementoptCOMBOpush-in with parallax21 options: locked-off, pan left, pan right, tilt up, tilt down, dolly in, +15
    shot_4_focusoptSTRINGOptional per-shot focus behavior, such as a rack focus or deep focus.
    shot_5_promptoptSTRING—
    shot_5_durationoptINT21–15—
    shot_5_movementoptCOMBOpush-in with parallax21 options: locked-off, pan left, pan right, tilt up, tilt down, dolly in, +15
    shot_5_focusoptSTRINGOptional per-shot focus behavior, such as a rack focus or deep focus.
    shot_6_promptoptSTRING—
    shot_6_durationoptINT21–15—
    shot_6_movementoptCOMBOpush-in with parallax21 options: locked-off, pan left, pan right, tilt up, tilt down, dolly in, +15
    shot_6_focusoptSTRINGOptional per-shot focus behavior, such as a rack focus or deep focus.

    Outputs (3)

    NameTypeDescription
    shot_sequence_jsonSTRING—
    total_durationINT—
    director_promptSTRING—