Prompt Store (CCN)
Prompt Store (CCN)
- prompt
- metadata
- features
- scene
- details
- feedback
Here's the trick this node pulls: you build a prompt once, and it keeps it. Prompt Store (CCN) is the persistent big brother of the pack's Prompt Builder. Same five sections - metadata, features, scene, details, feedback - same assembly, except everything you type gets stashed in session memory keyed by a store_name, and the next time any Prompt Store with that same name runs, it starts from what's already stored instead of a blank slate.
The author built this for a very real workflow pain: you're juggling a set of prompt blocks across multiple workflows - an "action_shots" store whose mood is always "dark, gritty, and chaotic" - and you don't want to retype the shared bits every time you open a new graph. Store it once under a name, and any workflow in your ComfyUI session can pick it back up.
How the persistence works
Storage lives in ComfyUI's process memory (a module-level dict, not a file on disk). That means two things worth internalizing:
- It survives across workflows - you can write it in one graph and read it in another, until ComfyUI restarts.
- It survives until ComfyUI restarts. Restart clears everything, as does the
cleartoggle or a Prompt Store Clear node.
The input_mode dropdown decides what happens when you type into a section that already has a stored value:
- override - replace what's stored with your new text.
- merge - split your input on the
separator(default,) and append only the pieces that aren't already there. Great for "same scene, add a new detail" without duplicating tags. - append - just add your text onto the end of whatever's stored.
The subtle one that trips people: an empty section input leaves the stored value untouched. That's deliberate - it's how you run a store without clobbering it. If you want to wipe a section, clear the store or pass an explicit override.
Inputs and outputs that matter
- store_name - the key. Matching name = shared storage.
- input_mode / separator / clear / prefix_sections / delimiter - behavior knobs, above.
- The five section boxes - your content, one per section.
- Outputs: the assembled
promptSTRING, plus each section individually (metadata, features, scene, details, feedback) so you can wire one section somewhere else in the graph without re-parsing the combined string.
Install
One pack, one install:
cd ComfyUI/custom_nodes
git clone https://github.com/valkymaera/ComfyCollectorNodes
then restart ComfyUI, or use ComfyUI Manager and search "ComfyCollectorNodes". No models, no extra dependencies.
Where people get burned
The big one is forgetting the storage is session memory, not per-workflow. A value you thought you cleared last week is still there because you never restarted ComfyUI - or conversely, you restart and a store you depended on is suddenly empty and you didn't notice. Keep a Prompt Store List node around to see what's actually stored. And the empty-input-means-keep-existing behavior: if you're used to blanking a field to remove it, that won't work here - use clear mode.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| store_name | STRING | default | — |
| delimiter | STRING | \n\n | — |
| prefix_sections | BOOLEAN | false | — |
| clear | BOOLEAN | false | — |
| input_mode | COMBO | override | 3 options: override, merge, append |
| separator | STRING | , | — |
| metadataopt | STRING | — | |
| featuresopt | STRING | — | |
| sceneopt | STRING | — | |
| detailsopt | STRING | — | |
| feedbackopt | STRING | — | |
| debugopt | BOOLEAN | false | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| metadata | STRING | — |
| features | STRING | — |
| scene | STRING | — |
| details | STRING | — |
| feedback | STRING | — |