MiniMax H3 Plan (Modern)
The Plan node that runs your whole MiniMax H3 movie — now with its wires in order
- chain_policy
- project_assets
- plan
- summary
- clip_count
- width
- height
- video_blend_frames
The name says "Plan," but don't mistake it for a sticky note. This is the front door of the ComfyUI-MiniMaxH3-Context-Loop pack: the node that declares how many scenes your MiniMax H3 video has, what each one says, how big it renders, and which folder the whole production lives in. If you're wiring a new multi-scene H3 workflow from the 0.6 examples, this is the Plan you reach for. The older "MiniMax H3 Context Loop Plan" still exists purely so that pre-0.6 graphs don't explode when you update the pack.
Why "Modern"? Through 0.4 and 0.5 the original Plan node carried continuity and audio intent on its own shoulders. In 0.6 those moved out to the Generation Profile node, which now feeds this Plan through a required chain_policy socket. The payoff is a Plan that can't secretly contradict its own continuity settings - it just holds the scenes, the canvas, and the delivery defaults, and lets the profile own the "how does scene 3 connect to scene 2" decisions.
What it actually does
Behind the scenes this node isn't generating anything. It compiles your scene columns plus canvas, timing, and seed defaults into one validated H3_CHAIN_PLAN document. Feed that plan output to H3 Context Loop Start and the pack does its signature trick: only the current scene enters the sampler, each scene is checkpointed to disk, you review it at the gate, and the loop advances to the next scene. Nothing waits in VRAM for the whole production - which is the whole point of a pack that renders 15-second clips scene by scene.
The inputs that matter
run_name- the identity of the production. It names theoutput/h3_chains/<run_name>/folder where saved scenes and checkpoints go. Reuse the same name to resume a run; pick a new one to start a different project. Getting this right saves you a lot of re-rendering.chain_policy- required. Connect the MiniMax H3 Generation Profile (optionally through Advanced Policy Override). No Generation Profile, no Modern Plan.width/height- the generation canvas for every scene (defaults 960×544). Keep multiples of 32; H3 wants an aligned grid.segment_crf- H.264 quality for the per-scene MP4 checkpoints. Lower is better; 18 is a sane default and I wouldn't chase 12 unless you're archiving.plan_json- the serialized backing document behind the visual scene-column editor. Leave it alone for day-to-day edits; it's an import/export surface for raw JSON.
You'll also see encode_mode (carry picture context as one motion-bearing video, or as still-frame anchors - keep video), crop, default_duration_seconds, default_steps, base_seed, and video_blend_frames for final-assembly crossfades. The optional project_assets socket lets the Project Asset Carousel own the run name, reference lineage, and source track instead.
Outputs
plan is the one that matters - wire it to Loop Start and, for recovery, to Manifest Load. The summary string tells you scene count and delivered duration, clip_count is handy for loop math, and width/height feed the stock H3 conditioning node. video_blend_frames is a legacy Plan-wide default; it can't represent a per-scene override, so in 0.5+ don't connect it to Loop Trim - wire Current Shot state to Loop Trim state instead.
How to install
Grab it through ComfyUI Manager (search "MiniMax H3 Context Loop") or clone straight into custom_nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/seitanism/ComfyUI-H3-Motion-Context-MultiRef.git
git clone https://github.com/ethanfel/ComfyUI-MiniMaxH3-Context-Loop.git
Then restart ComfyUI. The MultiRef repo is mandatory, not optional - it's the companion that supplies the shared MiniMaxH3MotionContext base. You also need a current ComfyUI build with native MiniMax H3 Add Guide support, plus your own H3 model, text encoder, and video/audio VAEs (the pack bundles no models). ffmpeg on PATH is recommended for review and assembly.
Common issues
The classic stumble is a pre-0.6 workflow that opens fine but shows the old Plan node. That's expected - the original node is kept for compatibility. Connect a Generation Profile to it, then right-click and pick Upgrade to Modern Plan… to keep your scenes and move over cleanly. And remember: resume checks reject incompatible generation changes, so if you swap model or sampler settings mid-production, start a fresh run_name rather than fighting the fingerprint guard.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| plan_json | STRING | { "shots": [ { "id": "intro", "prompt": "Describe the opening shot." }, { "id": "continuation", "prompt": "Continue the same take." } ] } | Serialized backing document for the visual scene-column editor. Use Raw JSON only for import, export, or advanced editing. |
| chain_policy | H3_CHAIN_POLICY | Required modern generation intent. Connect MiniMax H3 Generation Profile, optionally through Advanced Policy Override. Continuity and audio behavior are not duplicated on this Plan node. | |
| run_name | STRING | h3_chain | Identity of this render history and its output/h3_chains folder. Project Assets can own and synchronize it instead. |
| generation_fingerprint | STRING | Compatibility tag for generation inputs not stored in the Plan: model, VAE, LoRAs, CFG, sampler, scheduler, and global references. Project Assets contributes its lineage automatically. | |
| width | INT | 96032–4096 | Generation width for every scene. |
| height | INT | 54432–4096 | Generation height for every scene. |
| encode_mode | COMBO | video | Encode carried picture context as one motion-bearing video (recommended) or as separate still-frame anchors. |
| crop | COMBO | disabled | Fit saved context to the Plan canvas by direct resize or aspect-preserving center crop. |
| default_duration_seconds | FLOAT | 15.000.1–149.6666666666667 | Fallback duration when a scene and its JSON defaults omit both seconds and frame length. |
| default_steps | INT | 201–10000 | Fallback sampler steps for scenes without an explicit override. |
| base_seed | INT | 00–18446744073709550000 | Stable base used to derive a distinct seed for every scene without an explicit seed. |
| segment_crf | INT | 180–51 | H.264 quality for saved scene MP4 files. Lower values give higher quality. |
| video_blend_frames | INT | 00–243 | Default final-assembly picture crossfade. A scene can override it; 0 is a hard cut. |
| plan_json_inputopt | STRING | Optional complete Plan JSON from another node. A non-empty value overrides the visual editor's serialized fallback. | |
| project_assetsopt | H3_PROJECT_ASSETS | Optional Project Asset Carousel. It owns the run name, reference lineage, and source track when connected. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| plan | H3_CHAIN_PLAN | Validated chain plan. Connect it to Loop Start and, for recovery, Manifest Load. |
| summary | STRING | Human-readable scene count, delivered duration, and compatibility summary. |
| clip_count | INT | Number of scenes in the plan. |
| width | INT | Validated generation width; connect to the stock H3 conditioning node. |
| height | INT | Validated generation height; connect to the stock H3 conditioning node. |
| video_blend_frames | INT | Legacy Plan-wide default blend length. It cannot represent a per-scene override because Plan has no active scene. Do not connect it to Loop Trim in 0.5; connect Current Shot state to Loop Trim state. |