H3 Cast Member (Save/Load)
Save Your Cast Once, Stop Re-Numbering <Picture> Tags
- image_1
- image_2
- image_3
- image_4
- voice
- cast_member
- views
- report
MiniMax H3 is a multi-reference model: you feed it up to nine <Picture> reference images and three <Audio> clips, and it holds those people - and voices - through the whole clip. That's genuinely great, until you're retyping <Picture 1>, <Picture 2>: Maya - red jacket, nervous energy by hand in every single workflow you build. H3CastMember is the save-file node for that. Create a character once, and it becomes a named asset you load into any project from then on, by name.
The key design choice: nothing is hidden inside your workflow JSON. Each character lives on disk as a plain folder under <comfy user dir>/default/minimax_h3/reference_sheets/<name>--<id>/, holding a manifest.json, images/*.png and audio/*.wav. Set the MINIMAX_H3_REFERENCE_SHEETS_DIR env var to relocate the whole library. Because assets live on disk rather than in the graph, they survive restarts, reinstallations, and any graph edit you make. The on-disk format is also deliberately manifest-compatible with ethanfel's ComfyUI-MiniMax-H3-Guide reference sheets - assets saved by either pack load in both.
Three operations, one dropdown
- Create - connect 1–4 view images (
image_1..image_4), optionally a voice clip, give it anameanddescription, and it's saved permanently. - Load (default) - pick any saved character from the
saved_memberdropdown. - Update - append more views or a voice to an existing member.
The voice handling is the sleeper feature. H3 budgets audio references at 15 seconds max, and the node trims your clip to that window non-destructively - voice_start_seconds and voice_duration_seconds (default 10) do the cutting, so you never have to pre-edit audio in another app. The description field matters more than it looks: it's used verbatim in the auto-written prompt intro later, so write it like it's going into the prompt - appearance, wardrobe, personality.
Inputs and outputs that matter
You'll actually touch a handful of these:
operation,name,description- the core of Create.image_1..image_4,voice- 4 input sockets, but you can build up to 9 views total via Update.voice_start_seconds,voice_duration_seconds- the trim window.confirm_update- a safety latch. Update refuses to write anything unless this is on, so a stray graph run can't clobber a saved character.
Outputs are three: cast_member (the H3_CAST_MEMBER bundle you feed into H3CastToVideo), views (a preview batch of every saved view, resized to the first view's canvas so you can eyeball what you're loading), and report (a string saying exactly what was created, loaded, or updated).
Gotchas
- Create throws if there's no
nameor no connected image - you can't save a nameless, empty character. - Update is write-protected by design: it raises unless
confirm_updateis toggled on. That's the feature, not a bug. - Caps are 9 views and 3 audio clips per member; going past them raises rather than silently truncating.
Install
Same as the rest of the pack - it appears under MiniMax H3/cast:
cd ComfyUI/custom_nodes
git clone https://github.com/kat3ri/ComfyUI-H3-Cast
# restart ComfyUI
Or grab "ComfyUI-H3-Cast" from ComfyUI Manager. No Python dependencies - audio I/O is stdlib WAV - and the only real requirement is a ComfyUI build with the native MiniMax H3 nodes (comfy_extras/nodes_minimax_h3.py). You still need the H3 weights themselves, which are a separate download and, note, sit under a community license that excludes the US, EU, UK and South Korea.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| operation | COMBO | Load | 3 options: Load, Create, Update |
| saved_member | COMBO | 1 options: (none -- unused in Create mode) | |
| name | STRING | — | |
| description | STRING | Character description used verbatim in the auto-written prompt intro -- appearance, wardrobe, personality. | |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| image_4opt | IMAGE | — | |
| voiceopt | AUDIO | Voice sample saved with the character (used as an <Audio j> reference at compose time) | |
| voice_start_secondsopt | FLOAT | 0.00–3600 | — |
| voice_duration_secondsopt | FLOAT | 10.02–15 | H3 audio references are budgeted at 15s max |
| confirm_updateopt | BOOLEAN | false | Safety latch: Update appends connected media to the saved member only when this is on |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| cast_member | H3_CAST_MEMBER | — |
| views | IMAGE | — |
| report | STRING | — |