Muse Minimax Refine V2 (Beta-matched)
The second pass that finishes only the Seed Hunt candidate you like
- clip
- vae
- audio_vae
- model
- candidate_1_latent
- candidate_2_latent
- candidate_3_latent
- candidate_4_latent
- ref_images
- first_frame
- last_frame
- ref_audio_1
- ref_audio_2
- ref_audio_3
- images
- audio
If you've seen the Muse MiniMax Director's Seed Hunt, the pitch for this node is short: why run four full-resolution passes to find a good seed when you can scout four cheap ones and pay for one expensive finish? Muse Minimax Refine V2 is the "one expensive finish." It's bundled in the same repo as the Director, and it's what you wire the scouted candidates into when you've picked the one that actually followed your prompt.
The important thing to understand is what it is not. Refine isn't an img2img pixel re-sample or a "sharpen the video" pass. It's a genuine latent continuation: it takes the chosen candidate's own Stage-1 latent - the exact noise state where sampling stopped - and picks up that candidate's sigma schedule from there, finishing at a higher resolution with the same learned latent upscaler the Director uses for its own Stage 2. Nothing about the candidate's content changes, only its resolution. That's why it's called "Beta-matched": this V2 node was originally built to pair with a two-stage scouting Director, got accidentally deleted, and was recovered and reinstated in this repo precisely because it's the one that matches this Director's two-stage/Seed Hunt mechanism.
The flow
On the Director, run two-stage sampling with Seed Hunt on and Latent-Only Scouting (two_stage_seed_hunt_latent_only) on - that's what makes each scout stop after the cheap Stage 1 and exposes the continuable latent on the candidate_1..4_latent outputs. Wire those four into Refine's matching inputs, then click the candidate button in Refine's own UI.
The inputs that matter beyond that: candidate starts at 0, and the node deliberately refuses to run until you pick one - there's no silent "just use candidate 1." prompt takes the Director's compiled_prompt (ignored for multi-chunk candidates, since each chunk already carries its own saved prompt). Wire ref_images from the Director's ref_images_used output so identity stays anchored - without it, any detail the prompt doesn't spell out is free to drift. Same for ref_audio_1/2/3 from the Director's ref_audio_1_used etc., if the original used voice references. model, first_frame, and last_frame are all optional: leave them unconnected and Refine auto-uses whatever the Director embedded on the chosen candidate. Outputs are plain images and audio, straight into your usual Video Combine node.
For a multi-chunk candidate it gets smarter: Refine detects that the latent carries several chunks, refines each in turn, and re-anchors continuity from the previous chunk's freshly refined output the same way the Director does between its own chunks, so the seam survives the resolution bump. raw_latent_carry_test (on by default) is what hard-freezes each continuation chunk's opening against the previous refined chunk's real latent, rather than the weaker pixel re-encode carry.
Install
Same install as the Director - it's the second node in the same package:
cd ComfyUI/custom_nodes
git clone https://github.com/muse-collective-26/MiniMaxH3-Director-V1.2
...or search Muse Minimax Director in ComfyUI Manager and restart. Because Refine's own two-stage finish uses the same latent upscaler family, it shares the Director's two less-obvious requirements: a latent-upscale checkpoint in ComfyUI/models/latent_upscale_models/, and ComfyUI-H3-Motion-Context-MultiRef for the multi-chunk carry. Model weights come from MiniMaxAI/MiniMax-H3 on Hugging Face - see the Director article for the license caveat, which matters here too.
Where people get burned
Two settings behave like traps until you know the reason. seed, steps, and two_stage_first_pass_steps must match what the chosen candidate's Stage 1 was actually generated with - Refine reconstructs the same sigma schedule to continue exactly where sampling stopped, and a mismatched seed means continuing the wrong noise curve from the wrong place. And if Refine "does nothing" with no popup, you're probably refining a candidate slot that never ran - scout only two candidates and click candidate 3, say, and you get a clean block with a console-only warning. (An older version used ExecutionBlockers for empty slots, which silently stopped Refine from running at all whenever you scouted fewer than four; that's fixed.) Pick the right button and the whole flow - scout cheap, refine once - is the closest thing MiniMax H3 has to a sensible production loop.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| vae | VAE | — | |
| audio_vae | VAE | — | |
| prompt | STRING | Wire this from the Beta Director's compiled_prompt output. Ignored for a multi-chunk scouting candidate — each chunk already carries its own saved prompt, used instead. | |
| candidate | INT | 00–4 | Which of the four candidate slots to continue. Set by the button selector in the node's UI. Defaults to 0 (none picked yet) — the node deliberately refuses to run at 0. |
| ref_image_size | COMBO | match | Only used when ref_images is connected. 'match' scales references down to the output's pixel area (faster). 'max' keeps up to a 2048px short edge for stronger identity fidelity, but reference tokens ride every sampling step so it's several times slower. |
| seed | INT | 00–18446744073709550000 | Must match the seed the chosen candidate was actually generated with. |
| steps | INT | 81–100 | Hidden — the real value is restored automatically from the chosen candidate's own Stage-1 generation. |
| two_stage_first_pass_steps | INT | 21–6 | Must match the First-Pass Steps the candidate's own Stage 1 used. |
| sampler_name | COMBO | euler | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | beta | 4 options: simple, normal, beta, sgm_uniform |
| two_stage_latent_upscale_model | COMBO | Which trained latent-upscale checkpoint to use (from ComfyUI/models/latent_upscale_models/) — same model family the Beta Director's own two-stage upscale uses. Real learned network, not interpolation. | |
| two_stage_target_megapixels | FLOAT | 1.00.2–2 | Target resolution for the upscale, in megapixels — matches the upscaler node's own 'megapixels' sizing mode (aspect ratio preserved, pixel-aligned to 32). |
| raw_latent_carry_test | BOOLEAN | true | For multi-chunk candidates only. Genuinely freezes each continuation chunk's own opening latent using the PREVIOUS refined chunk's raw final sampled latent (no VAE round trip) — the same mechanism the Beta Director's own raw_latent_carry_test uses, confirmed via a real render + frame dump to be the one that actually constrains room/prop geometry across a chunk boundary. Off falls back to this node's original always-on pixel-VAE-reencoded carry (weaker, but needs nothing extra installed beyond ComfyUI-H3-Motion-Context-MultiRef, same as either mode). |
| timeline_data | STRING | {} | — |
| modelopt | MODEL | Leave unconnected to auto-use the model the Beta Director embedded on the chosen candidate (_muse_model_used). | |
| candidate_1_latentopt | LATENT | — | |
| candidate_2_latentopt | LATENT | — | |
| candidate_3_latentopt | LATENT | — | |
| candidate_4_latentopt | LATENT | — | |
| ref_imagesopt | IMAGE | The same reference photos the original candidate used — without these, fine detail (exact props, skin, likeness) that was only ever anchored by them may drift. | |
| first_frameopt | IMAGE | Leave unconnected to auto-use the first-frame keyframe embedded on the chosen candidate (First/Last Frame and Hybrid modes only). | |
| last_frameopt | IMAGE | Same as first_frame, for the last-frame keyframe. | |
| ref_audio_1opt | AUDIO | The same reference audio clip(s) that anchored voice in the original candidate — wire from the Beta Director's ref_audio_1_used/2_used/3_used outputs. | |
| ref_audio_2opt | AUDIO | Same as ref_audio_1, for Ref Audio 2. | |
| ref_audio_3opt | AUDIO | Same as ref_audio_1, for Ref Audio 3. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |