H3 Studio • Advanced Combined Prepare
One conditioning node for T2I, I2I and reference edit
- clip
- vae
- source_image
- reference_image_2
- reference_image_3
- reference_image_4
- reference_image_5
- reference_image_6
- reference_image_7
- reference_image_8
- reference_image_9
- positive
- h3_latent
- fitted_source
- requested_frames
- optimized_prompt
- run_info
If the Director is H3 Studio's friendly front door, H3StudioPrepare is the more exposed back entrance: the same three H3 paths - text-to-image, image-to-image and reference edit - but as a single advanced node you wire by hand, without the Director's reference cards and routing magic. It's for people building custom graphs who want the conditioning machinery explicit and controllable.
The mode dropdown picks the H3 path, and that choice is load-bearing because the three modes genuinely need different things:
- text_to_image (FL2VA) - prompt only. The VAE is optional here; nothing needs encoding.
- image_to_image (FL2VA) -
source_imagebecomes FL2VA's frame-0 anchor. VAE required, source gets fitted to the canvas first. - reference_edit (REF2VA) - one primary
source_imageplus up to eight more references (reference_image_2throughreference_image_9) that become<Picture 2>…<Picture 9>. VAE required.
The node is honest about edges: connect source_image in text-to-image mode and it's ignored - the run_info output tells you so. Missing VAE in an edit mode fails with a clear message instead of a cryptic encoder error.
The inputs you'll actually set
- clip - the MiniMax H3 Qwen text/vision encoder.
- prompt - the final still description or edit instruction.
- width / height - output canvas (defaults 1344×768, the H3-native orientation).
- frame_preset - 1 (experimental image VAE), 5, 9, 13, or 20 frames. The description stresses that H3 jointly denoises the entire temporal packet, so the full selected profile is decoded for final selection - 5 is the recommended default, 20 is slow.
- preserve_strength (default 0.75) - for I2I/REF2VA, how strongly the prompt language asks H3 to keep identity/pose/composition. The tooltip is explicit: this is not diffusion denoise strength and doesn't change anything about sampling.
- optimize_prompt (default on) - adds still-image wording and, for edit modes, source-preservation instructions.
Outputs
positive (CONDITIONING) and h3_latent (LATENT) feed the sampler; fitted_source (IMAGE) shows the source fitted to the canvas; requested_frames (INT) carries the temporal profile; optimized_prompt and run_info are the strings worth reading the first time to see what the prompt optimizer actually did to your wording.
The honest comparison
Is this better than the Director route? For most people, no - the Director + Condition & Route keeps routing and reference state coherent, which matters when references are involved. This node's appeal is for expert graphs and compatibility: no studio context, no cards, just conditioning in, conditioning out. If you're porting a graph or want to control the prompt optimizer directly, it's the one to use. Otherwise, the maintained workflow's Director path is the better default.
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. No extra pip dependencies beyond the pack.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | MiniMax H3 Qwen text/vision encoder. | |
| mode | COMBO | Select the H3 conditioning path. T2I and I2I use FL2VA; Reference Edit uses REF2VA. | |
| prompt | STRING | Final still description or edit instruction. | |
| width | INT | 134432–16384 | Output canvas width. |
| height | INT | 76832–16384 | Output canvas height. |
| frame_preset | COMBO | recommended | 5 frames | H3 jointly denoises the entire temporal packet. The complete selected 5-, 9-, 13-, or 20-frame profile is decoded for Single Image Output; that node normally emits one selected still or the full batch when emit_candidate_batch is enabled. |
| optimize_prompt | BOOLEAN | true | Adds still-image wording and, for edit modes, source-preservation instructions. |
| preserve_strength | FLOAT | 0.750–1 | Prompt-language preservation strength for I2I/REF2VA. This is NOT diffusion denoise strength and does not change the sampler schedule. |
| source_fit | COMBO | crop_center | How source/reference content is fitted to the generation canvas. |
| reference_size | COMBO | match_generation_area | REF2VA reference encoding size. max_identity_2048 keeps more source resolution when available and can cost more memory. |
| vaeopt | VAE | Required for Image to Image and Reference Edit because source/reference images must be encoded. Text to Image does not use it. | |
| source_imageopt | IMAGE | Required for I2I and REF2VA. If connected in T2I it is ignored and run_info reports that fact. | |
| reference_image_2opt | IMAGE | Optional REF2VA <Picture 2>; ignored outside Reference Edit. | |
| reference_image_3opt | IMAGE | Optional REF2VA <Picture 3>; ignored outside Reference Edit. | |
| reference_image_4opt | IMAGE | Optional REF2VA <Picture 4>; ignored outside Reference Edit. | |
| reference_image_5opt | IMAGE | Optional REF2VA <Picture 5>; ignored outside Reference Edit. | |
| reference_image_6opt | IMAGE | Optional REF2VA <Picture 6>; ignored outside Reference Edit. | |
| reference_image_7opt | IMAGE | Optional REF2VA <Picture 7>; ignored outside Reference Edit. | |
| reference_image_8opt | IMAGE | Optional REF2VA <Picture 8>; ignored outside Reference Edit. | |
| reference_image_9opt | IMAGE | Optional REF2VA <Picture 9>; ignored outside Reference Edit. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | Positive H3 FL2VA or REF2VA conditioning for the sampler's positive input. |
| h3_latent | LATENT | Packed H3 audio/video latent containing the requested temporal image packet. |
| fitted_source | IMAGE | Source image fitted to the generation canvas; useful for preview and comparison in edit modes. |
| requested_frames | INT | Number of image frames that Exact Frame Decode should preserve and decode. |
| optimized_prompt | STRING | Final prompt after optional still-image and source-preservation optimization. |
| run_info | STRING | Mode, temporal packet, canvas, checkpoint expectations and recommended selection strategy. |