Nodes/zer0 Comfy Utilities/Tavern Card Info Node (zer0)
ComfyUI Node

Tavern Card Info Node (zer0)

Read a character card's brain out of a PNG, field by field

By zer0thgear·Created 2 years ago·Updated 2 years ago· 1
Tavern Card Info Node (zer0)
    • Card Name
    • Card Description
    • Personality
    • Scenario
    • First Message
    • Message Examples
    • Creator Notes
    • Author
    • Version
    image

    Every SillyTavern character card is a PNG wearing a disguise: the picture is the surface, and the character's entire brain - name, personality, scenario, first message, example dialogue - lives in a base64 JSON blob hidden in a text chunk called chara. The Tavern Card Info Node (zer0) is the extraction side of that trick. Drop a card PNG in, and it splits the brain back out into nine separate string outputs you can wire anywhere.

    This is the natural companion to the pack's Tavern Card Creation Node, and it's the node you want when cards are an input to your pipeline rather than a product of it. Say you're building a workflow that renders a character from an existing card - you load the card, pull the personality and scenario out as strings, hand them to a prompt-builder node, and generate a fresh portrait. Before this, you'd be opening cards in SillyTavern and copying text by hand. Now the card is data in your graph.

    How it works

    The node opens the PNG, grabs the chara text chunk, base64-decodes it, JSON-parses it, and pulls the data object - the same read path SillyTavern itself uses for v2 cards. It then hands you the basic fields as nine STRING outputs, one per port:

    Card Name, Card Description, Personality, Scenario, First Message, Message Examples, Creator Notes, Author, Version.

    Wire them into text nodes, a list builder, a text concat - anywhere strings flow. Because every output is a plain STRING, this slots into prompt-assembly graphs without any type gymnastics.

    The input is the only moving part: image, an upload widget that lists the PNGs in ComfyUI's input directory. Click it, pick your card, run.

    Where people get burned

    This node is strict, and it's worth knowing the strictness comes from the code, not from bad luck:

    • It only reads v2-spec cards. The code reaches straight for img.text["chara"]. If your PNG isn't a character card - or is an old v1 card with a differently-shaped payload - that lookup throws a KeyError and the node fails. You'll see the error, not a graceful "no card here." If that happens, confirm the PNG actually came from SillyTavern or a v2-compliant tool.
    • It returns the basic fields only. No system prompt, no post-history instructions, no character book, no alternate greetings - the full v2 spec has those, but this node deliberately stops at the nine basics. If you need the deep fields, you're reading the card elsewhere.
    • The pairings are what the creation node wrote. If a card was made with the sibling Creation Node, Author here maps back from the creator field and Version from character_version. Round-trips cleanly, which is the intended loop.

    Install

    Same as the rest of this tiny pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/zer0thgear/zer0-comfy-utils
    

    Restart ComfyUI; it appears under utility. Or ComfyUI Manager → Install Custom Nodes → search "zer0 Comfy Utilities". No models to download, no new Python packages beyond the pack's single tiktoken dependency (which this node doesn't even use - it's pure PIL and stdlib). It's a small personal tool, last touched in early 2025, but the mechanism is so simple there's not much to break.

    Categoryutility

    Inputs (1)

    NameTypeDefaultDescription
    imageCOMBO1 options: example.png

    Outputs (9)

    NameTypeDescription
    Card NameSTRINGCard info in the form of strings.
    Card DescriptionSTRING
    PersonalitySTRING
    ScenarioSTRING
    First MessageSTRING
    Message ExamplesSTRING
    Creator NotesSTRING
    AuthorSTRING
    VersionSTRING