Fantastic H3 RefMod Stack
Your saved references, one row each
- mods
- mods
- labels
What you'd reach for it for
A RefMod is a reference you save once and reuse forever: a character's look, a voice, a place, a style, encoded into a small latent file under ComfyUI/models/refmods. Think LoRA, minus the training run - you make it from a handful of photos or one clean recording, and from then on it's just a file you pick. The catch is that a prompt is written for a specific set of references, and something in your graph has to hold the picks for this prompt and hand them down the line.
That's this node. It's the one you point at your saved RefMods. It does not make them and it does not use them - it collects them into a bundle and tells you what the next node will call them.
One thing to get out of the way: the stack_state widget is not for typing in. Click Browse library… on the node (or ◈ RefMods inside the prompt editor) and pick from thumbnails; the panel writes that JSON for you.
How it works
Each pick carries a weight per channel - one for the look, one for the voice. The node turns those into a flat list of (mod, strength) pairs, which is what H3_REF_MODS is: the same bundle type the upstream ComfyUI-MiniMaxH3Mod pack uses, so files and bundles travel between the two packs freely. Files load once and stay cached, keyed to their size and modification time, so a RefMod you rewrite on disk gets picked up rather than served stale.
The weights are where intuition fails. Up to 1 is plain strength - that's the reference softened toward a blurred copy of itself, not scaled down or half-dropped, which is why 0.5 gives you a dreamier version of the same face and not a different one. Above 1 doesn't scale anything: it adds copies. A weight of 2.7 sends two full-strength copies and a third at 0.7. Every copy is another reference riding through every sampling step, so this is the fastest way to make a generation crawl.
Order is not cosmetic. H3 numbers references by the order they arrive, and your prompt cites them as <Picture 1>, <Video 1>, <Audio 1>. Drag a row and the numbers move.
The inputs and outputs that matter
stack_state- the JSON the library writes. If it ever corrupts, the node tells you to clear it and pick again.mods(optional input) - append another stack or loader. Its entries come first, so their labels keep their numbers.modsoutput - wire it to Fantastic H3 RefMod Text Encode'smodsinput, or to RefMod Apply, or to the upstream pack's nodes. This is the wire that actually does something.labelsoutput - plain text listing the<Picture n>/<Video n>/<Audio n>names the next node will assign, with repeated copies collapsed into a range like<Video 1–3>. Read it, or send it to a text preview. Don't wire it to Text Encode in place ofmods; it's a report, not a payload.
Install
Search Fantastic H3 Prompt Builder in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Adudeguyman/ComfyUI-Fantastic-MiniMaxH3-PromptBuilder
Restart ComfyUI fully - not a browser refresh. You need ComfyUI 0.30.0 or newer for H3 at all, the H3 model files (a ref2va checkpoint, or better a fl2va/ref2va hybrid), and the H3 video VAE for anything visual. The pack's only declared dependency is av (PyAV) for decoding video.
Where people get burned
Renaming, moving or deleting a RefMod you already picked breaks the queue, and the message is blunt: RefMod 'x' was not found under models/refmods. Open the library and pick it again. Re-pick it; the row keeps its weight.
The footer shows the bundle's total token cost, and if it's over the limit you set there, the queue refuses with a number rather than quietly trimming. The fix is the boring one: lower a weight, drop a pick, or raise the limit.
An empty stack - or every row switched off - isn't an error here. Text Encode just reports "No references", and your carefully written <Video 1> refers to nothing. If results look like the model is ignoring your character, check labels first.
Finally, the node's own description says RefMod files are created with ComfyUI-MiniMaxH3Mod. That's stale: in this pack you make them in the library's Create tab, and the files are the same format either way.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| stack_state | STRING | {} | — |
| modsopt | H3_REF_MODS | Another stack or loader to append to. Its entries come first, so their labels keep their numbers. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| mods | H3_REF_MODS | — |
| labels | STRING | — |