Nodes/MiniMax H3 Studio/H3 Studio · Image Director
ComfyUI Node

H3 Studio · Image Director

The control panel that makes MiniMax H3 behave like an image model

By thaakeno·Created 2 months ago·Updated 14 days ago· 122
H3 Studio · Image Director
  • media
  • h3_bundle
  • media_1
  • media_2
  • media_3
  • media_4
  • media_5
  • media_6
  • media_7
  • media_8
  • media_9
  • studio_context
  • compiled_prompt
  • state_json
  • width
  • height
  • seed
  • diagnostics
◄modeimage►
◄prompt►
◄resolutionCustom►
◄aspect_ratio1:1►
◄width1024►
◄height1024►
◄seconds5►
◄advancedfalse►
◄fps24►
◄keyframe_rolefirst►
◄ref_image_size2k►
◄reference_mention_modeindex►
◄megapixels1.50►
◄seed0►
◄enhance_modecompile_only►
◄adherence0.85►
◄routeauto►
◄sampling_profilelightx_v1_fl2v_8►
◄frame_profilerecommended_5►
◄analyzer_model►
◄studio_state►
◄media_filename►
◄media_type_1image►
◄media_filename_1►
◄role_1auto►
◄retention_1attribute_transfer►
◄description_1►
◄media_type_2image►
◄media_filename_2►
◄role_2auto►
◄retention_2attribute_transfer►
◄description_2►
◄media_type_3image►
◄media_filename_3►
◄role_3auto►
◄retention_3attribute_transfer►
◄description_3►
◄media_type_4image►
◄media_filename_4►
◄role_4auto►
◄retention_4attribute_transfer►
◄description_4►
◄media_type_5image►
◄media_filename_5►
◄role_5auto►
◄retention_5attribute_transfer►
◄description_5►
◄media_type_6image►
◄media_filename_6►
◄role_6auto►
◄retention_6attribute_transfer►
◄description_6►
◄media_type_7image►
◄media_filename_7►
◄role_7auto►
◄retention_7attribute_transfer►
◄description_7►
◄media_type_8image►
◄media_filename_8►
◄role_8auto►
◄retention_8attribute_transfer►
◄description_8►
◄media_type_9image►
◄media_filename_9►
◄role_9auto►
◄retention_9attribute_transfer►
◄description_9►

MiniMax H3 is a video model. It does images, but only through paths the lab never actually polished for stills - which is why doing H3 image generation in raw ComfyUI means building a graph of routing, reference conditioning, sampler profiles, frame selection and VAE handling by hand. The Director is the node that hides all of that machinery behind one big control panel. If H3 Studio is the point of this pack, this is the point of H3 Studio.

It's the front-end for everything: your prompt, up to nine ordered reference images, resolution, seed, enhancement mode, and which H3 route and sampling profile to take. You type a prompt, connect a few images, pick a profile, and queue - the Director compiles all of it into a typed studio_context that the downstream Condition & Route node consumes.

The part beginners under-use: ordered references

The Director's superpower is how references work. Wire images into media_1 through media_9, and each gets a card with a role (identity, pose, outfit, style, composition, environment, and more) and a retention policy (fully_preserved, attribute_transfer, partially_preserved, reference_only). In your prompt you just write @Image1, @Image2, and so on - the node compiles those friendly mentions into H3's native <Picture N> conditioning under the hood. The cards survive workflow reloads with their descriptions and thumbnails intact.

That's the mechanism worth understanding: H3 Studio keeps four jobs separate - factual analysis of what's in each reference, ownership (which image owns which attribute), prompt direction, and deterministic compilation of @ImageN into <Picture N>. If you only use one, make it this: give each reference one narrow job and say so explicitly. "Keep the identity and pose from @Image1, transfer only the jacket from @Image2" beats a vague paragraph every time, because reference editing here is semantic regeneration, not pixel-locked compositing.

The inputs that matter

The required list is long but most of it has sane defaults you can ignore. The ones you'll actually touch:

  • prompt - write the visual objective naturally; use @ImageN only where a connected reference has a concrete job.
  • sampling_profile - the 11-choice speed/quality ladder, from base_quality_20 (safest) through the LightX 8-step lightx_v1_fl2v_8 (the default) down to 4-step LightX and PDD profiles. The LightX labels are intentionally artifact-specific: v1.0 follows the published adapter, v0.1 recipes are empirical.
  • frame_profile - 5/9/13/20 temporal frames (recommended_5 is the default), plus the experimental one-frame image_vae_1. H3 denoises the whole temporal packet jointly, so more frames mean more candidates to pick from but a much slower run.
  • resolution / aspect_ratio / megapixels - the Director shows the real aligned dimensions and marks draft vs recommended vs experimental ranges. Direct mode spans roughly 0.2–8.5 MP, but treat anything above ~1 MP as an experiment; H3 is not a dedicated super-resolution model and big canvases buy you VRAM pain faster than detail.
  • route - auto is the smart default; it picks FL2VA for text-to-image and image-to-image and REF2VA for reference editing, and rejects impossible combinations before sampling starts.
  • seed - capped at 2^50-1 so ComfyUI's LiteGraph never clamps two randomized seeds onto the same boundary value. That tooltip is there because it's a real footgun.
  • enhance_mode - off, single_prompt, compile_only (default), or vlm for the optional Qwen3-VL prompt pipeline.

