MiniMax H3 Dialogue Event (Plan v2)
Attaching dialogue to a shot
- h3_plan
- h3_plan
- dialogue_preview
H3's dialogue tags are where a lot of hand-written prompts fall apart. The exact words go inside a <voice>-style tag, the timing has to be explicit, and if a line spans a cut you need special cross-cut markers - miss them and the speech breaks or the model improvises words you never asked for. Dialogue Event (Plan v2) attaches one exact vocal event to the current Shot and lets the compiler handle all of that bookkeeping, including the speaker IDs.
The node attaches to "the most recently opened Shot" in the chain, which is why the ordering works the way it does: you build a Shot, then attach Dialogue Events to it, and the chain carries the context forward. Prompt Merge assigns S1, S2, and later speaker IDs from the actual playback order of the events - you never type them.
Inputs that matter
speaker- the same human alias selected by a voice Audio Reference. On-screen speech must resolve to an upstream Subject.language- written inside the final H3 dialogue tag (default English).exact_text- the words. "Every punctuation mark you enter is preserved inside that tag," per the tooltip - so commas and question marks are exact, and H3 will try to lip-sync to them.delivery- optional target delivery ("urgent, hushed"). This does not replace a connected voice timbre; they're separate axes.voice_mode- On-screen speech, Off-screen speech, or Voiceover.continuity_mode- the interesting one. "Complete in this Shot" is the default; the two cross-cut choices (Continues into next / Continues from previous) make Prompt Merge insert the<scenetrans>marker in both parts of the split line; "Cut off by video ending" puts a<cutoff>in the final shot.start_offset_seconds--1leaves placement automatic,0starts at the Shot opening,1.25starts 1.25s in. Prompt Merge emits the absolute timestamp.
The [d] marker
Here's the part most people miss on first read: each [d] placeholder in the Shot's description consumes the next attached Dialogue Event in chain order. So if your Shot text is "She turns. [d] She smiles. [d]", the two [d] markers pull the first two attached events to exactly those spots. Events without a marker fall back to the legacy after-Shot placement. The dialogue_preview output shows the provisional speaker ID so you can confirm the order before merging.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/ethanfel/ComfyUI-MiniMax-H3-Guide
Restart, browse MiniMax H3 → Plan v2. No extra dependencies.
Gotchas
- The voice has to exist. On-screen speech that doesn't resolve to an upstream Subject is rejected. Set up your voice Audio Reference and Subject first.
- Exact text is exact. Type the words once, correctly - the compiler won't clean them up for you, and it preserves punctuation on purpose.
- Cross-cut lines need the matching continuity mode. A line that continues across a cut with
continuity_modeleft at "Complete in this Shot" won't get the<scenetrans>split, and the model may just... not finish the sentence. The two cross-cut choices exist precisely to fix that.
If you're coming from the pack's earlier prompt-guide era, this node is one of the clearest wins of Plan v2: dialogue that used to be a fragile hand-assembled tag is now validated metadata, and the exact-word guarantee means you stop fighting the model's paraphrasing.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| h3_plan | MINIMAX_H3_PLAN_V2 | Connect a Shot or earlier Dialogue Event from the same current Shot. | |
| speaker | STRING | Use the same human alias selected by a voice Audio Reference. On-screen speech must resolve to an upstream Subject. | |
| language | STRING | English | Written inside the final H3 dialogue tag. |
| exact_text | STRING | Only these exact words are placed inside the H3 dialogue tag. Every punctuation mark you enter is preserved inside that tag. | |
| delivery | STRING | Optional target delivery; this does not replace a connected voice timbre. | |
| voice_mode | COMBO | On-screen speech | On-screen speech, off-screen speech, or explicit voiceover. |
| continuity_mode | COMBO | Complete in this Shot | Use the two matching cross-cut choices when one utterance spans adjacent Shots; Prompt Merge inserts <scenetrans> in both parts. Use cutoff only in the final Shot when the video interrupts speech. |
| start_offset_seconds | FLOAT | -1.00-1–15 | Dialogue start relative to the current Shot: -1 leaves placement automatic, 0 starts at the Shot opening, and 1.25 starts 1.25 seconds after the Shot begins. Prompt Merge emits the absolute timestamp. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| h3_plan | MINIMAX_H3_PLAN_V2 | Connect to another Dialogue Event, the next Shot, or Prompt Merge. |
| dialogue_preview | STRING | Shot attachment, exact text, delivery, and provisional first-vocal-event speaker ID. |