MiniMax H3 Chain Director
The same long-video trick, without the Chinese UI
- model_r2v
- model_i2v
- video_vae
- audio_vae
- clip
- image_0
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- ref_video
- ref_audio
- images
- audio
- fps
- frame_count
The MiniMax H3 Chain Director pack ships its flagship node twice: once with a Chinese UI (MiniMax H3 Chain Director|链式导演台) and once as this one - the pure-English version. Same node, same logic, same outputs, same ~60GB of required weights. If your ComfyUI isn't set up for Chinese tooltips and error messages, this is the variant you want. There's nothing else to it: MiniMaxH3ChainDirectorEN calls the exact same core engine as the CN node with lang="en", which flips every label, tooltip and red-text error into English.
So what does it do? It's the one-node answer to MiniMax H3's two hard limits: single-shot generation caps around 362 frames (~15s), and long clips at high resolution blow up VRAM. The node splits your requested duration into N segments, renders segment 1 as r2v (reference-image-to-video) and segments 2+ as i2v where the previous segment's last frame is hard-locked as the first frame - that first-frame lock is the trick that stops a character from quietly becoming a different person between segments. Then it concatenates all the frame batches and audio waveforms and hands you a finished clip. It's the same split-and-chain technique people hand-build with sliding-window samplers, but collapsed into one node where you only fill in duration, per-segment length, resolution and prompts.
The inputs. The model wiring is where everything starts: model_r2v (ref2va base, segment 1), model_i2v (fl2va base, segments 2+), video_vae, audio_vae, and clip (the qwen3vl_32b text encoder). image_0 is your main scene/subject reference → <Picture 1> in prompts, with image_1..image_8 as optional references for <Picture 2..9>. Then the two prompt boxes: global_prompt (constant scene/style/character/camera across the whole video) and timeline_prompt, which is required - one line per block, like 0-5s: character walks left. Optional ref_video_0..2 (frame-batch images) and ref_audio_0..2 feed the first r2v segment.
The parameters you'll actually set:
duration_presetandsplit_preset- total duration (5–120s) and seconds per segment (5/10/15). They must divide evenly: 60 ÷ 10 = 6 segments. If not, red-text error - the node refuses to silently drop seconds. Max ~15s (362 frames) per segment.resolution_preset- 0.4MP (480p) / 0.9MP (720p) / 2.0MP (1080p); keepref_max_sizeroughly matching.steps,sampler,scheduler,cfg- defaults are 4 steps,er_sde+simple, CFG 1.0, tuned for the bundled turbo LoRA. Steps are per segment, so doubling to 8 roughly doubles runtime.
Outputs are images (IMAGE), audio (AUDIO), fps (FLOAT, 24.0), and frame_count (INT) - wire images and audio into a VHS_VideoCombine to save the mp4.
Installation is identical to the CN node, since they share a pack: ComfyUI Manager search "ChainDirector / MiniMax-H3", or git clone https://github.com/luxu1999/ComfyUI-MiniMaxH3-ChainDirector.git into custom_nodes/. Then run the pack's one-shot installers - python scripts/install_all.py pulls in AIMixer's ComfyUI_MiniMaxH3_Director (mandatory), VideoHelperSuite and KJNodes plus sageattention==1.0.6, and python scripts/download_models.py grabs the ~60GB of models (ref2va/fl2va bases, two VAEs, the qwen CLIP, and the turbo LoRA). Registry/Manager installs are safety-scanned and omit scripts/, so you'd place those files by hand per the README's table.
The gotchas carry over verbatim from the CN twin: the divisibility error and 362-frame cap are the two red-text failures you'll meet first; expect ±0.5s per segment of drift because MiniMax's frame grid is 17k+5; SageAttention must be 1.x (2.x/3.x breaks H3); TeaCache threshold at ≤ 0.1 or you get wobble; and the territory clause of the H3 Community License excludes the US, EU, UK and South Korea from running the local weights. The runtime self-check will yell at you clearly if ComfyUI_MiniMaxH3_Director isn't installed - install it first. If you've read the CN article, you've read this one; pick whichever language your UI speaks and treat them as the same node.
Inputs (31)
| Name | Type | Default | Description |
|---|---|---|---|
| model_r2v | MODEL | ref2va base model, used for the first r2v segment | |
| model_i2v | MODEL | fl2va base model, used for segment 2+ (i2v handoff) | |
| video_vae | VAE | — | |
| audio_vae | VAE | — | |
| clip | CLIP | — | |
| image_0 | IMAGE | Reference image 1 → <Picture 1> (scene / main subject) | |
| global_prompt | STRING | Constant settings for the whole video: scene/style/character/camera. You may reference images with <Picture N>. | |
| timeline_prompt | STRING | Required. One line per block: 0-5s: action description. Auto-mapped to segments. | |
| duration_preset | COMBO | 30s | Options: 5/10/15/30/45/60/90/120s |
| split_preset | COMBO | 5s per segment (recommended) | 5/10/15s per segment; max ~15s (362 frames) per segment |
| resolution_preset | COMBO | 0.4MP (480p) | 0.4MP=864x480 (480p) / 0.9MP=1280x736 (720p) / 2.0MP=1920x1088 (1080p) |
| ref_max_size | INT | 864256–2048 | Max edge length for reference image resizing; usually matches the resolution preset |
| ref_video_fps | INT | 00–240 | 0 = auto proportional slicing (any fps); set real fps (e.g. 30) for exact per-second slicing |
| auto_anchor | BOOLEAN | true | Auto-append first-frame lock / body-size / reference consistency anchors |
| steps | INT | 41–100 | Diffusion steps INSIDE EACH segment. 4 = turbo LoRA recommended; 8 is sharper but ~2x slower. |
| sampler | COMBO | er_sde | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | simple | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| cfg | FLOAT | 1.000–10 | Recommended 1.0 with the turbo LoRA |
| seed | INT | 0 | — |
| shift_video | FLOAT | 12.00 | — |
| shift_audio | FLOAT | 3.00 | — |
| image_1opt | IMAGE | Reference image 2 → <Picture 2> | |
| image_2opt | IMAGE | Reference image 3 → <Picture 3> | |
| image_3opt | IMAGE | Reference image 4 → <Picture 4> | |
| image_4opt | IMAGE | Reference image 5 → <Picture 5> | |
| image_5opt | IMAGE | Reference image 6 → <Picture 6> | |
| image_6opt | IMAGE | Reference image 7 → <Picture 7> | |
| image_7opt | IMAGE | Reference image 8 → <Picture 8> | |
| image_8opt | IMAGE | Reference image 9 → <Picture 9> | |
| ref_videoopt | IMAGE | Reference video (frame batch; auto-sliced per segment and resampled; may be longer/shorter than total) | |
| ref_audioopt | AUDIO | Reference audio (auto-sliced per segment, looped when short; may be longer/shorter than total) |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |
| fps | FLOAT | — |
| frame_count | INT | — |