Nodes/ComfyUI-fusenchatPrompter/Fusenchat Prompt Chips
ComfyUI Node

Fusenchat Prompt Chips

Drag a PNG back in and get your prompt as editable, reorderable chips

By Sekiun·Created 3 months ago·Updated 3 months ago· 0
Fusenchat Prompt Chips
    • prompt
    prompt
    chip_data{"version":1,"singleSelect":false,"chips":[]}

    You've probably been there: you generate a good image somewhere else, then want to reuse that exact prompt in ComfyUI, but it's buried in PNG metadata and you end up hand-typing it into a CLIP Text Encode node. Fusenchat Prompt Chips exists to kill that chore. Drop a PNG onto it and the prompt comes back as a row of text chips you can reorder, toggle, or delete before it flows into your sampler.

    This is the first (and so far only) node from Sekiun/ComfyUI-fusenchatPrompter, a companion to the author's own tool fusenchat, which stamps prompts into PNG text chunks so they survive outside ComfyUI. If you're already producing those images, this is the round-trip home. If you've never heard of fusenchat, the node still works - it just won't read a random A1111/ComfyUI PNG, because it's specifically looking for the fusenchat:text (or fusenchat:payload) chunks that tool writes.

    How it works (spoiler: the Python does almost nothing)

    The backend class is a five-line shell. get_prompt() literally returns the prompt string it's handed; all the real work lives in the frontend JavaScript under web/js/. That's worth knowing, because it means the node is pure browser code - no models, no API calls, no Python dependencies beyond ComfyUI itself. The README is the source of truth here: no requirements.txt ships in the pack at all.

    Drop PNGs on the node and the browser parses the PNG text chunks (tEXt, zTXt, iTXt) itself, reads fusenchat:text, and falls back to the text field inside the fusenchat:payload JSON if the direct chunk is missing. Each chip's text gets newlines flattened to spaces, then the enabled chips are joined in display order into one line - that's your prompt output.

    The inputs that actually matter

    The schema lists two required STRING widgets, but you'll never touch them directly:

    • prompt (STRING, multiline) - the built prompt. The frontend hides the widget and syncs it behind the scenes; this is what the output carries.
    • chip_data (STRING) - a JSON blob ({"version":1,"singleSelect":false,"chips":[...]}) that stores each chip's text, order, and enabled state. It's how the node restores your chips when you reload a workflow. Filenames and image data are not saved - just the text.

    The only output is prompt (STRING), which wires straight into a CLIP Text Encode node (or any node that wants a STRING). Remember that's all it is - a string. You still need the encode step before it reaches your sampler.

    In the UI: drag chips to reorder (order matters - earlier tags get stronger attention on tag-based models), hit the to disable a chip (disabled chips go purple and drop out of the output), the + adds a hand-typed tag, and single-select mode (単一選択モード - the UI is Japanese-only, fair warning) keeps exactly one chip enabled.

    Installing it

    ComfyUI Manager is the easy route - search "ComfyUI-fusenchatPrompter" and hit install. Or from a terminal:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Sekiun/ComfyUI-fusenchatPrompter
    

    Then restart ComfyUI. It'll be under prompt/fusenchat > Fusenchat Prompt Chips. Nothing heavy to download - no model files, no pip deps. It's the rarest kind of custom node: a dependency-free frontend gadget.

    Where people get burned

    • It only reads fusenchat-format PNGs. Drop a normal PNG with no fusenchat: chunks and the node errors out (status text turns red). This is by design, not a bug - it's reading a very specific metadata format.
    • Compressed metadata needs a modern browser. The parser uses DecompressionStream to inflate zTXt/iTXt chunks, so anything older than a ~2022 Chrome/Edge/Firefox can't read compressed payloads.
    • Don't expect a REST API or key. The name sounds like a chat service, but "fusenchat" is just the author's PNG metadata project. No network calls anywhere.

    If your prompt workflow already lives inside ComfyUI, this node is niche - you're probably fine with a plain text node. But if you're round-tripping prompts between fusenchat and the canvas, it's exactly the missing link.

    Categoryprompt/fusenchat

    Inputs (2)

    NameTypeDefaultDescription
    promptSTRING
    chip_dataSTRING{"version":1,"singleSelect":false,"chips":[]}

    Outputs (1)

    NameTypeDescription
    promptSTRING