Nodes/ComfyUI-Hypnodes/Hypnodes Character Library
ComfyUI Node

Hypnodes Character Library

A one-click vault that injects body, outfit and negative prompts into your graph

By hypnichorse·Created 3 months ago·Updated 16 days ago· 0
Hypnodes Character Library
    • character
    • outfit
    • combined_pos
    • combined_neg
    • lib_bus
    category
    character
    outfit
    character_prompt
    outfit_prompt
    negative_prompt

    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:

    1. 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.
    2. 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, and creator, 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.

    CategoryHypnodes

    Inputs (6)

    NameTypeDefaultDescription
    categoryCOMBO3 options: All, Official, OC
    characterCOMBO1 options: Example Girl
    outfitCOMBO1 options: Loading...
    character_promptSTRING
    outfit_promptSTRING
    negative_promptSTRING

    Outputs (5)

    NameTypeDescription
    characterSTRING
    outfitSTRING
    combined_posSTRING
    combined_negSTRING
    lib_busHN_LIB_DATA