Built-In Reference
Wiring H3's Built-In Cast
- prompt
- mapping
MiniMax H3 already knows these people. Stop re-describing them.
H3 is the 33B omni-modal video model from MiniMax - text, image, video and audio in one context, with native stereo audio, and it came with day-zero ComfyUI support when the weights dropped in August 2026. It's genuinely good at characters it's seen before. So when you want Abby Sciuto sitting at her desk, the smart move isn't to write "a goth forensic scientist with a pixie cut" and pray. It's to tell H3 who she is by name and let the model's own knowledge carry the look.
That's the entire job of H3 Built-In Reference (class H3BuiltInReference, from video/text): you type a caret tag like ^Abby Sciuto^, and the node expands it into a full descriptive line H3 actually understands. The name is honest - this isn't a loader, it's a prompt-text expander with a searchable catalog bolted on.
How it works
The node ships with built_in_references.md, a hand-maintained Markdown table of 500+ characters split into folders. The good folder holds the "usable" ones (503 characters, 542 clips); onthefence is the 82 borderline cases. Each row is character name, actor, franchise, and clip filenames.
At execution, the node parses that file, matches your caret tags against it, and rewrites the prompt:
[Shot 1] ^Abby Sciuto^ works at her desk.
becomes
[Shot 1] **Abby Sciuto** played by Pauley Perrette featured on NCIS works at her desk.
Where a character has multiple portrayals - and Bruce Wayne/Batman has at least four - a bare ^Bruce Wayne / Batman^ errors out with "has multiple portrayals", and the node tells you to copy the actor-specific tag from the catalog instead: ^Bruce Wayne / Batman | Christian Bale | The Dark Knight^. That's the one footgun. The character browser at /h3-built-in-references (opened by the node's Open Built-In Characters button) lets you search and copy those exact tags, so you rarely hit it by hand.
Two implementation details worth knowing. The IS_CHANGED method includes the catalog's file revision, so if you edit built_in_references.md and refresh, the node re-parses it - no cache to clear. And the second output, mapping, is a plain-text ^Abby Sciuto^ -> **Abby Sciuto** played by Pauley Perrette… list of every tag you used. You don't need to wire it anywhere; it's there for debugging.
The inputs and outputs that matter
The whole thing is one box, which is refreshing:
- prompt_template (STRING, multiline) - your prompt with caret tags in it. That's it. Default is
[Shot 1] ^Abby Sciuto^ works at her desk. - prompt (STRING) - the expanded prompt. Wire this into the MiniMax H3 node's prompt input.
- mapping (STRING) - the tag-to-description log.
Note that built-in characters are prompt-only. They don't consume any of H3's image or audio reference sockets, so you can stack five known characters in one shot and still have all nine image refs and three audio refs free for your own material. The paired node for that - H3 Tagged Reference Prompt - handles the {tag} media library, same pack.
Installing it
Via ComfyUI Manager, search for H3 Reference Library, or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/nikaskeba/ComfyUI-Minimax-H3-Reference-Library.git
Then restart ComfyUI. No extra Python packages, no model downloads - the catalog is bundled with the node, and the node itself makes zero external requests. If you're in the US, EU, UK or Korea, be aware the H3 weights are territory-restricted under the MiniMax H3 Community License; that's a model-licensing issue, not a node problem, but it's the thing that actually stops you running this.
One honest caveat: this is a convenience node. Everything it produces is a sentence you could type yourself, and H3's memory of a character is what it is - the onthefence folder exists because some of these look right and some don't. If the expanded description isn't landing the likeness, that's the model, not the wiring. For characters you want to lock down hard, use image and audio references instead; for the ones H3 already has in its head, this is the fastest path there is.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_template | STRING | [Shot 1] ^Abby Sciuto^ works at her desk. | Use character tags such as ^Abby Sciuto^ or voice tags such as ~Abby Sciuto~. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| mapping | STRING | — |