Nodes/ComfyUI-MiniMax-H3-Studio/H3 Studio • Text to Image
ComfyUI Node

H3 Studio • Text to Image

Text to image from a model that technically does video — here's how it works

By thaakeno·Created 17 days ago·Updated 5 days ago· 79
H3 Studio • Text to Image
  • clip
  • positive
  • h3_latent
  • requested_frames
  • image_prompt
  • run_info
prompt
width1344
height768
quality_profilerecommended | 5 frames
optimize_for_stilltrue

Here's the odd thing about MiniMax H3: it's an omni-modal audio-video model, and you want a single still image out of it. That's not a contradiction - it's the entire trick behind H3 Studio, and H3StudioTextToImagePrepare (H3 Studio • Text to Image) is the node that does the conversion. It takes your prompt and target canvas and produces the two things H3 actually needs to paint a still: FL2VA text-to-image conditioning, and a short temporal packet - a handful of video frames sampled together - packed into an H3 audio/video latent, from which a still gets selected later.

What it actually is

The prompt-only, no-references entry point to H3's FL2VA path. You hand it a CLIP (the MiniMax H3 Qwen text/vision encoder), a prompt, a canvas size, and a quality profile, and it returns conditioning plus a latent you can feed straight to sampling. One deliberate design choice worth knowing: it does not take a VAE. The H3 video VAE only appears downstream, at decode time, so you can prepare and iterate on conditioning without loading the heavy decoder.

How it works

The quality profile is where the video-ness hides. H3 generates a burst of frames and one of them becomes your still, so the profile chooses how many: 5 frames is the recommended speed/quality balance, then 9, 13, and 20 frames of "maximum quality" - more temporal context for H3 to work from, at a much slower run. There's also an experimental 1-frame image-VAE profile for when you want to sample a single latent. With optimize_for_still on (the default), the prompt gets wrapped with a locked-camera still-image instruction - a prompt change only, not a change to frames, resolution, steps, sampler, or weights.

The inputs that matter

  • clip - the H3 32B text/vision encoder, wired from your CLIP loader.
  • prompt - describe the final still: subject, composition, lighting, style. Multiline and dynamic-prompt aware.
  • width / height - defaults 1344×768, in 32px steps up to 16384. The tooltip's advice is the real advice: connect an H3 Image Resolution node instead of typing raw numbers, because aligned H3 canvas sizes are fiddlier than they look. Also note the README's honest warning - more pixels is not more learned detail on H3 Base.
  • quality_profile - the frame-count slider described above. Start at recommended | 5 frames.
  • optimize_for_still - leave on unless you're deliberately keeping a video-ish framing.

Wiring the outputs

Five outputs, and the wiring is easy to follow:

  • positive (CONDITIONING) → your sampler's positive input.
  • h3_latent (LATENT) → your sampler's latent input.
  • requested_frames (INT) → the number of frames H3StudioDecode (Exact Frame Decode) should preserve and decode - feed it there so the right frame count survives.
  • image_prompt (STRING) → the final prompt after optional optimization; handy for inspecting what actually went in.
  • run_info (STRING) → a report of the temporal packet, canvas, checkpoint expectations and recommended output strategy.

Install

Part of the H3 Studio pack - ComfyUI Manager (search ComfyUI-MiniMax-H3-Studio) or:

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/thaakeno/ComfyUI-MiniMax-H3-Studio.git
cd ComfyUI-MiniMax-H3-Studio
python -m pip install -r requirements.txt

Restart and hard-refresh. Before it can generate you need the actual H3 stack: a pruned FL2VA diffusion model in models/diffusion_models/, the MiniMax H3 32B conditioning encoder in models/text_encoders/, and the H3 video VAE in models/vae/ (the VAE only at decode). Nothing is auto-downloaded.

Where people get burned

The biggest conceptual trap: this is the FL2VA path, so it will not silently consume uploaded references - a prompt-only generation stays prompt-only, and if you want references you use the reference-edit path instead. Don't chase huge canvases expecting super-resolution behavior; H3 Base isn't a dedicated image upscaler, and 8MP canvases cost serious attention and VRAM for no proportional detail. And if your still comes out soft, the profile isn't the culprit - that's the difference between the normal video VAE and the experimental T=1 image VAE, which trades sharpness for speed. Alpha pack, classic frontend only for now.

CategoryH3 Studio/Runtime

Inputs (6)

NameTypeDefaultDescription
clipCLIPMiniMax H3 Qwen text/vision encoder.
promptSTRINGDescribe the final still image, including subject, composition, lighting and style.
widthINT134432–16384Output canvas width. Connect an H3 Image Resolution node for safer presets.
heightINT76832–16384Output canvas height. Connect an H3 Image Resolution node for safer presets.
quality_profileCOMBOrecommended | 5 frames5 frames is the recommended speed/quality balance. 20 frames gives H3 more temporal context and is much slower. The complete profile reaches Single Image Output, which returns one selected still unless emit_candidate_batch is enabled.
optimize_for_stillBOOLEANtrueAdds a locked-camera still-image prompt wrapper. It does not change frames, resolution, steps, sampler, or model weights.

Outputs (5)

NameTypeDescription
positiveCONDITIONINGPositive FL2VA text-to-image conditioning for the sampler's positive input.
h3_latentLATENTPacked H3 audio/video latent containing the requested temporal image packet.
requested_framesINTNumber of image frames that Exact Frame Decode should preserve and decode.
image_promptSTRINGFinal still-image prompt after optional optimization.
run_infoSTRINGTemporal packet, canvas, checkpoint expectations and recommended output strategy.