MiniMax-H3 Multishot Workflow

Chain multiple MiniMax-H3 shots into one continuous video with audio - in

one node. Each shot starts from the last frame of the previous one; the

duplicated seam frame and its 1/24s of audio are trimmed automatically.

The demo below was made by this workflow: 30 seconds, three chained shots

from one script, same presenter and same voice across both seams, rendered on

the Q5_1 GGUF.

Update your node pack before using H3_Multishot_MEMORY.json

H3MultishotMemorySampler called vae_decode_audio without importing it, so it raised a NameError at audio decode โ€” after all sampling had finished, destroying the completed render. It was broken in every released version until now.

Fixed in ComfyUI-H3-Multishot (issue #1). Pull the latest node pack and restart ComfyUI fully โ€” a browser refresh is not enough. The workflow JSON itself never needed changing.

Files

  • H3_Multishot_AIO.json - easy mode: loaders > script box > one sampler node > save. Write one prompt per shot with --- between them, pick a shot count (0 = one shot per prompt, 1-8 forces it), queue.
  • H3_Keyframes.json - keyframes at any position, not just first/last, in a single generation - so the audio is one continuous stream. Six anchor slots plus an unbounded images_batch, placed by percentage (0%, 50%, 100%), absolute frame index (0, 121, 242) or inclusive range (0-9, 352-361). A descending range like 30%-20% reverses that section of the batch.
  • H3_Multishot_MEMORY.json - long form (2-5 minutes). Keeps a persistent identity anchor so drift cannot compound across many shots.

Requirements

Notes

  • frames_per_shot sits on H3's 17k+5 frame grid (243 = ~10.1s at 24 fps;

    362 = ~15.1s, the trained max).

  • End every shot on what the NEXT shot expects to see - the chain hands each

    shot the previous final frame, and matching that bridge to the next shot's

    framing is what makes seams invisible.

  • Malformed JSON scripts fail loudly instead of rendering the raw text.

v1.3 (2026-08-05)

  • Percentages and ranges in keyframe positions, contributed by @viralesveras. A bare 1 used to mean the last frame rather than frame 1, so addressing an early frame absolutely needed 1.0001 - which is how the ambiguity was found, in real use. Existing workflows keep working: a saved 0, 0.5, 1 is still read the old way and logs the percentage spelling to switch to, while an all-integer 0, 1 takes the new absolute meaning and warns rather than silently moving an anchor.
  • images_batch on the keyframe node, also from @viralesveras - for when six slots is not enough. It adds to the six slots rather than replacing them.
  • Loaders find GGUFs in subfolders - a model under diffusion_models/gguf/ was invisible in the dropdown because the scan was not recursive.
  • New: curve-form GGUFs, ~40% smaller at the same quant tier, with a Q8_0 that fits a 24 GB card: joeygambino/MiniMax-H3-curve-GGUF. They need ComfyUI 0.30.0+; the original-form files stay maintained.

v1.2 (2026-08-04)

  • Keyframes at any position. Stock ComfyUI pins H3 keyframes to the first and last frame and raises only first/last keyframe anchors are supported for anything else. That is a positional-maths limit, not a model limit - both stock cases are the same expression:

    cond_t = text_len + FRAME_RESCALE * pixel_index
    

    which is defined for every frame. Measured on an RTX 5090, 243 frames, one anchor at pixel frame 121: the rendered frame closest to the anchor image was frame 122 - off by one - reached by continuous motion with no cut, audio unbroken through it. A three-anchor run landed frames 121 and 242 exactly.

    Applied in memory; it does not edit any ComfyUI file, self-tests against the stock formula, and rolls back if first/last positions do not reproduce.

  • Move vs cut. Anchor images with a plausible camera path between them make H3 interpolate. Images with no possible path (a kitchen and a diner) make it cut, then hold - stock first/last does the same with such a pair, so that is the model, not the node. The cut case is still useful: a timed shot change inside ONE generation, which keeps the audio continuous across it.

  • Two new controls: H3 Condition Strength (exposes minimax_visual_cond_noise_aug / minimax_audio_cond_noise_aug, read by ComfyUI core but written by no stock node) and H3 Reference Audio, a stereo guard - a mono reference clip crashes the sampler with an unhelpful shape mismatch because the layout reserves two channels.

v1.1 (2026-08-04)

  • Image-to-video. The Multishot Sampler now takes an optional start_image. Connect a LoadImage and shot 1 starts from that frame, then chains as usual. Leave it unconnected for unchanged text-to-video behaviour - v1.0 graphs keep working.
  • ~4x faster on 32GB cards. The text encoder is evicted before sampling. The Qwen3-VL encoder (16.5GB even at Q4) and the H3 DiT (25GB) do not co-fit on 32GB, so the DiT was loading partially and streaming 19GB from system RAM every step. Measured on an RTX 5090: **60 min -> ~15 min** for the same render.
  • Text encoder GGUF + mmproj published: joeygambino/MiniMax-H3-encoder-GGUF. The mmproj sidecar is required for multi-shot, not just for reference images - shot chaining feeds the previous frame through the encoder's vision path.
  • Render at H3's native resolution and upscale afterwards: native 1920x1088 measured worse than 960x544 in blind review and cost ~4x the time.

Node pack: ComfyUI-H3-Multishot

On Civitai

Support

Everything here is free and stays free. If it saved you a night of debugging, tips keep the 5090 warm:

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for joeygambino/MiniMax-H3-Multishot-Workflow

Finetuned
(23)
this model