MiniMax H3 Prompt Guide (Legacy)
A form that writes MiniMax H3's nightmare prompt for you
- shot_plan
- timing_context
- reference_context
- audio_context
- h3_prompt
- rewrite_request
- mode_report
- h3_length
H3 is not a tag model. Its prompts are instructions - long, structured, full of [Shot 2] At 00:02.500 cut markers and <Picture 1> references. Feed it a loose sentence and you get a video that ignores half of what you meant. The Prompt Guide is the pack's answer: a form that asks what you want, asks what each of your media files is for, and compiles a valid structured draft plus a report of what it decided.
It's labeled Legacy because the pack has moved on to the typed Plan v2 pipeline, but the Guide remains the right on-ramp for the classic workflow - and it's the node most people find first, so it's worth knowing properly.
What it does
The Guide picks H3's generation mode from your inputs - T2VA (text only), I2VA (first frame), L2VA (last frame), FL2VA (both), or Ref2VA (references) - prepares the matching prompt structure, and validates your choices before you queue, not after a bad render. The mode_report output is where conflicts surface, and the tooltip's advice is correct: read it first when results look wrong.
The inputs that matter
- what_do_you_want - leave it on Auto - decide from the reference roles unless you know better. It picks the mode from how you use the media below.
- target_description - the actual creative request. The tooltip's example is worth internalizing: "Replace the blue car with a red vintage coupe; keep the original road, lighting, and camera movement." Not "describe the video."
- how_images_are_used / how_video_is_used / how_audio_is_used - legacy one-role shortcuts that choose the mode. Ignored once a
reference_contextis connected; then the chained roles are authoritative. - reference_assets - inventory your downstream media in label order, one per line:
Picture 1: red ceramic robot,Video 1: dancer performing a spin. - duration_seconds - 4 to 15 seconds; ComfyUI rounds up to H3's native
17k+5frame grid at 24 FPS, so 6.0 s becomes 158 frames (6.58 s). That rounded time is your exact landing time for last-frame tasks. - shot_and_timing_plan, camera_direction, dialogue_lyrics_and_visible_text, overall_soundscape, non_diegetic_music - the creative detail. Exact spoken words go in the dialogue field; the Guide's structure keeps S1/S2 speaker labels stable across shots.
The optional inputs do real work: shot_plan (from a Shot chain), timing_context (from Target Timing - overrides duration_seconds), reference_context, and audio_context.
Outputs
h3_prompt is the structured pre-LLM draft - wire it to the Prompt Enhancer for the detailed rewrite, or use it directly if you're confident. rewrite_request is a self-contained instruction packet for a different LLM node. mode_report is your pre-flight checklist. h3_length is the native frame count for the H3 conditioning node.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/ethanfel/ComfyUI-MiniMax-H3-Guide
Restart ComfyUI; the nodes land under MiniMax H3/Prompting (Manager finds the pack as "MiniMax H3 Guide"). No Python dependencies. The one hard requirement is a ComfyUI build with native MiniMax H3 support - the model weights themselves are a separate ~42.5 GB download from HuggingFace, and remember H3's Community License excludes the US, EU, UK and Korea.
Where people get burned
The classic one: a great target_description but an empty dialogue field, and H3 silently mumbles. Or a later-shot cut time that lands at or past the end - the Guide validates cuts must be strictly increasing and inside the duration. And in a reference-context workflow, don't create a backward cycle by pulling h3_length out of the Guide; that's exactly what Target Timing exists to avoid. When results look wrong, mode_report is the first thing to open, not the sampler settings.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| what_do_you_want | COMBO | Auto - decide from the reference roles | Start here. Auto is recommended: it chooses the H3 mode from the image/video/audio roles below. Use Text only for no media; Animate/Reach/Connect when images are exact endpoint frames; Generate from references for appearance/style guidance; Edit only when changing an existing video; Continue when adding new footage after it; Transfer motion when one subject must perform another asset's action. |
| target_description | STRING | Write the actual creative request, not an instruction such as 'describe the video.' Include the target subject, visible action, setting, requested edit, and final state. Example: 'Replace the blue car with a red vintage coupe; keep the original road, lighting, and camera movement.' Put exact spoken words in the dialogue field. | |
| how_images_are_used | COMBO | No image | Choose the image's job. First frame = exact image at 0.00s (I2VA). Last frame = exact final composition (L2VA). First + last = continuous path between two exact frames (FL2VA). Appearance/scene/style guides generation but is not an exact frame. Concrete keyframe anchors an exact internal composition and uses keyframe completion. Storyboard only plans viewpoint, placement, or shot order and uses reference generation. Motion target is the subject that receives motion from a video. The combined storyboard/keyframe choice remains only for old workflows. This whole dropdown is a legacy one-role shortcut and is ignored when reference_context is connected. |
| how_video_is_used | COMBO | No reference video | Choose the video's job. Direct edit modifies its existing frames/content. Continue creates new footage after its ending. Transfer motion copies action, pose timing, or trajectory to another subject without editing the source clip. Camera/cuts/rhythm borrows only temporal structure. Subject/scene/style reuses visible reference content. All use Ref2VA. This whole dropdown is a legacy one-role shortcut and is ignored when reference_context is connected. |
| how_audio_is_used | COMBO | No reference audio | Choose whether H3 copies or only imitates the audio. Complete reuse copies the whole signal 1:1. Partial reuse copies selected time/layers and permits a new mix. Reference regenerates voice timbre, music style, beat, dialogue content, or sound texture without copying samples. Broad mood is weak reference. Audio cannot be the only Ref2VA media input; add an image or video. |
| reference_fidelity | COMBO | Auto - choose per reference role | Controls Ref2VA retention markers. Auto chooses per role. Fully preserve keeps defined identity/composition. Partly preserve allows visible edits. Transfer applies attributes or motion to a different identifiable target. Weak inspiration keeps only broad style/category/atmosphere. A motion source uses attribute_transfer only when the target-picture role is also selected; otherwise it is reported as incomplete and kept non-transfer. |
| reference_assets | STRING | Inventory the actual downstream media in label order, one per line: 'Picture 1: red ceramic robot', 'Video 1: dancer performing a spin', 'Audio 1: calm voice timbre'. Angle brackets are optional. Use Subject N only in a legacy text-only workflow. Unlabelled lines become extra notes. When reference_context is connected, its visual labels/roles are authoritative; matching Picture/Video lines here add descriptions only, unmatched visual labels and manual Subject rows are ignored, and Audio lines remain active. | |
| duration_seconds | FLOAT | 6.004–15 | Requested playback duration, from 4 to 15 seconds. Native ComfyUI rounds it upward to a 17k+5 frame count at 24 FPS; the effective rounded time becomes the exact landing time for last-frame tasks. Every later-shot cut must be earlier than the requested end. |
| visual_style | STRING | Auto - derive from references and intent | Auto derives the treatment from endpoint/reference pictures and the written intent, so it does not force live action onto animation or artwork. Enter an explicit override such as 'cinematic, live-action', '2D animation', '3D CG', 'claymation', or 'vintage film' only when you want that change. |
| shot_and_timing_plan | STRING | Advanced legacy fallback when no MiniMax H3 Shot chain is connected. Give Shot 1's content but no H3 cut timestamp; for later shots provide the exact cut time. Example: 'Shot 1, 00:00-00:02.500: medium entrance. Shot 2, cut at 00:02.500: close-up. Shot 3, cut at 00:04.250: wide ending.' The guide converts later cuts to '[Shot 2] At 00:02.500, ...'. Times must strictly increase and remain inside the duration. A connected shot_plan takes priority. | |
| camera_direction | STRING | Describe only intended camera behavior. Use movement type plus meaningful range/speed: static, push/pull, pan, truck, tilt, pedestal, arc, tracking, shake, POV, or roll. Example: 'pushes in with small amplitude at slow speed.' For different motion per shot, put each instruction in the shot plan instead. | |
| dialogue_lyrics_and_visible_text | STRING | Enter exact words and identify who says them, their language, voice, and shot when known. Example: 'Shot 2, S1, quiet young woman, French: Je reviens demain.' The enhancer converts speech to <d>[French] Je reviens demain.</d> and keeps S1 stable. List visible signs/subtitles separately; their original text is preserved in double quotes. | |
| overall_soundscape | STRING | Describe sounds that exist in the scene: ambience, footsteps, impacts, mechanisms, fabric, breathing, laughter, and other physical/non-verbal sounds. Do not repeat dialogue, singing, or audience-only score here. Use complete silence only when intentionally requested. | |
| non_diegetic_music | STRING | N/A | Audience-only background score that characters cannot hear. Describe instrumentation, tempo/rhythm, and volume changes: 'Sparse piano at a slow tempo, joined by sustained low strings, then fading.' Use N/A for no score. A radio, performer, phone, or instrument audible in the scene belongs in the shot description instead. |
| shot_planopt | MINIMAX_H3_SHOT_PLAN | Recommended for multiple shots: connect the final MiniMax H3 Shot node. The guide writes real [Shot N] markers, validates contiguous float ranges, and uses the last end_time as the target duration. This overrides the manual shot field. When timing_context is connected, its embedded Shot plan takes priority instead. | |
| timing_contextopt | MINIMAX_H3_TARGET_TIMING | Recommended with chained references: connect MiniMax H3 Target Timing.timing_context. It overrides duration_seconds and carries any connected Shot plan. Its upstream h3_length can safely feed video Visual References and native H3 without creating a graph cycle. | |
| reference_contextopt | MINIMAX_H3_ENHANCER_REFERENCE_CONTEXT | Connect the final MiniMax H3 Enhancer Visual Reference.reference_context. It becomes authoritative for mode, labels, per-asset roles, Subject grouping, retention, shot scope, and native routes; legacy image/video role dropdowns no longer create generic Subjects. Fan this same final context out to Prompt Enhancer.reference_context. | |
| audio_contextopt | MINIMAX_H3_AUDIO_REFERENCE_CONTEXT | Connect the final MiniMax H3 Reference Sheet Audio Reference.audio_context. Its saved descriptions, actual audio relationships, labels, Shot scopes, and native ref_audio_N routes replace the legacy audio dropdown/inventory path. A visual reference_context is also required because H3 does not accept audio as the only Ref2VA media. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| h3_prompt | STRING | Structured pre-LLM H3 draft. Connect it to MiniMax H3 Prompt Enhancer.manual_prompt for the recommended detailed, source-grounded rewrite; use it directly only after reviewing every reference and timeline detail. |
| rewrite_request | STRING | Self-contained instructions for a different LLM node. It includes the selected H3 format, fixed labels, rules, and this structured draft. |
| mode_report | STRING | Read this first when results look wrong. It shows the chosen H3 mode/checkpoint, resolved media roles, task prefix, input limits, and conflicts to fix. |
| h3_length | INT | Native ComfyUI H3 frame count on the required 17k+5 grid at 24 FPS. Connect it to the official H3 conditioning node when using the Guide alone. With a Visual Reference context feeding back into this Guide, use Target Timing.h3_length upstream instead and never create a backward cycle. |