MiniMax H3 Easy Sample
One node instead of the guider spaghetti
- h3_context
- model
- sampler
- sigmas
- sampling_plan
- sampled_latent
A vanilla MiniMax H3 graph is a pile of plumbing: SamplerCustomAdvanced fed by BasicGuider, RandomNoise, and a BasicScheduler, with the H3 context unpacked separately by MiniMax H3 Easy Output into conditioning, latent, both VAEs and fps. MiniMax H3 Easy Sample is that pile, collapsed into one node - and one of the three pack nodes that accept a SelfLift sampling plan, alongside Segment Sample and Sample Setup.
One thing worth knowing before you sink an evening into local H3: the weights are 33B and ~42.5 GB, and the Community License's "Applicable Territory" excludes the EU, UK, South Korea and the United States, so if you're in one of those places you aren't licensed to run the local weights at all (the hosted Hailuo API is the sanctioned path). The model is genuinely good - it was the launch-window darling for a reason - but it's a big local commitment.
What it actually does
The H3 Context is a bundle: conditioning, an AV latent (a video stream plus an audio stream), the video VAE, the audio VAE, and fps. Easy Sample pulls the conditioning and latent out of that bundle and runs Comfy's normal sampler over them using whichever sampler and sigmas you plug in. The author's own description is refreshingly honest about it: without a Sampling plan it is equivalent to the ordinary BasicGuider path. So if you like the stock workflow, you lose nothing. With a plan it hands execution off to the strategy - that's where SelfLift lives.
One hard rule in the code: the context has to come from the regular MiniMax H3 Easy node. If you built it with Context Segments, this node refuses and tells you to use Segment Sample instead.
The inputs and output worth caring about
h3_context- the H3 Context output of MiniMax H3 Easy. Not Context Segments, not anything else.model- the Model output of the Easy node, after whatever LoRA loader, attention backend or model patch you want in the chain.samplerandsigmas- this node doesn't choose them. You bringKSamplerSelectandBasicScheduler; the bundled t2v/i2v and SelfLift examples useeuler+simpleat 8 steps.seed- a plain INT with the usual control-after-generate widget, so randomize/increment/fixed all behave normally.sampling_plan(optional) - aMINIMAX_H3_SAMPLING_PLANfrom MiniMax H3 Easy SelfLift. Leave it unconnected for the plain sampling path.
The single output is sampled_latent, and it contains both streams. Wire it into VAEDecode using the video VAE from Easy Output and into VAEDecodeAudio with the audio VAE, then CreateVideo (taking fps from Easy Output) → SaveVideo. Skip the audio decode and you throw away the whole point of H3 - the native, jointly generated soundtrack.
Install
The pack needs a recent ComfyUI because it builds on the official MiniMax H3 nodes, so update first. In ComfyUI Manager search ComfyUI-MiniMaxH3-Easy and - per the README - select the Nightly version, because Nightly is what tracks the repo; other published versions lag. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/nkxx188/ComfyUI-MiniMaxH3-Easy.git
Restart after installing or updating Python files. Weights go in the usual places - models/diffusion_models/ (FL2VA and/or Ref2VA), models/text_encoders/, models/vae/ - and the 3D latent upscaler for SelfLift in models/latent_upscale_models/. Dependencies are just requests and psutil; there's no PyAV or ffmpeg requirement hiding in this node (Segment Decode is the one that wants ffmpeg).
Where people get burned
Wrong context, wrong node. "Use Segment Sample for a Context Segments H3 Context" means exactly that - you're holding the multi-shot plan in the wrong sampler. The sibling errors, "Connect the H3 Context output from a MiniMax H3 Easy node" and "The connected H3 Context has no sampleable conditioning or latent", both mean the wire or the upstream node, not this one.
Plan errors surface here. If you attach a SelfLift plan, its validation runs at sample time: Euler only, s_churn at 0, a rectified-flow (CONST) model, sigmas non-increasing. A dpmpp_* sampler or a weird custom sigma schedule fails this node, not the strategy.
Caching is on seed and plan. The node's change signal is the seed plus the plan, so re-queuing with the same seed and the same plan can reuse the previous result, and tweaking either forces a fresh sample. Handy when you're sweeping prompts; occasionally confusing the first time you forget you're on fixed.
It's still an H3 sample. This node is convenience, not a speedup. If your queue time is the problem, the answer is quantization, offloading, or a sampling plan - not a different sampler node.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| h3_context | MINIMAX_H3_CONTEXT | — | |
| model | MODEL | — | |
| sampler | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| seed | INT | 00–4294967295 | — |
| sampling_planopt | MINIMAX_H3_SAMPLING_PLAN | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sampled_latent | LATENT | — |