Text Storage (Reader)
Your saved text, one dropdown away
- text_content
Sometimes a workflow needs text that isn't generated in the same run. A negative prompt you keep tweaking, a base prompt template, a snippet of context you saved last week - the kind of thing you don't want to retype into a widget every session. Text Storage (Reader) is the pull side of the pack's persistent text clipboard: pick an entry from a dropdown, get the text out.
It's deliberately paired with the pack's Text Storage (Writer). That split is recent history worth knowing: the original single "Text Storage" node tried to save and load in one place, and users on the launch thread literally said they couldn't figure out how to save with it. The author responded by splitting it into a dedicated writer and this dedicated reader - which is the right call, and it's the version you're using now.
How it works
The node scans the pack's storage location and builds a dropdown (text_key) of every entry it finds - both JSON keys and standalone .txt files, so it doesn't matter which format you wrote them in. Pick one, and the text_content output gives you the stored string. Where entries live has evolved: current ComfyUI installs store under the ComfyUI user directory, while legacy entries in the plugin's own text_storage/ folder stay readable - the reader handles both.
One output: text_content (STRING). Wire it into a CLIP Text Encode, a text concat node, or the Advanced Text Filter for further processing.
The one sharp edge: the dropdown is built when the node loads. Save something new with the Writer and the Reader won't see it until you refresh the page (F5). It's annoying, it's documented, and it's the #1 "why can't I find my file" moment - so it's worth having internalized.
Install
Comes with ComfyUI Text Processor:
cd ComfyUI/custom_nodes
git clone https://github.com/rookiestar28/ComfyUI_Text_Processor.git
pip install -r requirements.txt
Restart after. Manager: search "ComfyUI Text Processor".
Gotchas
The refresh-before-it-appears thing is the whole gotcha list, honestly. And one habit worth forming: because text_key is a dropdown of all entries, it grows as you save - use the Writer's filename_prefix (like ProjectA_) so your keys stay grouped and scannable instead of becoming a wall of My_Data. For cross-workflow text persistence - the same base prompt used by three different graphs - this is the cleanest way to stop maintaining it in three places.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text_key | COMBO | Saved Text Storage entry to read. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text_content | STRING | Stored text content for the selected key. |