MiniMax H3 Output Unpacker 👻
The 22-port hose that turns one H3 pipe into wires you can actually use
- h3_output
- prompt
- first_frame
- last_frame
- ref_image_1
- ref_image_2
- ref_image_3
- ref_image_4
- ref_image_5
- ref_image_6
- ref_image_7
- ref_image_8
- ref_image_9
- ref_video_1
- ref_video_2
- ref_video_3
- ref_video_audio_1
- ref_video_audio_2
- ref_video_audio_3
- ref_audio_1
- ref_audio_2
- ref_audio_3
The MiniMax H3 Prompt Optimizer in this pack doesn't hand you a bunch of sockets. It hands you one H3_OUTPUT pipe containing everything - the rewritten prompt, a Chinese review copy, your first/last frames, reference images, reference videos, audio tracks - all bundled into a single custom type. MiniMax H3 Output Unpacker 👻 is the other end of that hose: plug the pipe in and 22 individual output ports come out the other side.
If you've used a context bus or a bundle node in ComfyUI, the pattern is familiar - one fat wire instead of a spaghetti plate of twenty. The KB's node-plumbing notes on pipes nail the tradeoff: a single wire makes the graph legible, but the contents become opaque until you unpack them. This node is the "unpack" half.
What comes out
The port names are aligned with the official ComfyUI MiniMaxH3ImageToVideo and MiniMaxH3ReferenceToVideo nodes, which is the whole point - you can wire these straight into what the official nodes expect:
- Text:
prompt(the optimized English H3 prompt) andprompt_zh(the Chinese review translation). - Keyframes:
first_frameandlast_frame- for I2VA (image-to-video) and FL2VA (first/last-frame) modes. - References:
ref_image_1throughref_image_9- up to nine reference images for Ref2VA mode. - Video references:
ref_video_1toref_video_3, plus their soundtracksref_video_audio_1toref_video_audio_3. - Standalone audio:
ref_audio_1toref_audio_3.
One input: h3_output (type H3_OUTPUT). Nothing to configure - this is the purest node in the pack, a mechanical dict unpack.
How it works
The Optimizer (or Studio) packs everything into a single dict - prompt strings, image tensors, video frame tensors, audio dicts - and this node reads the keys back out. Ports with no content (say, you only uploaded one image in I2VA mode, so ref_image_2 through 9 are empty) come back as None, and ComfyUI treats empty sockets gracefully. Nothing is generated here, nothing is transformed; it's plumbing, and it's correct plumbing.
When you'd reach for it
Any workflow that uses the pack's MiniMax H3 Prompt Optimizer - that node only has one output port, so if you need prompt, first_frame, and ref_image_1 in three different places, this node is mandatory. It's also the natural bridge if you're using the Optimizer purely as a prompt-writing tool (the prompt ports are useful on their own) but want to feed the reference materials into a different video pipeline.
The alternative is the pack's MiniMax H3 Studio, which does the Optimizer + Unpacker + official generation nodes in one shot and outputs conditioning/latent directly. Use the Optimizer + this Unpacker when you want to see and wire each piece yourself; use Studio when you want the whole chain collapsed into one node.
Install
# ComfyUI Manager: search "ComfyUI-Minitools"
# or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/lepiai/ComfyUI-Minitools
# restart ComfyUI
No dependencies of its own. It does nothing on its own though - you need the Optimizer or Studio upstream, and if you're driving actual H3 generation, a recent ComfyUI with the official MiniMax H3 nodes present.
The honest notes
- It's a packaging decision, not a feature. If you hate context bundles, you can skip the whole pipe by using Studio directly. The Unpacker exists because the author chose the pipe design for the Optimizer.
- Two custom types you'll need to learn once.
H3_OUTPUTandH3_LLM_CONFIGare pack-specific; expect red sockets until you connect the matching nodes. - Video/audio references need backend tools. The Optimizer decodes uploaded videos with ffmpeg (it specifically needs a build with the
image2muxer) and audio with PyAV or torchaudio. If your reference ports come back empty, that's usually the ffmpeg check failing, not this node.
Boring, mechanical, and exactly what a pipe needs - if you're already in the pack's H3 workflow, this is the node that makes everything else usable.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| h3_output | H3_OUTPUT | — |
Outputs (21)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| first_frame | IMAGE | — |
| last_frame | IMAGE | — |
| ref_image_1 | IMAGE | — |
| ref_image_2 | IMAGE | — |
| ref_image_3 | IMAGE | — |
| ref_image_4 | IMAGE | — |
| ref_image_5 | IMAGE | — |
| ref_image_6 | IMAGE | — |
| ref_image_7 | IMAGE | — |
| ref_image_8 | IMAGE | — |
| ref_image_9 | IMAGE | — |
| ref_video_1 | IMAGE | — |
| ref_video_2 | IMAGE | — |
| ref_video_3 | IMAGE | — |
| ref_video_audio_1 | AUDIO | — |
| ref_video_audio_2 | AUDIO | — |
| ref_video_audio_3 | AUDIO | — |
| ref_audio_1 | AUDIO | — |
| ref_audio_2 | AUDIO | — |
| ref_audio_3 | AUDIO | — |