Shot Director
A ComfyUI node for video. You write the shot list. It writes the prompts, the same words every time.
Prompts drift when every shot is typed again.
Each shot needs its size, lens, move and light, then the same character and style lines pasted in again. Small wording changes between shots are where the character and the look start to drift.
By hand an illustration
- 1Wide shot, Mara, woman in her 30s, short black hair, red raincoat, steps off the ferry, slow push in, 35mm film look
- 2close up she lights a lantern, Mara with a black bob and red coat, teal amber grade
- 3Mara (30s, dark hair, crimson jacket) walks to the lighthouse, tracking, film grain
From the shot list node output
- 1Wide shot, 24mm wide-angle lens. Mara steps off the night ferry onto a rain-soaked pier. The camera dollies in slowly. … Mara, a woman in her thirties with short black hair and a red raincoat. 35mm film, muted teal and amber grade, soft grain.
- 2Close-up, 85mm portrait lens. She lifts a brass lantern and its flame catches. Static camera, locked off. … Mara, a woman in her thirties with short black hair and a red raincoat. 35mm film, muted teal and amber grade, soft grain.
- 3Medium shot, 35mm standard lens. Mara walks toward the lighthouse as fog rolls in. The camera tracks alongside the subject. Mara, a woman in her thirties with short black hair and a red raincoat. 35mm film, muted teal and amber grade, soft grain.
Character and style are typed once. Every shot carries the same words.
Six clauses, always in this order.
The rules are fixed and written down, so any prompt can be read back to the settings that made it.
Run a shot list here.
This is the node's own composer, ported to the browser and checked against the outputs of its example workflow. Change a lens, a move or the limit and read what the model would get.
The same list, inside ComfyUI.
One panel on the node holds the list. The outputs are plain text, so they go into any node that takes a prompt. Shot Picker returns one shot with its frame count for a length input.


Specs
- Status
- Built and tested. Public release on GitHub and the Comfy Registry prepared, not published yet.
- Nodes
- Shot Director and Shot Picker
- Shot list
- 1 to 12 shots. Size, camera move, lens from 8 to 800 mm, duration from 0.5 to 60 s, action and lighting per shot.10 shot sizes, 16 camera moves, 6 lens classes.
- Outputs
- prompt, multi_shot_json, shot_prompts, shot_durations, total_duration, shot_count, negative, reportThe multi-shot JSON carries up to 6 shots; the per-shot lists carry all of them.
- Prompt limit
- 160 to 512 characters per shot. Style goes first, then lighting, then character. Framing and camera are never dropped.
- Tests
- 239, all passingMeasured 21 Oct 2026 on Python 3.12. They also check that the README and the panel agree with the composer.
- Built with
- Pure Python and one dependency-free JavaScript panelLoads no model, calls no service, nothing to pip install.
- Tested on
- ComfyUI 0.39.0, frontend 1.55.14, Python 3.10 or newer
- Licence
- MIT
- Origin
- Written from scratch as an independent personal project, not built from any employer's code, workflows or footage.
Need a node like this in your pipeline?
I build custom ComfyUI nodes, workflows and apps, tuned to run on the GPU you already have.