MiniMax-H3 Prompt Writer (Ref2VA)
Full-reference MiniMax-H3 prompts, six sections at a time
- options
- rewritten_prompt
- subject_definitions
- summary
- retention_analysis
- detailed_description
- overall_soundscape
- non_diegetic_music
The ordinary writer turns text into a video description. Ref2VA is the full-reference mode from MiniMax's own guide: the target video doesn't just depict a scene, it reuses assets - a character's look, a specific style, a voice timbre, a clip being edited. MiniMax's full-reference guide knows how to express that, and this node turns your prompt plus a list of labeled references into the six-section description H3 wants.
This is the sibling of the MiniMax-H3 Prompt Writer (T2VA/I2VA/FL2VA/L2VA) - same no-LoRA approach, any instruction-following GGUF, the guide fetched from MiniMax on first use. The difference is which guide goes into the system prompt (the longer, ~24 KB full-reference one) and what comes out: six named outputs instead of three.
The one input that's the whole point
reference_assets is required, and the node refuses to run when it's empty - full-reference mode describes how a target video reuses assets, so with no assets it's just T2VA under another name. One asset per line, labeled, and the model does the rest:
Picture 1: young woman, long dark hair, blue cardigan, thin silver necklace
Picture 2: corner cafe interior, brick wall, brass lamps, rain on the window
Audio 1: voice-timbre reference for the woman - low, unhurried, slight rasp
The model binds <Subject 1> to the woman, <Picture 1> to the drawing's style, picks the [task type] prefix itself, and writes the retention analysis - fully_preserved, partially_preserved, attribute_transfer, weak_reference, fully_copy, that vocabulary. Or skip the typing: run a MiniMax-H3 Reference Caption (or the Multi Reference Caption) upstream and paste its reference_assets output straight into this field.
The outputs
subject_definitions- what each<Subject N>/<Picture N>/<Video N>/<Audio N>label denotes.summary- the[task type]prefix and the reference relationships in one paragraph.retention_analysis- per label: how faithfully each asset is carried over.detailed_description- the body, shot by shot, labels cited where their roles apply.overall_soundscape- ambience and physical sound.non_diegetic_music- the audience-only score.
Plus rewritten_prompt, the whole thing in one string. Every output is a plain STRING - wire any of them into a text viewer.
Inputs to know
prompt- what the target video should show and how it uses the references. The descriptions inreference_assetssay what the assets are; this says what they're for.model- the guide is the longer of the two, so a 4B will hold the format, but a 9B keeps the labels consistent across all six sections. That consistency is where small models wobble.resolution/duration- keep equal to what you pass to H3. Duration caps at 15 s here.greedy- on. Small models drift out of format when they sample.
Install
Same pack, same two commands as every node in it:
cd ComfyUI/custom_nodes
git clone https://github.com/pytraveler/MiniMax-H3-Prompt-Rewriter-ComfyUI
(Or ComfyUI Manager → search "MiniMax-H3".) The writer runs the official llama.cpp binaries, so no Python deps are strictly needed for this node - first run fetches the guide and your model.
Where people get burned
- Empty
reference_assetsgets refused, not silently downgraded to T2VA. That's deliberate and it's the right call - but it means wiring a captioner upstream is the normal setup, not an optional extra. - Labels stay within their own category.
Picture 1,Picture 2,Video 1,Audio 1- not 1 through 4. The caption nodes already number this way, so pasting their output just works. - The rewrite may invent retention levels. It's following instructions, not reproducing a trained distribution. Skim the
retention_analysisbefore generating - if a character's look must survive unchanged, that's the line to eyeball.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | What the target video should show, and how it uses the references. | |
| reference_assets | STRING | Required. One asset per line — the node reads text, not pixels, so this is all the model knows about them. Label them Picture N, Video N or Audio N and say what each one is for. List every reference asset, one per line: Picture 1: young woman, long dark hair, blue cardigan, seated by a window Video 1: source clip being edited — handheld walk down a night street Audio 1: voice-timbre reference for the woman | |
| model | COMBO | Any GGUF language model. The full-reference guide is the longer of the two, so a 4B will hold the format but a 9B keeps the labels consistent across all six sections. | |
| resolution | COMBO | 16:9 | Target aspect ratio the rewrite is composed for. |
| duration | INT | 104–15 | Target clip length in seconds; drives shot count and pacing. |
| greedy | BOOLEAN | true | Deterministic decoding. Keep it on unless the result is too plain. |
| seed | INT | 420–4294967295 | — |
| keep_model_loaded | BOOLEAN | false | Keep the writer in VRAM after the rewrite. |
| optionsopt | H3_REWRITER_OPTIONS | — | |
| bypassopt | BOOLEAN | false | Hand 'prompt' straight to the output and run no model at all: nothing is downloaded, nothing is loaded, no VRAM is touched. This is what ComfyUI's own bypass (Ctrl+B) cannot do here - it only forwards a connected link, and every input this node writes from is a widget, so bypassing the node the usual way leaves the nodes downstream with nothing. The section outputs come back empty. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| rewritten_prompt | STRING | — |
| subject_definitions | STRING | — |
| summary | STRING | — |
| retention_analysis | STRING | — |
| detailed_description | STRING | — |
| overall_soundscape | STRING | — |
| non_diegetic_music | STRING | — |