MiniMax H3 Chain Director|链式导演台(多段拼接)
One node that splits, chains, and stitches
- 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
- 画面帧
- 音频
- 帧率
- 总帧数
MiniMax H3 is great at video and bad at long video. Single-shot generation tops out around 362 frames - call it 15 seconds - and push a 10-second clip at 1080p on a 16GB card and you'll watch the VRAM meter go vertical. This node treats those two walls as a workflow problem instead of a hardware one: it splits your long video into N segments, renders segment 1 as r2v (reference-image-to-video) and every later segment as i2v with the previous segment's last frame hard-locked as its first frame, then stitches frames and audio back together and hands you a complete clip. You fill in a total duration, a per-segment length, a resolution and two prompt boxes. It does the rest.
First, the context you should have before downloading ~60GB of weights. H3 is MiniMax's 33B omni-modal open-weight video model - the "Hailuo 3.0" turn - whose selling point is generating stereo audio natively alongside the picture rather than bolting an audio pass on afterward. But it ships under the MiniMax H3 Community License, which excludes the US, EU, UK and South Korea from the applicable territory: if you're in one of those regions you're not licensed to run the local weights at all. The hosted Hailuo API stays global; the local path doesn't. Check that before you commit to the download.
How it works. The node parses your timeline prompt line by line (0-5s: 动作描述, one block per line), maps each block onto whichever segment's time window it overlaps, and falls back to the nearest block if a segment has no hits. With auto-anchor on (the default), it prepends and appends anchoring sentences - "video first frame must match the given first frame", "keep the reference image's small body size, don't grow" - which is the whole trick for keeping a character from drifting between segments. Each segment runs through the AIMixer ComfyUI_MiniMaxH3_Director engine - segment 1 via pack_r2v_group, segments 2+ via pack_i2v_group, with prev_last = batch[-1:].clone() fed in as the locked first frame. At the end it torch.cats all frame batches and audio waveforms together - the same stitch the pack's little ConcatImageBatches utility does by hand - and outputs 24fps plus the total frame count.
The inputs that matter. Everything hinges on the model ports: model_r2v is the ref2va base for segment 1, model_i2v is the fl2va base for segments 2+ (yes, you wire two diffusion models), plus video_vae, audio_vae, and the clip text encoder (qwen3vl_32b). image_0 is your scene/main-subject reference and becomes <Picture 1> in prompts; image_1..image_8 are optional extras for <Picture 2..9>. Then two prompt boxes: the global prompt (scene/style/character/camera, constant across the whole video) and the timeline prompt, which is required - leave it empty and you get a red-text error.
Below that, the few you'll actually touch:
- 总时长预设 / 分段方式 - total duration and seconds per segment. They must divide evenly: 60s ÷ 10s = 6 segments. If they don't, the node refuses with a red error rather than silently dropping seconds. Per-segment max is ~15s (362 frames).
- 分辨率预设 - 0.4MP (480p) up to 2.0MP (1080p);
参考图最大边should generally match it. - 采样步数 / 采样器 / 调度器 / 引导强度CFG - defaults are 4 steps,
er_sde+simple, CFG 1.0, tuned for the turbo LoRA. Steps are per segment: 6 segments × 4 steps is six separate 4-step samplings, so bumping to 8 costs you about double.
Optional ref_video_0..2 and ref_audio_0..2 feed reference video/audio into the first r2v segment; older Director builds ignore them with a hint.
Installing it is the honest part. The node itself is zero-config, but the stack around it is not:
# 1. the pack
cd ComfyUI/custom_nodes
git clone https://github.com/luxu1999/ComfyUI-MiniMaxH3-ChainDirector.git
# 2. everything else, one command (Director + VideoHelperSuite + KJNodes + sageattention)
cd ComfyUI-MiniMaxH3-ChainDirector
python scripts/install_all.py
# 3. models (~60GB)
python scripts/download_models.py # --mirror hfco for native huggingface.co
Or use ComfyUI Manager's search for "ChainDirector / MiniMax-H3". Note the Manager/Registry package is safety-scanned and ships without the scripts/ folder - those one-click installers only exist on the GitHub clone, so Registry users place the models by hand using the README's file/directory table.
Where people get burned. The divisibility error and the 362-frame cap are the two red-text failures you'll hit first - both are doing you a favor. Timeline separators are forgiving (the parser accepts -, ‑, –, -, ~, -, and s or 秒), so Word-copied dashes work. Expect ±0.5s per segment of drift because MiniMax's frame grid is 17k+5; that's normal, not a bug. SageAttention must be version 1.x - 2.x/3.x is incompatible with H3 - and the workflow hangs one PathchSageAttentionKJ node on each model chain; if you use TeaCache, keep the threshold at ≤ 0.1 or you get wobble. And if the node errors about a missing ComfyUI_MiniMaxH3_Director, that's the runtime self-check catching an absent dependency - install the Director pack first. The runtime auto-patch keeps old Director builds continuous (no manual patching for normal use), which quietly saves you from the classic "two segments, two different characters" trap this pack exists to solve.
Inputs (31)
| Name | Type | Default | Description |
|---|---|---|---|
| model_r2v | MODEL | ref2va 底座,用于第一段 r2v 生成 | |
| model_i2v | MODEL | fl2va 底座,用于第2段及以后的 i2v 接力 | |
| video_vae | VAE | — | |
| audio_vae | VAE | — | |
| clip | CLIP | — | |
| image_0 | IMAGE | 第1张参考图 → <Picture 1>(场景/主体图) | |
| 全局提示词 | STRING | 全片不变的设定:场景/风格/角色/机位等;可用 <Picture N> 引用参考图 | |
| 时间轴提示词 | STRING | 必填。每行格式:0-5s: 动作描述,节点自动按分段映射 | |
| 总时长预设 | COMBO | 30秒 | 可选:5/10/15/30/45/60/90/120 秒 |
| 分段方式 | COMBO | 5秒每段 (推荐) | 每段 5/10/15 秒;单段上限约 15 秒(362 帧) |
| 分辨率预设(百万像素) | COMBO | 0.4MP (480p) | 0.4MP=864×480(480p) / 0.9MP=1280×736(720p) / 2.0MP=1920×1088(1080p) |
| 参考图最大边(像素) | INT | 864256–2048 | 参考图缩放的最大边长,一般与分辨率预设一致 |
| ref_video_fps | INT | 00–240 | 0 = auto proportional slicing (any fps); set real fps (e.g. 30) for exact per-second slicing |
| 自动锚点 | BOOLEAN | true | 自动追加锁帧句/体型/参考图一致性锚点 |
| 采样步数 | INT | 41–100 | 每一段内部的扩散采样步数;4步=加速LoRA推荐值,8步画质更细但耗时约翻倍 |
| 采样器 | COMBO | er_sde | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| 调度器 | COMBO | simple | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| 引导强度CFG | FLOAT | 1.000–10 | Turbo LoRA 下推荐 1.0 |
| 随机种子 | INT | 0 | — |
| 视频时间偏移 | FLOAT | 12.00 | — |
| 音频时间偏移 | FLOAT | 3.00 | — |
| image_1opt | IMAGE | 第2张参考图 → <Picture 2> | |
| image_2opt | IMAGE | 第3张参考图 → <Picture 3> | |
| image_3opt | IMAGE | 第4张参考图 → <Picture 4> | |
| image_4opt | IMAGE | 第5张参考图 → <Picture 5> | |
| image_5opt | IMAGE | 第6张参考图 → <Picture 6> | |
| image_6opt | IMAGE | 第7张参考图 → <Picture 7> | |
| image_7opt | IMAGE | 第8张参考图 → <Picture 8> | |
| image_8opt | 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 |
|---|---|---|
| 画面帧 | IMAGE | — |
| 音频 | AUDIO | — |
| 帧率 | FLOAT | — |
| 总帧数 | INT | — |