MiniMax H3 Material Planner
The timeline that keeps H3 workflows out of spaghetti
- import_preset
- Material Plan
- Omni Media Bundle
- Segment Plan
What this node actually is
Open the pack's all-in-one example workflow and the Material Planner is the big node at the top with a timeline bolted to it. That is the entire pitch. H3's native Reference-to-Video graph wants numbered material - <Picture 1>, <Video 2>, <Audio 1> - wired one port at a time, and by the time you have four reference images, a driving video and a soundtrack in the right slots you are dragging wires across two screens.
The planner replaces those wires with a media bin plus a multi-clip timeline, and it does no encoding at all - the class docstring says it "deliberately performs no H3 encode." It is a packing slip: you arrange material, it emits structured plans, and the encoder and sampler downstream do the work.
Worth knowing before you commit: H3 is a 4–15 second model. Long-form is not something you get, it is something you assemble - and the usual assembly method, last-frame-to-first-frame chaining, quietly degrades across a minute. This pack joins in latent space instead, and the planner is the front half of it.
The three outputs, and which one you want
- Material Plan (
MINIMAX_H3_TIMELINE_PLAN) - the serializable timeline: media, guide windows, sizing, duration. Wire it into MiniMax H3 Plan Encoder, or into the pack's Omni prompt bridge (which reads your ordered media and rewrites a prompt) and then the encoder. The split exists so a rewriter can sit between planner and encoder without creating a dependency cycle. - Omni Media Bundle - the ordered, labelled media list for prompt-rewriting backends.
- Segment Plan (
MINIMAX_H3_FINITE_SEGMENT_PLAN) - the multi-segment version you feed to MiniMax H3 Finite Segment Sampling for long video, or to the split loop nodes. Most people end up here.
One subtlety that bites: with several segment windows, the Material Plan narrows to the active segment while the Segment Plan carries all of them for the sampler to walk. Driving the loop path manually, feed the loop's iteration index into Prompt Index so each pass sees only its own images and audio.
Inputs that matter
Set width and height (1344×768 by default, H3's native-ish landscape), and generation_seconds - 0.21 to 150, two-way synced with the cyan range on the timeline, so drag either one. timeline_data is where the UI keeps the timeline as JSON; you will normally never type in it, but it is what makes the whole timeline survive into your workflow file.
Two optional inputs. import_preset takes a folder from MiniMax H3 Local Preset Loader and loads the timeline back into the editor on the next run - after that you can unplug the loader and the state sticks. prompt_index forces which segment's images and standalone audio go into the bundle, which is what you feed a loop's iteration index into.
Above those sits the panel the schema cannot show you: clip modes (Fixed Guide, Editable Reference, Boundary Only), the cyan GEN range, trimming, snapping, and the two-stage toggle that later drives the sampler. H3 still caps you at 9 reference images and 3 reference audio clips per generated segment, even though the bins have no upload limit.
Install
Search for MiniMax H3 Timeline Director in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Songssx/ComfyUI-MiniMaxH3-TimelineDirector.git
Restart ComfyUI and search for MiniMax H3. There are no pip dependencies to speak of - the project declares an empty dependencies list and leans on PyAV, Pillow, NumPy, PyTorch, torchaudio, aiohttp and imageio-ffmpeg as they already ship with ComfyUI. You need Python 3.10+, a recent ComfyUI build with the native H3 nodes, and the H3 Ref2VA model, CLIP, video VAE and audio VAE on disk. MiniMaxH3AddGuide is only required if you actually use Guides.
Where people get burned
- Blank panel after installing. The timeline is a JS frontend (
WEB_DIRECTORY = ./js) that the repo does not register through the old node-mapping idiom. Hard-refresh the browser and restart the server; a stale frontend is the usual culprit. - "Enter a Global Prompt in the Material Planner, or enter a prompt for every segment." The global prompt is only reused when all segment prompts are empty. Type one segment prompt and every segment needs one.
- "Prompt index N exceeds the planner's M material segments." Your loop iterations, prompt segment count and planner segment count have to agree. Keep them identical.
MiniMaxH3AddGuidenot found (PR #15439). Your ComfyUI build predates the native Guide nodes; update, or stop using Guide clips.- Uploads rejected. Files must sit in the pack's upload folder under
ComfyUI/input/, under 512 MiB, and reference videos need at least 5 frames. Copying a file in with the shell does not register it.
One thing nobody puts in the README: the H3 weights sit under a community licence that excludes the US, EU, UK and South Korea from its applicable territory. That is a legal caveat on the model, not a bug in this node - but worth knowing before you plan a project around it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 134432–16384 | — |
| height | INT | 76832–16384 | — |
| generation_seconds | FLOAT | 5.00.21–150 | Generation duration, synchronized both ways with the cyan timeline range. |
| timeline_data | STRING | — | |
| import_presetopt | MINIMAX_H3_TIMELINE_PRESET | Optional local preset loaded by MiniMax H3 Local Preset Loader. | |
| prompt_indexopt | INT | Optional. Connect a segment prompt index to output only the images and standalone audio assigned to that segment. Leave disconnected to use all materials. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| Material Plan | MINIMAX_H3_TIMELINE_PLAN | — |
| Omni Media Bundle | MINIMAX_H3_OMNI_MEDIA_BUNDLE | — |
| Segment Plan | MINIMAX_H3_FINITE_SEGMENT_PLAN | — |