MiniMax H3 Apply Structured Prose (Plan v2)
Edit the enhanced prompt by hand without breaking the H3 structure
- plan_context
- h3_prompt
- plan_context
- validation_report
- h3_length
- canonical_editable_prose
There's a moment in every serious H3 workflow where you look at the enhanced prompt and think "that's 90% right, but I'd rephrase this one shot." The problem is that editing the final H3 document by hand is a trap - one wrong label, one shifted bracket, and the whole reference structure breaks, or worse, the model silently ignores a reference you thought was intact. Apply Structured Prose (Plan v2) is the safe way to do that manual edit.
The trick is where you're allowed to edit. This node does not take the finished H3 prompt. It takes the editable_prose - the descriptive JSON that the Structured Prompt Enhancer produced - and it accepts only that form. You tweak the descriptive text in the JSON, and the node's Python reconstructs the entire H3 document from the locked plan, restoring every structural field itself.
What it accepts (and rejects)
The editable_prose input is where you paste or connect the JSON. The node is strict in ways that will surprise you the first time:
- Structural markers are rejected. No
[Shot N], no H3 section names, no cut timestamps, no dialogue-tag markup, no speaker IDs. - Extra keys are rejected. It's a schema, not a suggestion box.
- Changed Shot numbers or invalid labels are rejected. You can rephrase prose; you cannot renumber shots or relabel references.
So it's not really "edit the prompt" - it's "edit the prose, and let Python rebuild the prompt." That distinction is the entire point, and it's why this node pairs so naturally with the enhancer's editable_prose output.
Outputs that matter
h3_prompt- the recompiled final H3 prompt with every structural field restored by Python.plan_context- the validated compiled plan, for routing or another edit pass.validation_report- confirmation that the semantic locks survived, followed by the compiler report.canonical_editable_prose- the normalized JSON after validation. The tooltip's advice is worth following literally: save and edit this going forward, not the final H3 structure.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/ethanfel/ComfyUI-MiniMax-H3-Guide
Restart, browse MiniMax H3 → Plan v2. No extra dependencies, no model calls - this is pure Python recompilation. That's actually a big deal: unlike the enhancer, this node runs instantly and costs nothing, so you can iterate on prose edits as fast as you can type.
Gotchas
- It's optional. The node's own description calls it an "optional manual-edit step." If you're happy with the enhanced prompt, wire
enhanced_promptstraight to Apply Reference Plan and never touch this. - The JSON has to be the right shape. Pasting the final H3 prompt into
editable_prosefails on purpose. Get the JSON from the enhancer'seditable_proseoutput (orcanonical_editable_prosefrom a previous pass). - Wrong plan = rejected pair.
plan_contextmust match the JSON's source plan, same as everywhere else in this pack. Keep them paired.
For what it's worth, this is the node I'd reach for when a single shot's wording is bugging me and I don't want to re-run Qwen or trust myself to hand-edit a 400-line H3 document. It's a narrow job, and it does it exactly right.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| plan_context | MINIMAX_H3_PLAN_V2 | Connect compiled plan_context from Prompt Merge or the structured enhancer. | |
| editable_prose | STRING | Connect/edit the enhancer's JSON output. Structural markers, extra keys, changed Shot numbers, or invalid labels are rejected. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| h3_prompt | STRING | Recompiled final H3 prompt with every structural field restored by Python. |
| plan_context | MINIMAX_H3_PLAN_V2 | Validated compiled plan for later native routing or another edit pass. |
| validation_report | STRING | Confirmation that semantic locks survived, followed by the compiler report. |
| h3_length | INT | Native 17k+5 frame length. |
| canonical_editable_prose | STRING | Normalized JSON after validation. Save or edit this instead of the final H3 structure. |