Outputs and next steps

The Director returns studio_context (feed this into Condition & Route), compiled_prompt (worth a glance the first few times to see what H3 actually receives), state_json, width, height, seed, and diagnostics. The recommended wiring in the maintained workflow is Loader → Director → Condition → sampling → decode → frame select.

Install

cd 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 the frontend. Models are not auto-downloaded - set them up via the Model Setup node or the README's links first. It's alpha, so expect rough edges, and remember the H3 weights themselves are geofenced out of the US/EU/UK/Korea by the community license.

CategoryH3 Studio

Inputs (78)

NameTypeDefaultDescription
modeCOMBOimage2 options: image, reference
promptSTRING—
resolutionCOMBOCustom4 options: 480P, 768P, 1024P, Custom
aspect_ratioCOMBO1:111 options: 1:1, 4:5, 5:4, 3:4, 4:3, 2:3, +5
widthINT102432–16384—
heightINT102432–16384—
secondsFLOAT55–5—
advancedBOOLEANfalse—
fpsFLOAT2424–24—
keyframe_roleCOMBOfirst2 options: first, last
ref_image_sizeCOMBO2k2 options: 1k, 2k
reference_mention_modeCOMBOindex2 options: index, filename
megapixelsFLOAT1.500.2–8.5—
seedINT00–1125899906842623H3 Studio seed. Values are limited to 2^50-1 so LiteGraph/ComfyUI never clamps different randomized seeds to the same 2^50 boundary value.
enhance_modeCOMBOcompile_only4 options: off, single_prompt, compile_only, vlm
adherenceFLOAT0.850–1—
routeCOMBOauto3 options: auto, fl2va, ref2va
sampling_profileCOMBOlightx_v1_fl2v_811 options: base_quality_20, base_balanced_12, lightx_v1_fl2v_8, lightx_v1_fl2v_8_pruned, lightx_v1_fl2v_4_pruned, lightx_er_sde_4, +5
frame_profileCOMBOrecommended_55 options: image_vae_1, recommended_5, balanced_9, quality_13, maximum_20
analyzer_modelSTRING—
studio_stateSTRING—
mediaopt*—
media_filenameoptSTRING—
h3_bundleoptH3_STUDIO_BUNDLE—
media_1opt*—
media_type_1optSTRINGimage—
media_filename_1optSTRING—
role_1optCOMBOauto15 options: auto, identity, character, face, style, composition, +9
retention_1optCOMBOattribute_transfer4 options: attribute_transfer, fully_preserved, partially_preserved, reference_only
description_1optSTRING—
media_2opt*—
media_type_2optSTRINGimage—
media_filename_2optSTRING—
role_2optCOMBOauto15 options: auto, identity, character, face, style, composition, +9
retention_2optCOMBOattribute_transfer4 options: attribute_transfer, fully_preserved, partially_preserved, reference_only
description_2optSTRING—
media_3opt*—
media_type_3optSTRINGimage—
media_filename_3optSTRING—
role_3optCOMBOauto15 options: auto, identity, character, face, style, composition, +9
retention_3optCOMBOattribute_transfer4 options: attribute_transfer, fully_preserved, partially_preserved, reference_only
description_3optSTRING—
media_4opt*—
media_type_4optSTRINGimage—
media_filename_4optSTRING—
role_4optCOMBOauto15 options: auto, identity, character, face, style, composition, +9
retention_4optCOMBOattribute_transfer4 options: attribute_transfer, fully_preserved, partially_preserved, reference_only
description_4optSTRING—
media_5opt*—
media_type_5optSTRINGimage—
media_filename_5optSTRING—
role_5optCOMBOauto15 options: auto, identity, character, face, style, composition, +9
retention_5optCOMBOattribute_transfer4 options: attribute_transfer, fully_preserved, partially_preserved, reference_only
description_5optSTRING—
media_6opt*—
media_type_6optSTRINGimage—
media_filename_6optSTRING—
role_6optCOMBOauto15 options: auto, identity, character, face, style, composition, +9
retention_6optCOMBOattribute_transfer4 options: attribute_transfer, fully_preserved, partially_preserved, reference_only
description_6optSTRING—
media_7opt*—
media_type_7optSTRINGimage—
media_filename_7optSTRING—
role_7optCOMBOauto15 options: auto, identity, character, face, style, composition, +9
retention_7optCOMBOattribute_transfer4 options: attribute_transfer, fully_preserved, partially_preserved, reference_only
description_7optSTRING—
media_8opt*—
media_type_8optSTRINGimage—
media_filename_8optSTRING—
role_8optCOMBOauto15 options: auto, identity, character, face, style, composition, +9
retention_8optCOMBOattribute_transfer4 options: attribute_transfer, fully_preserved, partially_preserved, reference_only
description_8optSTRING—
media_9opt*—
media_type_9optSTRINGimage—
media_filename_9optSTRING—
role_9optCOMBOauto15 options: auto, identity, character, face, style, composition, +9
retention_9optCOMBOattribute_transfer4 options: attribute_transfer, fully_preserved, partially_preserved, reference_only
description_9optSTRING—

Outputs (7)

NameTypeDescription
studio_contextH3_STUDIO_CONTEXT—
compiled_promptSTRING—
state_jsonSTRING—
widthINT—
heightINT—
seedINT—
diagnosticsSTRING—