Nodes/comfyui-nodes/Prompt Load (Symbiotica)
ComfyUI Node

Prompt Load (Symbiotica)

Keep your prompts in files, not trapped in the workflow JSON

By symbiotica-ai·Created 6 months ago·Updated about 12 hours ago· 3
Prompt Load (Symbiotica)
    • text
    ◄path►
    ◄file►

    The problem it solves

    Your prompt is a text box inside the workflow file. No history, no diff, no review - and if you commit the graph, your prompt rides along as one opaque blob. Teams rendering hundreds of assets off a prompt book feel this immediately: the prompt is the product, and it's stored in the least manageable format available.

    Prompt Load (Symbiotica) fixes exactly that and nothing else. It reads one text file off disk and hands you its contents as a STRING. The prompt lives in a .md file you can edit in any editor, diff, keep next to the project, or let a whole book of them grow in a folder. Two inputs, one output, no model anywhere in it - this is a plumbing node in the proper sense, and the plumbing layer is the most stable corner of ComfyUI.

    How it works

    You give it path, the folder holding the prompts, and file, which file under that path. Output is text. Wire text into a CLIP Text Encode, into the pack's own Gemini or Claude prompt input, into anything that takes a string.

    The interesting part is the caching. A file loader that re-reads on every queue defeats ComfyUI's cache for everything behind it - and re-bills whatever hangs off the prompt. So this node keys its cache on the folder, the filename, and the file's mtime_ns and size. Nothing picked, a name that doesn't resolve, a file that isn't there all stamp the same empty value, deliberately, so a node waiting on a path doesn't re-run on every queue; change the file and the stamp changes, which is a real change and a re-run. That's the whole point of "it re-runs only when the file itself changes" - the opposite of the always-dirty NaN trick in loaders that have to fire every run.

    The node is also an output node, so you can queue it on its own with nothing downstream. That isn't decoration: when path arrives on a wire the canvas can't read - a Get node, a switch - the first queue is the only way the dropdown learns which folder to list. The path that run resolved is handed back to the node and saved with the workflow, so a reload still knows it.

    What's in the folder, and what isn't

    The file dropdown lists every prompt file under that folder, subfolders included, so _rules/03-light.md is a normal thing to pick. Prompt files are .md and .txt, plus extensionless files - people save a prompt as chair all the time, and hiding it would be a lie about what's on disk. Dot-files are skipped and anything else stays out of the list. Containment resolves through real paths, so no crafted name climbs out of the folder and hands the node an arbitrary file to read.

    Text comes back literally: no wildcard expansion, no {this|that} bracket parsing, no substitution. The node doesn't interpret anything, which is a feature when your prompt is 300 words of asset-specific art direction.

    Installing it

    ComfyUI Manager → search Symbiotica → install, restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
    pip install -r symbiotica/requirements.txt
    

    Dependencies are requests and pillow; neither is needed for this node's actual work, which is open() on a file. No API key is required - the README's keys are for the pack's Claude and Gemini nodes.

    It's built to sit beside Prompts (Symbiotica) in the same pack, which edits a prompt file on the canvas: point both at the same path and the panel and the graph read the same file. A plain folder of .md files works fine on its own.

    Common issues

    Pointed it at a file instead of a folder. path is the folder; the file goes in file. Point it at prompt.md and the dropdown lists nothing, because there's nothing under it.

    Wired path and got an empty dropdown. The first queue is what resolves a wired path and pushes it to the canvas. Queue the node once on its own; after that the node remembers the path the run used.

    A picked file that's gone is an error, on purpose. Silently loading nothing would send an empty prompt to a billed model, so a missing file raises instead. Nothing picked is different: that returns an empty string without complaining, because it's the state a node waiting on a wire lives in.

    Renaming or moving files. Saved graphs store the file name, so a rename in your editor leaves the node pointing at something that no longer exists. Re-pick from the dropdown.

    Every node in the pack vanished at once. This pack is written against ComfyUI's newer V3 node API. On an older install the console shows [Symbiotica] Failed to load … with a traceback and nothing appears - update ComfyUI rather than debugging the node. And since it's a studio pipeline pack rather than a community favourite, the README is the documentation, and it's unusually thorough.

    CategorySymbiotica

    Inputs (2)

    NameTypeDefaultDescription
    pathSTRINGThe folder holding the prompts — the same path the Prompts node is given. Type it, or wire a string.
    fileSTRINGWhich file under that path. The dropdown lists every prompt file it holds, sub-folders included.

    Outputs (1)

    NameTypeDescription
    textSTRINGThe file's text.