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:
🔁 Liberapay (recurring)
⚡ Or right here: the Civitai tip button on this page sends Buzz directly.
Type a story. Get one continuous video, with sound. Multi-shot scenes render as a single take - no last-frame chaining, no quality loss from shot to shot. That's the whole pitch.
Both workflows now read left to right: numbered lanes, and you only ever touch lanes 2-4. Everything below the main row is optional.
What you need
ComfyUI + this node pack (Manager: MiniMax-H3 Multishot, or the zip on this version).
A MiniMax-H3 checkpoint (links on this page). 24 GB card? Take a GGUF.
SEAMLESS CHAIN - multi-shot scenes as one take
Lane by lane:
README - the quick start lives on the canvas itself.
1 - MODELS - pick your H3 checkpoint and text encoder. VAEs are preset; LoRA slots are empty until you fill one.
2 - ANCHORS (optional) - a photo to open shot 1 on (enable its gate), and a short voice clip to lock the speaker's voice.
3 - YOUR PROMPTS - type your idea in the box, or point the switch at a prompt file. The writer expands it into shot prompts. Writing your own? Set the writer to
passthrough (raw JSON, skip LLM)and paste shots separated by---lines.4 - CONTROLS - size, frames per shot, steps, and
take_seconds(total length; 30 is a good first run). The switches stay off unless you installed the pack a switch names.5 - ENGINE - nothing to change. The remote encoder lives here if you want the text encoder on a second PC: enter its address, flip the encoder switch, free ~15 GB.
6 - OUTPUT - your video and its audio save here.
Optional panels below the main row: reference images (your character, ref2va checkpoints - folder per character + AUTO REFS on), V2V reference (a clip whose look guides the render), FFLF plates (flf_chain mode only), audio spine (a soundtrack the take follows).
EXTEND TAKE - one person talking, as long as you want
Same lanes, different job: one premise becomes ONE continuous speech cut across windows.
1 - MODELS - same as above.
2 - ANCHORS - a photo of your speaker (shot 1 opens on them) and a voice clip. More useful here than anywhere: one person carries the whole take.
3 - YOUR PROMPT - ONE premise, one speaker. The writer writes the whole speech. num_shots 0 = it decides. Passthrough works here too.
4 - CONTROLS -
take_secondsis the star: 30 ships, 60 clears TikTok's minute.windowstays on auto - it sizes itself to your card.5 - ENGINE / 6 - OUTPUT - same as above.
Keep takes to about 4 windows for now - very long takes slowly sharpen.
Rules of thumb (both workflows)
Spoken lines: 8-12 words per shot. Short lines sync; long lines garble.
Say the sounds you want ("rain on the roof, a fridge hum") or it invents its own.
Keep your character's face in frame - faces carry identity between shots.
If something breaks
Red node? Update the pack in Manager, restart, reload the workflow from disk.
Render crawls at low wattage? Lower resolution or frames per shot, or use the remote encoder.
Only one of the two workflows shows in your sidebar? Fixed in 2.6.5 - re-download both.
Still stuck: comment with your console log. I answer.
Deep dives: the two articles linked on this page. Every lane also has a short note on the canvas.
Detailed guide for people that can read good:
Every setting explained: the Seamless Chain deep manual | Civitai
Description
Keyframe positions get percentages and ranges, keyframes take an image batch, and the model loaders stop hiding your GGUFs.
Keyframes: image batches, percentages and ranges
Two contributions from @poltergeisha360, who asked for the first one here on Civitai and then wrote both himself and sent pull requests (as @viralesveras on GitHub).
An images_batch input. Six individual slots runs out quickly if you want several frames clustered at each end to pin complex motion, or a set of frames kept from a source video. The batch takes any number of anchors. Merged with one change: it adds to the six individual slots rather than replacing them — as originally written, wiring image_1 and then adding a batch dropped image_1 silently.
Percentages and inclusive ranges in positions. This fixes a genuine trap of mine: a bare 1 meant the last frame, not frame 1, so addressing an early frame absolutely meant writing 1.0001. That is how the ambiguity got found — in real use.
0%, 50%, 100% percentages
0, 121, 242 absolute frame indices
0-9, 352-361 inclusive ranges
30%-20% descending: reverses that section of the batchYour existing workflows keep working. A bare non-integer at or below 1.0 is unambiguous — nobody means "frame index 0.5" — so a saved 0, 0.5, 1 is still read the old way, and logs the percentage spelling to switch to. An all-integer 0, 1 is genuinely ambiguous, so it takes the new absolute meaning and warns, rather than silently anchoring a different frame than it used to.
Loaders find GGUFs in subfolders
Both model loaders scanned only the top level of diffusion_models and text_encoders, so anything kept in a gguf/ subfolder was invisible in the dropdown — while ComfyUI-GGUF's own loader listed the same files fine. They walk the tree now.
If your models showed up on one machine and "disappeared" on another, this was why: the scan exists because .gguf is not in ComfyUI's supported_pt_extensions, so the normal file list never returns it. It just was not recursive.
New models: curve-form GGUFs, ~40% smaller
Not part of this zip, but worth knowing about — there is now a second DiT repo carrying -curve- files built from MiniMax's pruned checkpoints. About 40% of this model was never unique data: each block carried a 96768×2688 modulation matrix, and those turn out to be a smooth function of the timestep rather than 51 independent tensors.
TierCurve formOriginalQ8_021.5 GBnever built — too large to be worth itQ5_115.2 GB25.9 GBQ4_011.5 GB19.9 GB
That Q8_0 is smaller than the Q5_1 that has been shipping since day one, and it fits a 24 GB card. Verified by rendering, same graph and same seed, changing only the model file: swapping to curve form moved the output about a third as far as dropping one quant tier does, with per-frame motion in family. Files and the full comparison table are on Hugging Face — a separate repo, so the original-form quants stay where they are for anyone on an older ComfyUI or who prefers the larger files.
Curve files need ComfyUI 0.30.0+. On older builds they will not load at all, because the shape of the modulation weights changed. The original-form files remain up for anyone pinned to an older version.
Full contents
H3_Multishot_AIO.json— easy mode: one script to many chained shotsH3_Multishot_MEMORY.json— 2–5 minute pieces with an identity anchorH3_Keyframes.json— anchors at any position, single pass, unbroken audio
Every one of those three has a render on disk that its own node produced, verified from the render's embedded graph rather than from the file existing.
FAQ
Comments (12)
hello and thanks for your work. You wrote " RTX 5090: ~60 min → ~15 min ". For wich width/ height and laps of time/frames ?
Good catch - that line's missing its conditions, and now that I've gone back to the logs it's also just not a good pair of numbers.
The real run, pulled from the render's own embedded workflow:
960 x 544, 124 frames (5.2 s at 24 fps), 20 steps
ref2va-Q5_1, one reference image, RTX 5090, --reserve-vram 7
-> 12.3 minutes with the encoder evicted
The un-evicted version I killed somewhere past 90 minutes, so it never finished. That means "~60 min" is a number I don't actually have, and "~15 min" was 12.3 rounded up. I'll fix the model page - thanks for asking instead of trusting it. A properly controlled pair, where both sides ran to completion or a deliberate cut-off (480x864, 124 frames, one reference VIDEO):
no eviction: killed at 46 min, 98% "utilization" at ~172 W
eviction on: 6.5 and 7.7 min on two clean runs, 355-390 W
The thing that matters more than any ratio: this is a cliff, not a curve. The Qwen3-VL encoder is ~16.5 GB even at Q4 and the DiT is ~25 GB, so on a 32 GB card they just don't co-fit. Either the DiT is resident and you get normal speed, or it streams ~19 GB from system RAM every sampling step. How bad it gets depends on how far over your card you are - which is why quoting one speed-up ratio was misleading of me regardless of the numbers.
Two tells. In your log:
loaded partially; 6423 MB usable, 5847 MB loaded, 19363 MB offloaded
and on the card, watch POWER DRAW, not utilization. A GPU thrashing weights between RAM and VRAM still reports ~98% while pulling a fraction of its rated watts. 146-172 W on a 5090 is thrashing; 400 W+ is real work. I chased the utilization number for hours before the wattage told me what was going on. If you're on 24 GB, the curve-form Q8_0 is worth a look - 20 GiB resident on a 3090 with room to spare, 6.8 min for 123 frames, and it's smaller and faster than the original-form Q4_0.
Is it just me that face, eye and lip artifacts have decreased with 1.3? Anyway, great update.
Thank you!
Seen someone mention in discord that heunpp works really well for better audio. But I don't see a way to change it in this node. Have you tried this heunpp?
I will work on exposing the sampler and scheduler in the AIO node for the next version, likely have it up tomorrow.
My experience with heunpp2 has been very positive for audio but it is slow. Very slow. Maybe twice as slow as res_multistep.
@JustTrying2026 v1.4 uploaded with sampler and scheduler exposed
@aikoyama heunpp2 is indeed a bit more than twice as slow as res_multistep, but it definitely results in higher quality generations, at least when it comes to motion artifacts.
@Undecked I am about to tell this myself, along with res_2s. beta57 and/or bong_tangent.
Have you done any testing for taking an existing video and extending it? MiniMax H3 has the capabilities to do so but from my own testing is oftne has issues with audio or color grading. I was wondering if a similar method coould be applied there as well (as in, take an existing video + prompt as as the first 'shot' instead of just an image + prompt)
I have not yet, but I will put it on the list for next workflows!
