Video Storyboard Dexogen External
Your long H3 scene, planned shot-by-shot before a single render
- first_frame
- last_frame
- reference_images
- storyboard
- json
- prompts
- frames
- seconds
- report
MiniMax H3 is the open-weight model people wanted the moment it landed - native stereo audio, unified text/image/video context, the first real open answer to Veo's audio gap. But single-generation H3 tops out around 15 seconds, and a real scene is a minute plus. Stitch chunks naively and you get flicker, drift, and seams at every boundary.
Video Storyboard Dexogen External is the planning half of that problem. You feed it a brief - a script, a few anchor frames, some continuity notes - and it returns a validated, shot-by-shot H3 storyboard with the whole timeline already worked out: every chunk's frames, seconds, and generator-ready English prompt. It's built to be chained straight into the pack's Storyboard Shot and H3 Sequence nodes, so by the time you're sampling, the scene has already been de-conflicted.
How it works
The division of labor is the clever bit. Python owns everything that must be exact: the frame schedule, the latent-overlap accounting, chunk IDs, timestamps, beat slots. The language model only fills in story and continuity content. So the LLM can't talk the schedule into nonsense - it writes prose, Python compiles it onto the grid.
The schedule is built on H3's native 17k+5 frame grid (the video VAE's legal clip lengths), with overlap frames between chunks accounted for up front, capped at 16 chunks and one bounded repair pass if the model returns something malformed. Your continuity_rules input locks identities and props across chunks - it overrides the face fallback when you fill it in - and lora_triggers get appended deterministically to every generated prompt, so a character LoRA fires on every chunk without you re-typing the trigger. Reference images (first frame, last frame, and up to several identity/wardrobe/prop/style shots) are sent under one bounded media budget.
The result is a DEXOGEN_STORYBOARD: a canonical, versioned JSON carried as a dedicated custom type, plus a plain json STRING twin if you want to inspect it.
Inputs and outputs
script(optional) - a wired long script, combined after the brief typed on the node.first_frame/last_frame(optional) - exact opening and final anchors for the whole scene.reference_images(optional) - identity, wardrobe, prop, location, or style references.continuity_rules(optional) - wired continuity locks; overrides the face fallback.lora_triggers(optional) - exact trigger tokens appended to every chunk prompt.storyboard- canonical storyboard for Storyboard Shot / H3 Sequence.prompts/frames/seconds- list outputs, one item per generation chunk, aligned to each other. This is what you'd render directly with an H3 sampler if you're not using the sequence node.report- schedule and validation summary.
Install
ComfyUI Manager → ComfyUI-Dexogen → restart, or
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/dexogen/ComfyUI-Dexogen.git
python -m pip install -r ComfyUI-Dexogen/requirements.txt
Find it under 🧬 Dexogen → 🎬 Video.
Gotchas
- It needs at least something to work with. No brief, no script, no reference image and the node raises a contract error - a planner that's handed nothing has nothing to plan.
- You need an endpoint + model selected. This node's whole job is calling an OpenAI-compatible LLM/VLM. The API key is optional and stored outside the workflow (keychain/vault, opaque reference), but the endpoint isn't.
- 16 chunks is the ceiling. Plan for it: the pack's H3 Sequence samples sequentially and caches per-chunk, but the planner intentionally won't spin a scene into 40 chunks.
- One repair pass only. A malformed response gets a single deterministic retry; after that it surfaces the problem instead of silently generating garbage. Treat that as a signal to fix the brief, not to re-roll.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| scriptopt | STRING | Optional wired long script, combined after the brief on the node. | |
| first_frameopt | IMAGE | Exact opening anchor for the complete scene. | |
| last_frameopt | IMAGE | Exact final anchor for the complete scene. | |
| reference_imagesopt | IMAGE | Optional identity, wardrobe, prop, location, or style references. | |
| continuity_rulesopt | STRING | Optional wired continuity locks; overrides the face fallback when non-empty. | |
| lora_triggersopt | STRING | Exact trigger tokens appended deterministically to every generated H3 prompt. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| storyboard | DEXOGEN_STORYBOARD | Canonical versioned JSON carried as the DEXOGEN_STORYBOARD type. |
| json | STRING | The same canonical storyboard JSON as an ordinary STRING. |
| prompts | STRING | Generator-ready English H3 prompts, one list item per generation chunk. |
| frames | INT | Generation frame counts, including overlap, aligned with prompts. |
| seconds | FLOAT | Real generation seconds (frames / 24), aligned with prompts. |
| report | STRING | Schedule and validation summary. |