Reference Prompt
Type @Alex instead of wiring six Load Image nodes
- text
Reference-driven editing is now the default way people hold a character together: you show the model the face instead of describing it. The workflow cost of that is bookkeeping. One Load Image per reference, each wired into image_1, image_2, image_3, and a prompt that has to say "image 3" and mean the third wire. Add a reference, renumber, re-check your own prompt, repeat.
ReferencePrompt throws the wires away. You keep files in named libraries, type @Alex in the text, and when you queue, the tagged files are plugged into the model's image, video and audio inputs for you - and @Alex becomes "image 1" in the prompt the model actually receives. The canvas stays two nodes however many references you use.
How it actually works
It's worth knowing, because it isn't magic. The Python node is almost nothing: one multiline text input, one text output. The work is in ~3,900 lines of frontend JavaScript. "The tagging and wiring happen in the frontend when the prompt is queued; by the time this runs, @tags have already been rewritten to 'image N'", per the source comment. Practically: when you hit Queue, it reads your tags, follows the text wire to the model node, asks what media inputs that node has and how many it takes, then fills them - and rewrites the prompt to match the numbering.
The order is fixed and documented: files you wired into the model by hand keep their inputs; then files you plugged into this node and marked First; then library tags in the order they first appear in your text; then plugged-in files marked Last. If a tag can't be used, or you've tagged more files than the model takes, the queue is refused with a message rather than running with the wrong reference set. That refusal is the feature: better an error than a metered call with the wrong face in it.
Inputs and outputs
One input that matters: text (multiline; placeholder "Type @ to tag a library image, video or audio file"). Type @, pick from the list (thumbnails included), Enter to insert. Tagged files line up under the text in the order they'll be sent.
One output on the server side: text, which goes into the model's prompt - directly, or through a String Concatenate if you're assembling a longer prompt.
On the canvas the node also grows, once it's used: an images output carrying every tagged image as one batch, and an @name output per tagged file, numbered to show where each one lands (@Coin (1) is image_1). The images output is for models with a single images input like Nano Banana Pro - wire text → prompt and images → images, and every tagged image arrives as a batch fitted to the first image's size. The @name outputs are there for when you want to do the resizing yourself.
The bits you'll actually trip over
Tag colours are a status report. Blue: found. Red: unknown name, or a plugged-in file you've unplugged or muted. Purple: the library entry's file is gone from disk. Grey struck-through: that library is switched off on this node. All three non-blue states block the queue.
Which models it can fill. Anything with numbered media inputs that grow as you connect them, plus a prompt: Nano Banana 2.1 takes 14 images, GPT Image 2.5 16, Seedream 5.0 lite 14, Qwen Image 3 Edit just 3, Seedance 2.5 up to 30 images / 10 videos / 10 audio, MiniMax H3 9/3/3. It does not work with single-input or single-batch nodes - the LTX 2.5 API nodes, the LTX-2 open nodes, or the open MiniMax H3 - because there's nothing for it to fill. Hand-wire those, or try the images batch output where the model accepts one.
Libraries are local and not shared. A library points at files on the disk of the machine running ComfyUI. Cloud links, web URLs and Comfy Cloud aren't supported, and opening a workflow on another computer only finds your tags if that computer has libraries with the same names. This is the real limitation of the pack, more than any UI rough edge.
It only works locally. Picking files and editing libraries require ComfyUI at http://127.0.0.1 or localhost. Other machines on a --listen setup can see file names, not folders, and requests from other websites or proxied hostnames are refused - good, given this node can send files to a paid API.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/PixelMonkey77/comfyui-reference-library
Restart ComfyUI, or use ComfyUI Manager's Install via Git URL with the same URL. No pip dependencies, no model downloads - the pack's pyproject.toml declares an empty dependency list and uses only what ComfyUI ships.
Nodes 2.0 is mandatory: Settings → Comfy → Nodes 2.0 → Modern Node Design (Nodes 2.0). Also, other packs that react to @ in prompts can conflict with this one, so if you already run a tagging extension, test before you build a habit.
Is it ready?
The author calls it highly experimental and says so twice, including in the request that you accept the risk to your files, libraries, workflows and API credits. There's essentially no outside discussion of it as of October 2026, so it's brand new rather than battle-tested. Treat it as a genuinely clever workflow experiment: keep your libraries backed up (ComfyUI/user/default/library_image/library.json plus its .bak), don't rebuild your whole pipeline around it yet, and note that uninstalling the pack deliberately leaves your libraries in place.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |