Prompt Selector
Prompt Selector Is Your Prompt Library, As a Node
- Prompt
If you've got a folder of prompt text files, or you keep pasting the same "golden hour, shot on 35mm, shallow depth of field" block into every workflow, Prompt Selector is that habit turned into a node. It's the main event of the fabbarix/comfyui-promptstore pack: a prompt library that lives in a YAML file, organized into categories, with a dropdown instead of a clipboard. Select a saved prompt, tweak it, and a plain string comes out the other end - ready to wire into whatever CLIP Text Encode node your checkpoint uses.
The interesting part isn't the dropdown, though. Plenty of packs do "select a saved prompt." What the author calls the point of difference is the interpolation: your stored prompts can contain placeholders that get filled from another prompt at generation time. That's what makes this worth more than a scratchpad.
How it works
Prompts are stored in a YAML datastore at ComfyUI/user/comfyui-promptstore/promptstore.yaml. On first run the pack creates four empty categories - Style, Subjects, Environment, Framing - and from then on the node reads from (and writes to) that file through local HTTP routes. No external API, no keys, nothing leaves your machine.
The node itself is deceptively simple. Selecting a category and a prompt_title loads the stored text into the editable prompt field, and the output Prompt string is that text run through an interpolator together with the optional initial_prompt input. So the prompt widget is where the real control lives - you can override the stored text on the fly without touching your library.
The interpolation is three patterns, and you only really need the first two:
{}- replaced with whatever comes in oninitial_prompt. Pipe another Prompt Selector (or the pack's bare Prompt Template node) into it and you can chain stored prompts together.${subject:Henry}- define a variable with a default in one prompt, then use${subject}in another. Saved prompt says "is standing in the foreground," your subject prompt defines the character, and you get both combined.@{var}- a structural substitution that splices one prompt into the middle of another. Power-user territory; skip it until the first two feel limiting.
The variables are case-sensitive, and a {}/${var} placeholder that has no matching definition is left in the output untouched rather than silently eaten.
The inputs that matter
You set two dropdowns, edit one text box, and maybe feed one input:
- category - which group of prompts you're browsing (Style, Subjects, Environment, Framing, plus anything you add).
- prompt_title - the specific saved prompt. One quirk: the list is built from all titles across every category, so if two categories contain a prompt with the same title, the dropdown gets confusing.
- prompt - the actual text that gets interpolated and output. Editable, so you can refine the stored prompt per-run.
- initial_prompt (optional) - pre-fills the prompt field and supplies the values that
{}and${var}placeholders resolve against.
The single output is Prompt, a plain STRING - wire it straight into a CLIP Text Encode node.
Installing it
No models, no heavy deps - just pyyaml. Easiest via ComfyUI Manager: search for Prompt Store (or "comfyui-promptstore") and install. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/fabbarix/comfyui-promptstore
Then restart ComfyUI. Note the README's install snippet has a placeholder URL in it - ignore that and use the one above.
Where people trip up
This is a young, small pack - the author posted it to r/comfyui in late 2025 as "still rough around the edges," and it shows in a few places worth knowing about.
- The datastore is read once at startup. Hand-edit the YAML and ComfyUI won't notice until you restart. That's the README's own troubleshooting step: prompt not updating → restart.
- Categories not appearing after you edit YAML usually means a formatting slip - one bad indent and the file silently fails to load.
- No built-in manager UI for bulk edits. You add prompts via a Save button on the node or by editing the YAML by hand. For a big library, the YAML route is honestly faster.
- Watch for duplicate prompt titles across categories, per that all-titles dropdown above.
Worth the install if you generate in batches or want your style/subject blocks to live in one place. For a one-off image? Skip it - a text file is fine. This earns its keep when your prompts become a library you reuse.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| category | COMBO | The category of prompts to select from. | |
| prompt_title | COMBO | The prompt to use. | |
| prompt | STRING | — | |
| initial_promptopt | STRING | An initial prompt to pre-fill the prompt field. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Prompt | STRING | — |