Support
Everything here is free and stays free β the format spec, the nodes, the workflows, the cartridges, the LoRAs. If it saved you a night of debugging (it contains several hundred of mine), tips keep the 5090 warm:
π Sponsor on GitHub
π Liberapay (recurring)
β‘ Or right here: the Civitai tip button on this page sends Buzz directly.
Identity from reference images, video and audio instead of a start frame.
Point it at photographs of a person, a place, a voice β up to 9 images, 3 videos, 3 soundtracks and 3 standalone audio clips β and the render carries them.
Three things you need besides this download. Both of the support questions this pack generated on day one were setup, not bugs, so they are first:
The node pack β ComfyUI-H3-Multishot. Install via Git URL, restart, then hard-refresh the browser tab; the frontend caches node definitions and you will otherwise see red nodes. Then run
python apply_gguf_arch_patch.pyfrom its folder and restart again. Without that patch, loading any H3 GGUF fails withValueError: Unexpected architecture type in GGUF file: 'minimax_h3'β ComfyUI-GGUF keeps a hardcoded list of architectures and this one is not on it.A ref2va DiT β curve form (smaller, needs ComfyUI 0.30.0+) or original form.
fl2vafiles will not work in this mode.The text encoder and VAEs β Qwen3-VL encoder, and take the
mmprojsidecar with it. Load it with the pack'sH3ClipLoaderAnyat type = minimax, not with "CLIPLoader (GGUF)" β that node has no minimax type, falls back silently, and dies deep inside a tokenizer with an unrelated-looking JSON error.
Naming your references in the prompt
This is the part that is not guessable. Reference blocks are labelled in the prompt text, and the labels are 1-based while the input slots are 0-based β so ref_image_0 is <Picture 1>.
<Picture 1> is the woman. <Picture 2> is the room she is standing in.
She walks to the window in the style of <Video 1>.Ordering is fixed by the node regardless of how you wire it: all images, then videos, then standalone audios. Empty slots are skipped and the numbering compacts.
The ordinal trap. A reference video with a soundtrack consumes an <Audio> ordinal before your standalone clips. One ref video with sound plus one ref_audio_0 makes your voice clip <Audio 2>, not <Audio 1>. Get it wrong and the wrong voice binds, with no error.
References and keyframes cannot be combined
Not a design choice here β a hard limit in ComfyUI's core. model_base.py writes cond_video_latents for keyframes, then assigns it again for references, so the keyframe latents are discarded while the keyframe layout rows survive. The packed sequence desyncs and the sampler dies on a shape mismatch. There is no "reference images plus start frame" mode, and asking for both crashes rather than degrading. Use the keyframes graph when you need a specific opening or closing frame.
Settings, measured rather than guessed
Leave the eviction node ON. It frees the ~16.5Β GB text encoder before the DiT loads. Images only: 3.4 min with it against 4.5 without, and the output is bit-identical β every pairing scored 0.00 mean pixel distance. With a reference video it is the difference between 6.5 min and a 46-minute run that was killed.
Use
ref_image_size = match, notmax. Same subject, same seed:maxcost 24% more time and rendered a facial scar as a vague smudge on the wrong eyebrow, with less fine detail. It does not buy fidelity.Prefer more references over bigger ones. Adding a third reference image cost nothing measurable β 2.82 min against 2.87.
Reference audio must be STEREO. The audio VAE encodes
[B, 2, L]and a mono clip produces half the rows it reserved, then dies deep in the model with no useful error. The stereo-guard node handles it; keep it wired. Audio costs about 14% wall clock and trims motion ~14β27%, which is the conditioning constraining the performance rather than stalling it.Reference video rules: minimum 5 frames, silently truncated to the generation length then trimmed to
n % 17 == 5, and shown to the encoder at 2Β fps.
If a render crawls
Check power draw, not utilisation. A card thrashing weights between system RAM and VRAM still reports ~98% utilisation while pulling a fraction of its rated watts. The tell in your log is:
loaded partially; 6423 MB usable, 5847 MB loaded, 19363 MB offloadedSample the wattage for 20β30 seconds before concluding anything. The encoder/conditioning phase at the start of every render is legitimately quiet β around 100Β W at ~35% utilisation β and one unlucky reading there looks exactly like thrashing. If it climbs past 400Β W once sampling starts, nothing is wrong.
What is in the download
H3_HardMode_R2V.jsonβ the reference-to-video graph, every node labelledworkflows/β the multishot AIO, long-form memory and keyframes graphs. These are also in the MiniMax-H3 Multishot pack you may already have; the copies here are relabelled so nothing shows a raw class name.reference_images/β three views of one synthetic subject, so the graph works the moment you load it rather than pointing at ComfyUI'sexample.pngHARD_MODE_GUIDE.htmlβ the full guide, including the parts above
The reference images are synthetic, generated for this release, and free to use. Weights are under MiniMax's own licence; the workflows and node pack are MIT.
Description
# Civitai "About this version" text for Hard Mode v1.1
Paste into the version notes box when uploading MiniMax-H3_HardMode_v1.1.zip:
---
**v1.1 β Chained shots, one master, with audio.**
By request: the same chaining the Multishot workflow has, now driven by your
references. Write one script β one prompt per shot, `---` between them β and
shot 1 renders in Hard Mode from your reference images (and optional voice
clip), while every later shot continues image-to-video from the previous
shot's last frame. The identity you cast in shot 1 carries down the chain in
pixels, and the segments join in-graph into **one master with audio**. Your
`<Picture N>` binding lines go in their own box and attach to shot 1
automatically.
Needs the node pack at **v1.5 or newer** (update via Manager or `git pull`,
then restart + hard-refresh). New in the pack alongside the chaining nodes: a
4-slot MODEL-only LoRA stack (drop in a 4-step turbo distill on both stages
for ~3x faster drafts β stacks ship empty = stock quality), an
`activation_reserve_gb` override on the loader that stops ComfyUI's
worst-case memory estimate from starving 24 GB cards at high resolutions, and
an experimental fix that lets reference images and start-frame keyframes
coexist in one ref2va generation (details in INSTALL.txt β the chained
workflow itself doesn't need it).
`H3_HardMode_R2V.json` (single shot) is unchanged and still included.
---
Upload checklist:
1. Model page > new version "v1.1" > attach MiniMax-H3_HardMode_v1.1.zip.
2. Paste the notes above.
3. Cover media: a chained render (2-3 shots) using the bundled REF2 subject
or another non-RIFT character β pending the render smoke + your eye.
4. Reply to Psi_Clone's comment after the version is live (draft delivered
in session 2026-08-06).
FAQ
Comments (3)
Unfortunately, the new hard mode doesn't chain prompts similar to how your other text-to-video workflow does. I was hoping it would chain prompts and also follow the reference properly in the new chains, but nonetheless, it's really amazing to extend the input image capability.
It does now! v1.1 uploaded
@joeygambinoΒ Testing it now asap!
Edit 1 - quick question - why does this use the frames model rather than the reference model for each new shot? Wouldn't that lose consistency, rather than taking reference just from memory and anchors?