Nodes/MiniMax H3 Image Gen - SatoDive/H3 Draft Grid - SatoDive
ComfyUI Node

H3 Draft Grid - SatoDive

Roll eight cheap drafts and let the node tell you which one is sharpest

By SatoDive·Created 6 days ago·Updated 2 days ago· 21
H3 Draft Grid - SatoDive
  • model
  • vae
  • positive
  • latent
  • model
  • drafts
  • preview
  • best
◄drafts4►
◄seed0►
◄lora_name▾►
◄steps20►
◄lora_strength0.38►
◄sampler_nameer_sde►
◄schedulersimple►

Seeds are the cheapest quality lever in diffusion, and this node is built around that fact. Give it a prompt and a still latent, and it renders several drafts back to back, decodes them all into one image batch for a preview grid, scores them, and hands you the latents plus the index of the sharpest one.

The point isn't the grid. It's that you spend your sampling budget finding a good composition cheaply, then spend the expensive refine pass on one draft instead of eight.

How it works

H3 only samples batch size 1, so there's no clever batching here - the node just loops. Draft i uses seed + i, so up to 8 drafts from one seed field, and each one is a full sample at whatever steps you set. Lower the steps while drafting: with a 4-step turbo LoRA, 4 steps per draft means eight candidate compositions for roughly 32 steps of total work.

Then it decodes each draft and scores them. The metric is the variance of the Laplacian of the luminance channel - a bog-standard sharpness proxy. High variance means lots of edge energy, which usually means detail rather than mush. It's not a taste detector, and it will happily pick the busiest of eight mediocre images, but "sharpest" is a good tiebreak when the alternatives are all near-identical.

The outputs, in order: model (the model with your LoRA already applied - pass this downstream so you don't re-apply it), drafts (the drafts stacked into one batched H3 latent), preview (an IMAGE batch of every draft, so a single Preview or Save Image node shows the grid), and best (a 1-based INT).

Inputs you care about

model, vae, positive, latent come from your loader and H3 Prompt & Size. Then drafts (1–8, default 4), seed, lora_name, steps, lora_strength, sampler_name (default er_sde), scheduler (default simple). No CFG, no negative - H3 is single-conditioning, as the rest of this pack assumes.

A practical split: use Fast draft thinking here - few steps, and if you're bringing reference images along, ref_image_size = match on the prompt node. Once you've picked a winner, the refine pass is where you turn it up.

Wiring it up

model, drafts and best are shaped exactly for H3 Refine Winner: drafts into its drafts input, best into its optional auto_pick input, model into its model. That gives you a two-node pipeline - draft grid, then refine the pick - with the drafts cached upstream so changing the pick doesn't re-render them.

preview goes anywhere you'd put an image, including a Save Image node if you want the grid on disk.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/SatoDive/ComfyUI-H3-IMG-Gen-SatoDive

ComfyUI Manager → ComfyUI-H3-IMG-Gen-SatoDive (MiniMax H3 Image Gen - SatoDive), restart. Nothing extra to pip install; you need a ComfyUI build with the native MiniMax H3 nodes, and a turbo LoRA in models/loras if you want the cheap-draft strategy to actually be cheap.

Gotchas

Eight drafts is eight full samples, one after another. There's no parallelism to exploit - H3 won't batch - so the wall-clock cost is linear in drafts. Four is the default for a reason.

best is 1-based, and that off-by-one is load-bearing. The Refine node's pick input is also 1-based, with 0 meaning "use auto_pick". If you're wiring this into anything else, remember draft 1 is the first one, not index 0.

The scorer ranks sharpness, not correctness. A draft with a mangled hand and crisp fabric will out-score a clean one with a soft background. Look at the preview grid yourself before you commit - the auto-pick is a convenience, and the honest framing is that it removes one round of squinting, not the need to look.

Memory creeps. Every draft's latent is kept so they can be stacked into the drafts output, and each decoded image is held for the preview batch. Eight drafts at 3 MP is a non-trivial pile of tensors sitting in RAM and VRAM at once. If you're on a small card, draft at fewer megapixels and refine at the size you actually want.

CategorySatoDive/H3

Inputs (11)

NameTypeDefaultDescription
modelMODEL—
vaeVAE—
positiveCONDITIONING—
latentLATENT—
draftsINT41–8How many drafts. Rendered one after another (H3 only supports batch size 1).
seedINT00–18446744073709550000—
lora_nameCOMBO1 options: None
stepsINT201–200—
lora_strengthFLOAT0.380–2—
sampler_nameCOMBOer_sde44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOsimple9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3

Outputs (4)

NameTypeDescription
modelMODEL—
draftsLATENT—
previewIMAGE—
bestINT—