Hypnodes Character Library
A one-click vault that injects body, outfit and negative prompts into your graph
- character
- outfit
- combined_pos
- combined_neg
- lib_bus
This is the node that makes the Hypnodes suite feel like a tool rather than a pile of text boxes. The Character Library reads your saved character vault - a JSON database organized as Category → Character → Outfit - and injects the selected character's body prompt, outfit prompt, and negative prompt into your workflow with one click. If you generate the same cast of characters over and over, this is the node you'll actually reach for.
What it does mechanically
The node itself is thin; the real work happens in the frontend. On load it fetches the library from ComfyUI's server (/hypnodes/get_library), populates the three dropdowns - category (All/Official/OC or your categories), character, and outfit - and fills the three text widgets character_prompt, outfit_prompt, and negative_prompt with the vault's data. Selecting a character updates the prompt fields live.
The frontend also adds a few buttons that aren't graph inputs but live on the node body:
- 🎲 Random Character - picks a random category, character, and outfit and injects it. Great for variants.
- auto_inject (toggle) - "Live Mode." With this on, any selection injects instantly. Note that the manual Send button is disabled while it's active.
- clear_first (toggle) - in manual mode, whether the target box is wiped before injecting or the new tags are appended to what's already there.
- Send - manually pushes the injection.
The injection rules (read this twice)
The Library finds its targets by following its output wires. There are two modes:
- Direct connections (high trust). Wire a Library output into a node and it'll inject into whatever text widget matches by keyword -
body/physique,outfit/clothes,positive/prompt,negative. It doesn't care what the node is titled. - Subgraphs and proxies (strict naming). If your target lives inside a subgraph, the node (or its proxy) must be titled exactly "Body", "Outfit", "Prompt", or "Negative" for the right slot to land. This is the setup the README walks through and the one most people get wrong the first time.
The outputs
- character / outfit (STRING) - the raw body and outfit texts.
- combined_pos (STRING) - body + outfit joined.
- combined_neg (STRING) - the merged negative.
- lib_bus (HN_LIB_DATA) - the master data stream carrying
name,category, andcreator, meant to feed the Hypnodes Image Saver so your files land in the right folder automatically.
Gotchas
The library file lives at ComfyUI/user/default/hypnodes/character_lib.json - back it up, because it's your entire vault. The pack pre-emptively overrides ComfyUI's widget validation (it returns True for everything) specifically to dodge the dreaded "Value not in list" error that plagues nodes with dynamically-changing dropdowns - so if you see validation errors around this node, that's the code working, not broken. Finally, the pack ships a default "Example Girl" entry; your real characters get added via the Library Editor.
Install
ComfyUI Manager (search Hypnodes) or:
cd ComfyUI/custom_nodes
git clone https://github.com/hypnichorse/ComfyUI-Hypnodes
Restart ComfyUI. No models to download; deps are numpy and pillow only.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| category | COMBO | 3 options: All, Official, OC | |
| character | COMBO | 1 options: Example Girl | |
| outfit | COMBO | 1 options: Loading... | |
| character_prompt | STRING | — | |
| outfit_prompt | STRING | — | |
| negative_prompt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| character | STRING | — |
| outfit | STRING | — |
| combined_pos | STRING | — |
| combined_neg | STRING | — |
| lib_bus | HN_LIB_DATA | — |