Prompt Bank (genkai)
Stop re-typing the same style block into five workflows
- PROMPTS
Every prompt you actually like is a stack of parts: the subject, the camera direction, the lighting, the style suffix, the negative-ish "no plastic skin" clause. Most people keep them as one long string in one CLIP Text Encode and then hand-edit the line for an hour, which is how you end up with a workflow you're scared to touch.
Prompt Bank keeps those parts as separate, ordered fields. Nothing merges yet - that's Prompt Merge's job - but the bank is the half that survives: it's a named, ordered collection you can duplicate, share, and reuse across workflows without hunting for the thread where you posted the good version.
How it works
The node has one visible input, prompts_json, and one output, PROMPTS. That input is a JSON string the frontend maintains; you write in the fields, not the JSON. Each entry is a small object with a unique id and its text, and the node validates that on the way through - a malformed array raises Prompt Bank expects an array of prompts, and duplicate ids raise Prompt IDs must be unique within a Prompt Bank. Nice: it fails loudly instead of silently dropping your text.
Legacy entries that were stored as bare strings get a synthetic legacy_N id on load, so workflows from an earlier version of the pack still open. The PROMPTS output is a list of those id/text objects, and its type is GENKAI_PROMPTS - a bespoke type that only Prompt Merge speaks.
Practical UI: + Add Prompt adds a field, × removes one, fields start at three lines and grow as you type, and + Add Prompt Merge drops a Merge node on the canvas already wired to the bank and scrolls to it. Use that button; hand-wiring the pair is the exact mistake the old version of this pack had to migrate people away from.
Why keep prompts apart at all
Because the alternative is what the corpus complains about in every prompt thread: people tune one clause at a time and can't tell which change did anything. Separate fields make the variables explicit - you toggle a camera direction without touching the style line, and you can tell what moved. It's the same discipline as "change one variable at a time with a fixed seed," just applied to text.
There's a real caveat that comes from the same place, though. Splitting a prompt into parts is a convenience for you, and the model doesn't care that your fields are separate - the concatenated result is what gets encoded, and word order binds attributes. If you're prompting a model where "Clorinde is drinking an espresso while Navia eats cake" and the reversed sentence give different images, then dragging your fields around changes the output. Order in the bank is order in the prompt.
The inputs and outputs that matter
Just the one output, and the one rule: PROMPTS goes to Prompt Merge and nowhere else. Wire it into a CLIP Text Encode and nothing connects - different type, no error message you'd recognise as one. Text leaves this pair through Merge's STRING output.
How to install it
cd ComfyUI/custom_nodes
git clone https://github.com/GENKAIx/Genkai-ComfyUI-Nodes
ComfyUI Manager → Genkai-ComfyUI-Nodes also works. Restart, Ctrl+F5, then find it under GENKAI → Text. No models, no dependencies beyond the standard library - prompt_tools.py imports json and stops there.
Common issues
The connection won't take. You're feeding PROMPTS somewhere that isn't Prompt Merge. The whole point of the bundle is that it stays inside this pair.
Old workflow lost its wiring. Workflows from before the one-wire change had several Bank→Merge connections; the loader converts them automatically. Save the workflow after opening it, or you'll convert it again next time.
Text vanished from a field. Removing a neighbor shouldn't touch it - settings are stored per prompt id - but if a workflow was saved mid-edit on an older version, re-check the bank. The prompt text and row settings live in the workflow itself, so an unsaved change is gone when you close the tab.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| prompts_json | STRING | [""] | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| PROMPTS | GENKAI_PROMPTS | — |