MiniMax H3 Timeline
The Timeline node is the Creator now — here's what that means for your old workflows
Here's the honest headline: if you loaded a workflow with a node called "MiniMax H3 Timeline" on it, you're using a deprecated name for the same node that's now called "MiniMax H3 Creator." Same body, same behavior, same queue. The pack renamed the flagship and kept the old id alive so nobody's canvas would turn into red boxes. Only the title differs.
That sounds backwards until you read the pack's design. The Creator node's
whole trick is that one node is a piece - a single shot - and when you click
"Write the next shot" under the prompt, the same node becomes a strip of
shots: a timeline. There is no mode to pick, and no separate node type for
multi-shot work. The Timeline node id is the legacy label for that same
machine, preserved because a node id that stops existing breaks saved
workflows, while is_deprecated quietly removes it from the node search so
nobody reaches for it fresh. Load it, run it, and it behaves exactly as a
Creator does - the frontend mounts the same body on both ids.
What the timeline actually does
Everything on the Creator applies here - the @ attachments, the mode badge
that routes to FL2VA or Ref2VA, the seed that runs the whole piece, the
accelerator row. What's new is the shot lane. Each card on the strip is a
whole generation with its own prompt, references and LoRAs, and the node's
face becomes a lane strictly proportional to their durations.
You get two ways to join them:
- Chained renders each segment and joins them, with a seam that can continue from any earlier segment's last frame - one frame, or a 5/22/39- frame feathered blend that carries real motion and phase-locked sound across the cut.
- One pass compiles the same cards into a single generation, because H3's prompt format is already a shot list. No seam at all, and music or dialogue carries across the whole piece.
Each card also carries a padlock. Locked cards aren't rendered, so you can
shoot a long strip one pass at a time - each pass is written as its own file
under takes/ - keeping the takes you like and re-shooting only the card
you're working on.
The inputs that matter
timeline_data- the JSON blob that holds the whole strip: prompt, aspect, short edge, output prefix, and asegmentsarray, each with its own prompt, assets, LoRAs, duration and checkpoint. Same shape as the Creator'screator_data; only the widget name differs, which is exactly why old workflows still load correctly.seed- one number for every segment, chained or single, plus every refine and face pass inside them. The prompt is what changes between shots, not the noise.steps/cfg/sampler_name/scheduler- 20 / 1.0 /res_multistep/simpleby default. Reference-heavy prompts likebetaornormalon the scheduler.shift_video(12),shift_audio(3) - the checkpoints' own flow shift values; a wrong audio shift distorts the sound before the picture.block_cache,spectrum,attention,chunk_ffn,fp16_accumulation- the speed row. Caches trade fidelity for speed;
chunk_ffnis the one free lunch for low VRAM.
- the speed row. Caches trade fidelity for speed;
It has no outputs, because it's an output node - the finished video is reported back onto the node itself via an expanded subgraph.
Installing and running
Same as the rest of the pack. Manager, search "MiniMax Creator", or:
cd ComfyUI/custom_nodes
git clone https://github.com/roadmaus/ComfyUI-MiniMax-Creator
Restart ComfyUI; nothing to pip install, but you need a ComfyUI new enough to
ship comfy_extras/nodes_minimax_h3.py. Weights go where ComfyUI already
looks: FL2VA/Ref2VA in models/diffusion_models, text encoder in
models/text_encoders, video and audio VAEs in models/vae, taeh3 preview
decoder in models/vae_approx. Missing weights are refused before the queue
starts, naming the field and folder.
The one genuine trap to know about: duration. H3 frame counts must satisfy
n % 17 == 5 at 24 fps, so there is no 6.00-second shot - the compiler lands
on the nearest legal count. And if a long render dies with a
HostBuffer.read_file_slice CUDA OOM, that's Dynamic VRAM streaming weights
into a fight with a 33B model; restart ComfyUI with --disable-dynamic-vram
and it tends to behave. Both are pack-level knowns, not things you did wrong.
Bottom line: if you're starting fresh, reach for the Creator node and never think about this one. If you've got old timelines saved, they'll keep running as-is - which is precisely the point of keeping the name alive.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| timeline_data | STRING | { "version": 2, "prompt": "", "aspect": "16:9", "short_edge": 768, "output_prefix": "minimax/renders/H3", "models": {}, "segments": [ { "prompt": "", "assets": [], "loras": [], "duration_s": 6, "checkpoint": "auto" } ] } | — |
| seed | INT | 00–18446744073709550000 | The seed for the whole piece: every segment, chained or single, and every refine and face pass inside them, runs on this number. What separates consecutive shots is their prompts and their seams, not their noise. |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 1.00–100 | — |
| sampler_name | COMBO | res_multistep | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | simple | The templates use 'simple'; for reference-heavy prompts they suggest 'beta' or 'normal' instead. |
| shift_video | FLOAT | 12.000.01–100 | The video flow shift. 12 is the checkpoints' own value; a turbo LoRA's card may name another. |
| shift_audio | FLOAT | 3.000.01–100 | The audio flow shift. 3 is the checkpoints' own value. A wrong one distorts the soundtrack before it touches the picture. |
| block_cache | COMBO | off | Step caching, one implementation at a time. safe/fast/aggressive are FirstBlockCache presets (needs ComfyUI-MiniMaxH3-FirstBlockCache); 'easy' is core's EasyCache; 'tea' is TeaCache (needs ComfyUI-MiniMaxH3-TeaCache). All trade fidelity for speed — A/B before trusting one on a final render. |
| spectrum | BOOLEAN | false | Spectrum: forecast features across steps instead of evaluating every one. Needs ComfyUI-Spectrum-MiniMax-H3. Combines with block_cache; cannot be combined with EasyCache. |
| spectrum_blend | FLOAT | 0.500–1 | Spectrum's video spectral share. Higher is faster and further from a native render. Ignored unless 'spectrum' is on. |
| sage | BOOLEAN | false | Deprecated — use 'attention'. A workflow saved with this on still runs sage attention. |
| attention | COMBO | default | Which attention H3 runs. 'default' is the checkpoint's own; 'sage' is quantized attention (needs ComfyUI-KJNodes and the sageattention package, NVIDIA only); 'kitchen' is core's own int8 kernel, with nothing to install. One at a time — a model has one attention. Both are faster and lower on peak VRAM, and both compose with the caches and with Spectrum. |
| chunk_ffn | BOOLEAN | false | Low VRAM: run H3's feed-forward in chunks over the packed sequence (KJNodes' Chunk FFN). Lowers the peak a render has to fit in, and the frames are the same ones — activations are quantized per token, so chunking is a rearrangement rather than a trade. Needs ComfyUI-KJNodes. Composes with everything above. |
| fp16_accumulation | BOOLEAN | false | Fast math: let cuBLAS accumulate fp16 matmuls in fp16 while this model runs, and put the flag back afterwards (KJNodes' fp16 accumulation). It reaches fp16 matmuls only — the released H3 checkpoints run bf16, and their quantized layers go through comfy-kitchen's kernels rather than cuBLAS, so on those there is nothing for it to change. For a genuinely fp16 model it is faster where the card supports it, at some precision. Needs ComfyUI-KJNodes and torch 2.7 or newer, and raises rather than pretending on a torch without the flag. |
Outputs (0)
No outputs