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
2.6.3 — the prompt the model was trained to read
This version rolls up 2.6.2 and 2.6.3. Update by replacing the node pack folder (or update in ComfyUI Manager) and reloading the workflows from the zip. Your saved canvases keep working - nothing about the node layout changed.
Prompts now match MiniMax's own spec
MiniMax published the exact prompt format H3 was trained on. This release closes every gap we found between that spec and what the pack actually sent:
Reference prompts go out in the documented section order. The section that defines who
<Subject 1>is now comes BEFORE the description that uses it - it used to be appended after. Two sections that were never sent at all are now included, and one of them finally tells the model "no background music" outright.Both samplers explain the reference images. Attached photos arrive labelled
<Picture 1>,<Picture 2>... and only one of the two samplers ever told the model what those labels meant. Now both do - and a frame carried between chained shots is declared as the shot's starting frame instead of being mistaken for a face reference.Keyframe modes send the documented alignment line. First frames, last frames and boundary plates now announce themselves the way the model was trained to read them. Three paths sent nothing before.
Removed a self-defeating negation. The reference block used to say a second character is "never blended with" the first. There is no negative prompt at cfg 1.0, so that sentence only put the idea of blending INTO the render. It now states what each person keeps instead.
Auto Refs: five characters no longer cast three
The automatic scan stopped at the first three characters it found. With five, two of them got no photos while the writer still pointed them at "the reference photographs" - and a character pointed at photos that do not exist renders as a random person. The scan now takes up to nine characters and splits the model's nine photo slots across everyone it matched (2 characters keep 3 photos each, 4 get 2, five or more get 1), and prints the split. Fewer characters per run still holds a face more firmly - but every named character now casts somebody.
One number for window length
In extend-take mode the frames_per_shot box was silently ignored - a window sized for your card took over. Now window = auto follows the frames_per_shot you typed (snapped to the legal grid, and the console says so), picking an explicit window still wins, and the old card-aware sizing is still there as fit this card (VRAM auto) - choose it when you want the fewest joins that will not thrash rather than an exact length. The shipped workflow is set to 243, which is exactly what it rendered before.
Remote encoding: fails fast, starts fast
A wrong or unedited address on the remote text encoder used to surface at the first encode - AFTER the LLM writer had spent minutes on a script that then went in the bin. The node now checks the address the moment it runs: empty box, untouched placeholder, or unreachable host each fail in about a second, with the fix named in the message.
First shot no longer crawls. With the encoder on another box, models left over from your PREVIOUS run were never cleared, the memory planner saw a full card, and shot 1 ran 2-3x slower than shot 2 (measured 65 s/it against 27). Both samplers now sweep leftovers once before the first model load and print what they cleared.
New in the pack
H3 Retake - redo one stretch of a finished clip and keep the rest. Load the clip, set a time window, write a prompt for that moment. Picture and sound are independent: redo both, keep the performance and change the picture, or keep the picture and change the line.
The prompt picker now lists EVERY registered prompt folder - a corpus added through
extra_model_paths.yamlused to sit invisible.Writer rules: recurring characters keep a readable face in frame and every shot ends on the face (identity re-locks from a shot's closing frames - a shot that ends on the back of a head hands the next shot a stranger); anything uncanny never turns to the lens and the world never reacts on cue; the camera is directed in the model's own trained vocabulary, with "holds a static shot" as the way to hold still - never "does not move", which freezes the frame.
Writer node: local Ollama endpoints get a proper context size - the 4096 default silently truncated long system prompts.
FAQ
Comments (16)
You saw that new latent upscaler similar that ltx have? https://huggingface.co/LBH-123-AI/Minimax_h3_latent_Upscaler
can you ad it to wf?
I did not see that, actually, I will check it out, thanks!
I'd appreciate if someone could translate this stupid AI generated 'explanation'? text into normal English. Or Chinese or Japanese or ANY language google translate can turn into understandable English for a normal human being. Thank you!
Which explanation? This isn't an easy-mode workflow. But you'll have to be far more specific about what you don't understand to get an explanation for you translated into smaller words.
@joeygambino It is not that I cannot understand OTHER explanations that are written in English. Yours read like they either come from some obscure ancient language auto-translated with 2015 version of google translate or maybe you just want to sound 'cool' (or asked the AI to sound that way?) and not to convey what the workflow actually does. In case you don't speak English yourself and wrote this yourself in your native language I would HIGHLY! recommend using a better LLM method to turn this into English because even though the words are correct, it is very poorly written if you want other users to UNDERSTAND how to use the workflow. I really appreciate the effort you put into this and I wanted to give your workflow a try, because my own workflows currently only chain shots by using the last frame which makes the output degrade noticeably with each shot.
A major critique I have for the workflow itself is the alignment of nodes. People read from left to right (in most parts of the world) and from top to bottom. So your graph should flow from left to right as well. All things to read for the general workflow on the left, then inputs and switches on the left of the actual graph, then the logic/sampler in the middle and the output on the right side. This makes the whole workflow fit a bit worse on a 16:9 30" monitor for sure and you will need to scroll a bit, but you can at least follow what is going on and know where to look.
People can re-align the elements if required if they don't want to scroll, but to UNDERSTAND what is going on, having this rectangular alignment is a major hurdle (I know that YOU might be able to work with it as you know your way around it, but as you don't release this for you but for others, this prevents them from understanding what is going on).
As an aside: an 'one workflow does it all' is nice IFF you fully understand everything. But people want specific things. I personally want to use a ref2va workflow with one start image and one or more reference images for the global scene as reference and maybe 1/2 images for specific characters and then chain say four 15s shots together for a 1 minute. That is MY use case. And I assume your WF would be able to do that. I DON'T want the prompts to be LLM rewritten in the workflow as I do that in my LLM externally and can then easily re-use the prompts multiple times without the need to load the LLM again.
What you could/should do is to have a table with one row for each use-case and then for each use case which settings are required to make the workflow perform this specific act.
I was on 2.6.1 now going to check out 2.6.3 but I have a question, I was doing fully manual prompting - I was trying to manually stick to the H3 official spec for ref2va (6 sections etc) - with the prompt enhance node bypassed and not selecting folder prompt, is there anything in the workflow that is "altering" the prompt I manually send in?
Related to that, if I use a start_image ref_images, I assume start_image is always <Picture 1> in the prompt? Or any guidance on which input slots take precedence would be helpful. I assume the other keyframe images other than start_image (anchor) one cannot be used in ref2va move though.
edit: One interesting thing, with 2 ref image and 1 start_image, I refer to the start_image as <Picture 1> and the refs as 2 & 3, stating that <Picture 1> is the fully preserved start frame, and that seems to work. The console reads as 2 ref images carried in everyshot.
Thanks for the free workflow, but consider consolidating the documentations and instructions and switches in one place somewhere in the workflow instead of going where's Waldo with all the notes.
Also I can't tell if any of the switches are working because the nodes aren't coloured in/faded when the switch is set to 'off'.
I get what the workflow is trying to do but after an hour its still throwing errors and untangling everything is a headache.
If you have error, post them, and I'm happy to help. The switches work when they're on, and they don't work when they're off. Visual design isn't my forte, but I'm not going to add pretty colors just to define how a switch works. Obvious things are obvious. I've been more than willing to offer help - as can be seen from my responses to everyone else - if asked politely.
It's not an easy-mode workflow and it requires effort - both to build, and to use. ComfyUI provides several templates for people who want things to work out of the box.
Hey thanks for the Easy Mode WF, and double thanks for keeping it neat and organized, the previous WF that I downloaded was messy and all over the place. Thank you,
I totally agree. It was working but oh boy it was a hassle to set up kinda...
I appreciate your work with this workflow, I really do. But I have to say that I have honestly never seen such a weirdly structured workflow.
There seems to be no hierarchy. Things that should be clustered together are all over the place. Things are missing or at least I can find them.
There are two reference images but why can't I add audio along the two reference images (1 audio file per ref image)
The comments speak of toggles that are not there. E.g. in the prompt are there seems to be a toggle missing to switch between free mode and llm mode. I might not be able to find it again though.
Usually I have no problems following a workflow even though it's quite complicated because I can orient myself on the structure and follow along. No chance with this workflow.
I also don't see any visual feedback when I toggle something on or off.
I uploaded Easy Mode a little while ago. I'm not sure how to make it any more user friendly. Anybody is welcome to change things at will. If you want visual feedback for toggles, you can add it, my brain just knows on = on and off = off. I am just sharing things I use for myself, what people do with them is up to them. Unfortunately, I can't tailor the workflows for every single person, and the great majority of the ~7,000 people that have downloaded them seem to be doing alright. If you need specific help with something that isn't working, just ask, I am always happy to explain things to the best of my ability.
What settings would you recommend so I can get the audio working properly? I'm not sure if the issue is in the sampler settings or somewhere else. I've tried both with and without the Turbo LoRA. I usually use minimax_h3_ref2va_pruned_int8_convrot and 20 steps (I also tested MiniMax-H3-ref2va-curve-Q5_1.gguf). The audio usually has strange mumbling, artifacts, or other weird noise. I haven't really tested anything other than this workflow of yours, so I can't say yet if my settings are somehow wrong in this specific workflow. There are no issues with the reference audio / spine, but when MiniMax generates the audio itself, it sounds absolutely terrible :D
This is almost usually prompt-side, not sampler-side. In order of likelihood:
Put dialogue in straight double quotes. H3 only speaks clean words that are quoted in the prompt: He says, "The lights came back on around three." If there's no quoted line, the model fills the speech space with exactly the muttering you're describing. One quoted line per shot works best.
Size the line to the shot. Roughly 2 words per second — a 10-second shot wants a 15–20 word line. A 3-word line in a long shot gets padded with mumble.
Name your sounds. Whatever the scene should sound like, say it outright: "rain ticking on the window, a refrigerator hum, distant traffic." If the prompt says nothing about audio, H3 invents it, and it invents weird.
Check the audio VAE is minimax_h3_audio_vae_fp32.safetensors — a half-precision or third-party audio VAE produces static-y, smeared audio no matter what the sampler does.
Steps: leave them at the workflow default (14, euler/beta57). 20 doesn't help and can hurt with the Turbo LoRA stacked.
About that ref2va_pruned_int8_convrot file — that's not one of ours, and pruned cuts can gut the audio layers specifically while video still looks fine. Our Q5_1 GGUF that you tested is audio-safe, so do your comparing on that one. (And if you use voice reference clips: they must be stereo — mono refs break the audio path.)
If it still mumbles after 1–3, post your prompt text and I'll take a look.
I am new at this. I love this workflow. Works amazing and it is so easy to use. it works better than other workflows I used before with Ref images. I do have one question: I put the prompt with the scenes divided by --- and it does a great job. Amazing actually. But I thought this was a multi shot as in stitching the shots together to create longer videos. I can only do 20 seconds (481) frames. I am happy with 20 seconds but I was wondering if I am missing something. If I increase the shot count to 2 it basically reruns the whole thing. I am doing it wrong, right?
You're doing it right — one detail is hiding from you. The stitched long video is saved to a separate folder, not the preview you see in the workflow:
Keep your scenes split by --- exactly like you're doing. One block = one shot.
Set shot_count to your number of scenes (or 0 to count them automatically). Each scene renders as its own segment and they're joined with the character, voice, and look carried across.
The finished long video is written to ComfyUI\output\video\H3CHAIN_STREAM\master_00001.mp4 (number goes up each run). The video node inside the workflow only shows a short placeholder when the low-RAM master option is on — that's why it looked like it just re-ran the same 20 seconds. The console also prints the exact path on a "master written:" line.
Length = scenes × your frames setting. So 481 frames with 3 scenes ≈ a 60-second master (each segment replays about 1 second of the previous one to stay seamless, so it's a touch under).
Tip: write each --- block as the next beat of the same story, and repeat your character's description words in every block — the joins hold better. If shot_count is higher than your number of blocks, the last block just continues — that's intentional.
Glad it's working for you — this is exactly what multishot is for.