Nodes/ComfyUI-ImagePlus/ImagePlus Prompt
ComfyUI Node

ImagePlus Prompt

The node that kills your CLIP Text Encode (and drags the model wires along)

By CovertBannana·Created 2 months ago·Updated about a month ago· 1
ImagePlus Prompt
  • model
  • clip
  • vae
  • model
  • vae
  • positive_conditioning
  • negative_conditioning
  • positive_prompt
  • negative_prompt

Every img2img workflow in ComfyUI starts with the same furniture: a checkpoint loader, two CLIP Text Encode nodes for the positive and negative prompt, and then you re-wire MODEL, CLIP and VAE out to the sampler anyway. ImagePlus Prompt is the pack's answer to that. It takes model, clip and vae in, encodes the prompts itself, and hands back conditioning plus pass-through model and vae wires. One node where you used to stack three.

The neat trick, and the part that trips people up: it doesn't take the prompt text as an input. It reads whatever prompt is currently selected in the pack's ImagePlus Inspector. Load a reference image in the Inspector, and its positive and negative prompts become the conditioning this node outputs. Swap to another image and the prompts follow automatically - no retyping, no pasting, no "which text box did I forget to update" moments.

How it works

Mechanically it's the same call ComfyUI's own CLIP Text Encode makes: it runs the prompt text through the CLIP model you connected (encode_text_with_clip, the standard conditional encoding) and passes model and vae through untouched, so the node is drop-in compatible with ordinary samplers - it isn't locked into this pack's KSampler. Because there are no prompt widgets, its IS_CHANGED method watches the pack's shared state, so when the Inspector's selection changes, this node knows to re-encode instead of serving you a stale cached conditioning. That's the plumbing working in your favor: cached-until-the-image-changes, then it fires.

The wiring

This is the recommended chain, straight from the pack's README and its shipped example workflow:

Checkpoint Loader:model → ImagePlus Prompt:model
Checkpoint Loader:clip  → ImagePlus Prompt:clip
Checkpoint Loader:vae   → ImagePlus Prompt:vae

ImagePlus Prompt:model  → ImagePlus KSampler Adv:model
ImagePlus Prompt:vae    → ImagePlus KSampler Adv:vae
ImagePlus Prompt:positive_conditioning → ImagePlus KSampler Adv:positive
ImagePlus Prompt:negative_conditioning → ImagePlus KSampler Adv:negative

The outputs you actually use are positive_conditioning and negative_conditioning, which go straight into any KSampler's positive/negative sockets, and the model/vae pass-throughs, which save you dragging the same two wires around the graph. The positive_prompt and negative_prompt string outputs are the extracted text, if you want it for a Save Text node or just to eyeball what you're about to sample.

The gotcha: it wants its Inspector

Because the prompts come from the pack's shared state rather than from a typed box, this node is designed to sit downstream of an ImagePlus Inspector. Leave it standalone in a graph with no Inspector and you're conditioning on empty strings - the graph runs, it just doesn't do anything interesting. If that's the mode you're in, this probably isn't the node you want; it's the middle of a three-node system, not a replacement for typing a prompt.

Installing it

It's the same install as the rest of the pack, and you only do it once:

cd ComfyUI/custom_nodes
git clone https://github.com/CovertBannana/ComfyUI-ImagePlus.git

Restart ComfyUI, or skip the terminal and use ComfyUI Manager - search "ComfyUI-ImagePlus". The only dependency is aiohttp>=3.9.0; there are no model files and nothing heavy to download. It's a young, small pack (MIT licensed), so don't expect a long track record of issues to Google - if something misbehaves, the repo is the source of truth.

Should you use it?

If you're on a stock workflow that types prompts by hand, no - this adds a dependency on the Inspector for a problem you don't have. But if you're running reference-driven img2img where the prompt should always match the image on screen, this node is what stops the two from drifting apart. That's the use case, and it's the whole reason the pack exists.

Categoryimageplus

Inputs (3)

NameTypeDefaultDescription
modelMODEL
clipCLIP
vaeVAE

Outputs (6)

NameTypeDescription
modelMODEL
vaeVAE
positive_conditioningCONDITIONING
negative_conditioningCONDITIONING
positive_promptSTRING
negative_promptSTRING