MiniMax H3 Prompt Guide Builder
H3's official prompt spec, as text you can hand any LLM
- system_prompt
- user_prompt
- resolved_mode
- treatment_warnings
- width
- height
Every H3 enhancer node in this pack has a secret: the "brains" are just a very long system prompt describing MiniMax H3's documented prompt contract, plus a user prompt built from your settings. This node hands you that system prompt and user prompt as plain text, without running any LLM at all. If you already have a text-generation node you like - Ollama, LM Studio, a GGUF loader, or the QwenVL Prompt Enhancer the description name-checks - you can wire those outputs into it and effectively build your own enhancer around your model of choice.
Why this exists
The enhancer nodes in the pack are opinionated: they pick the backend (API endpoint or managed llama-server) and drive the whole thing. That's convenient, but if you want your own model, your own server, or your own front end, you don't need the scaffolding - you need the instructions. The Guide Builder is the model-free core of the pack, exposed as a node. Its job is deterministic: take your basic_prompt, mode, duration_seconds, reference_context, and the pile of style/audio/resolution widgets, and compile them into two strings.
system_prompt- the full H3 rewriting contract: the strict 6-block anatomy for Ref2VA, the 3-block structure for T2VA/I2VA/FL2VA/L2VA, verbatim<d>[Language] ...</d>dialogue rules, the multilingual/dialect table, physical-action chains, the "name what a camera could record" rule.user_prompt- your request formatted for the model: the source text, resolved mode, duration, reference context, and every policy you toggled.
Pipe those into any chat-completions text node, feed the reply through a MiniMaxH3PromptValidator to check the result, and you've rebuilt the enhancer with your own engine.
Inputs worth knowing
mode (default auto) resolves the generation type; the node reports what it decided through the resolved_mode output so you can see whether auto guessed right before you send anything downstream. creative_latitude is the same four-level dial as the enhancer nodes - how far the writer may go beyond your text, from verbatim_source (reformat only) to invented_production (build the world). The audio trio is worth a glance: ambience_foley_policy (auto/ensure_audible/off), background_score_policy, and instrumental_description - describe concrete instrumentation and tempo, because mood words get translated into audible parameters anyway. dialogue_language (default auto) sets the language your quoted dialogue stays in.
Two underrated details. First, lora_trigger_words are appended to the finished prompt verbatim, after validation - a trigger token like g0r3_style is an exact token the LoRA was trained on, so the node keeps it out of the LLM's translator hands. Second, the resolution math happens here too: aspect_ratio plus target_megapixels produce the width/height outputs (16-pixel aligned), so you can drive your latent size even in a custom pipeline.
Outputs
system_prompt, user_prompt, resolved_mode, treatment_warnings (drops and conflicts between your treatment settings), and width/height. If you're only here to copy the spec into your own prompt-writing setup, system_prompt is the whole ballgame.
Install
Same one-liner as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/hyukudan/ComfyUI-MiniMax-H3-Prompt-Enhancer.git
Then restart ComfyUI (or search ComfyUI-MiniMax-H3-Prompt-Enhancer in Manager). This node needs nothing beyond ComfyUI's standard environment - no LLM, no API key, no model files. It's pure string compilation, so it works fully offline on day one.
The gotcha
The Guide Builder is only as good as what you feed it into. It emits instructions, not a result - if your downstream LLM is weak at following long structured formats, or isn't an instruct-tuned chat model, the output will be chatty prose with preamble, and you'll see the validator fail on structure. That's not this node's bug; it's the classic LLM-as-tool failure mode from the KB: a chat model doesn't emit clean structured output by default. Chain the validator after it, and if the model keeps talking back, that's your signal to switch engines.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| basic_prompt | STRING | — | |
| mode | COMBO | auto | 7 options: auto, t2va, i2va, fl2va, l2va, ref2va, +1 |
| duration_seconds | FLOAT | 5.004–150 | 4-150 seconds. H3 was trained around 5-15 seconds; longer generations are experimental and require much more memory. |
| reference_context | STRING | Optional plain-language notes describing referenced pictures, videos, audio, identities, or roles. Usually needed only for Ref2VA. | |
| creative_latitudeopt | COMBO | enhanced_production | How far beyond your text the writer may go. verbatim_source: none - keep your wording, facts and terseness as written; only reformat into H3 sections, apply the selected style and translate delivery marks. conservative_grounded: only the minimum structure the H3 mode requires. enhanced_production: resolve unspecified production decisions - composition, blocking, lighting, micro-performance. invented_production: treat your text as a premise and build the world around it. Quoted dialogue, reference identities, duration, shot count, ending and gore level stay locked at every level. |
| ambience_foley_policyopt | COMBO | auto | Scene sounds other than speech or music: rain, wind, room tone, footsteps, clothing, doors, impacts, engines, breathing, and similar physical sounds. |
| background_score_policyopt | COMBO | follow_prompt | Follow the source, add an instrumental score, or force no non-diegetic music |
| instrumental_descriptionopt | STRING | Describe concrete instrumentation, tempo, rhythm, and dynamics; mood words are translated into audible parameters. | |
| voice_performanceopt | COMBO | audible | Experimental silent mouth acting is visual best-effort only; exact lip sync and silence are not guaranteed |
| aspect_ratioopt | COMBO | auto | 7 options: auto, 21:9, 16:9, 4:3, 1:1, 3:4, +1 |
| media_manifestopt | STRING | Advanced alternative to reference notes: structured JSON describing connected media, roles, analysis, subjects, and transcripts. | |
| multishot_shot_countopt | INT | 00–64 | Chained multishot only: 0 infers the count |
| frame_countopt | INT | 00–3600 | Leave 0 to use Duration. A nonzero exact count must follow 17 × n + 5. Above about 362 frames (~15 s) is experimental. |
| multishot_identity_lockopt | STRING | — | |
| multishot_voice_lockopt | STRING | — | |
| multishot_setting_lockopt | STRING | — | |
| show_advanced_controlsopt | BOOLEAN | false | Show structured reference metadata and exact frame controls |
| creative_treatment_jsonopt | STRING | Stable schema-v2 storage for the optional creative-treatment selectors. Legacy v1 remains runtime-compatible; blank is neutral. | |
| shot_plan_jsonopt | STRING | Optional authoritative shot plan. Schema v1 remains compatible; v2 adds generations, presence, states, environments and start/path/end camera. Blank preserves automatic planning. | |
| cinematography_jsonopt | STRING | Optional schema-v2 manual color, camera, optics, focus, texture, and motion-rendering controls. Legacy v1 remains runtime-compatible; blank is neutral. | |
| instrumental_styleopt | COMBO | none | When instrumental score is enabled, adapt its arrangement to this musical language while preserving compatible user direction. |
| acoustic_spaceopt | COMBO | none | Diegetic sound space for the permitted ambience, foley, and voices. It renders existing sounds; it never adds a source. |
| dialogue_coverageopt | COMBO | off | Keep every speaking character's mouth and eyes unobstructed, in focus, and framed at medium close-up or tighter for the whole line. |
| dialogue_languageopt | COMBO | auto | Target dialogue language. 'auto' automatically detects language from prompt context/dialogue. |
| visual_style_presetopt | COMBO | none | Quick visual style preset. When selected, automatically applies this visual language unless overridden in creative treatment JSON. |
| target_megapixelsopt | FLOAT | 0.00 | Target resolution in Megapixels (MP), e.g. 0.2, 0.3, 0.5, 0.92 (720p), 2.0 (1080p). Leave 0.0 for standard defaults; Custom accepts any positive finite value. |
| editing_intentopt | COMBO | none | Quick video editing intent preset for Ref2VA (Character Swap, Wardrobe Transfer, Voice/Dialogue Swap, Background Change, Motion Transfer, Custom Editing). Automatically enforces video editing summary and retention policies. |
| lora_trigger_wordsopt | STRING | Trigger tokens for the LoRAs loaded elsewhere in the graph. Appended verbatim to the end of the description after enhancement and validation, so they never pass through the LLM and survive character for character. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| system_prompt | STRING | — |
| user_prompt | STRING | — |
| resolved_mode | STRING | — |
| treatment_warnings | STRING | — |
| width | INT | — |
| height | INT | — |