H3 Progressive · ONE Stage Conditioning (T8 EXP)
Prep a Prompt for Exactly One Stage
- positive
- negative
- plan
- positive
- negative
Two-stage sampling has an obvious, mostly-overlooked consequence: you can prompt the two stages differently. The small-canvas pass doesn't have to see the same text as the full-size pass. Most workflows for the progressive route give you one conditioning path and quietly reuse it for both passes, which wastes the only real editorial lever the split gives you.
This node prepares conditioning for one selected stage. You use two of them, or three if you're doing something odd.
What it does
Feed it positive, negative, and the plan from the Plan + LOW Source node, choose a phase, and it returns that phase's positive and negative conditioning, ready to wire into the matching sampler.
No model call happens. There's no CLIP in this node - the text encoding is upstream, in whatever normal H3 conditioning nodes you're already using. This is a layout/geometry fixup: H3's conditioning carries reference image latents and guide information that has to match the packed AV layout of the stage that will consume it.
The important asymmetry, straight from the node description: only the LOW reference latent is resized; HIGH retains its original guide. So the first-frame reference for the small pass gets scaled to the small canvas, but the HIGH pass keeps the target-resolution guide it was built with. Which is what you want - you're not re-encoding a low-res reference and hoping it survives the upscale.
Inputs that matter
- plan - from H3 Progressive · Plan + LOW Source. It's how the node knows your canvas, your split point and the AV layout.
- phase -
loworhigh. This is the whole node. Wire one node set tolowinto the LOW sampler and a second one set tohighinto the HIGH sampler. - guide_resize -
legacy_bilinearkeeps the original scaling behaviour;preserve_meanis an optional per-frame version that preserves the LOW first-frame latent's spatial channel means. It doesn't blend across time frames and doesn't touch HIGH's guide. If you're happy with your results, leave it alone. - positive / negative - your encoded conditioning for this stage's prompt. Different prompts per stage is fine and, honestly, the point.
Wiring it
Conditioning (LOW prompt) → ONE Stage Conditioning [phase=low] → LOW Sampler Only
Conditioning (HIGH prompt) → ONE Stage Conditioning [phase=high] → HIGH Sampler Only
If you're using Prompt Relay, use External Relay + ONE Stage Conditioning instead - not after. The Relay variant rebinds the packed layout for the Relay-bound MODEL and conditioning pair, and stacking an unpaired copy on top is exactly the mismatch the docs warn about. The Relay node carries the same phase and guide_resize controls, so nothing is lost by switching.
Install
Manager, search MiniMax H3 Audio T8. Or, if you prefer the terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
Restart ComfyUI afterwards - node changes only appear after Python reloads - then refresh the browser page.
There is no dependency to install. The pack's requirements.txt is deliberately empty of installable entries so it can't replace your Torch/CUDA stack, and optional EXP features check their own imports only when a workflow actually reaches them.
You'll want a current ComfyUI with native H3 support and the model set already in place: H3 base model, Qwen text encoder, video and audio VAEs. Without those you get red nodes before you ever get to conditioning.
Where people get burned
Using this node with a plan from a different run. The plan carries the split point and the layouts; condition a low phase with a high plan - or a plan from a graph you've since edited - and things get refused rather than silently misbehaving. Re-plan when you change canvas, scale or the split.
Reaching for this with Relay in the graph. The Relay adapter is a paired contract: Relay-bound MODEL with Relay-prepared conditioning, prepared by the node that knows it's doing Relay. A plain conditioning node doesn't carry that pairing.
And on prompts: the pack's own guidance here is the same as everywhere good prompt engineering happens. Global text - the character, the clothing, the location, the persistent sound - goes in the always-on prompt. Anything that happens once, including a line of dialogue, belongs to a local event with a timeline, not repeated in the global text. Split stages make that easier to honour, because each stage carries its own conditioning; they don't make a thrice-repeated prompt harmless.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| plan | T8_PROGRESSIVE_STAGE_PLAN | — | |
| phase | COMBO | low | 2 options: low, high |
| guide_resize | COMBO | legacy_bilinear | 2 options: legacy_bilinear, preserve_mean |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |