Nodes/Frog Node Pack/🐸 CLIP Text Encode
ComfyUI Node

🐸 CLIP Text Encode

Both prompts in one node β€” and it hands your exact text to the save node

By RabbitThatIsPinkΒ·Created 3 months agoΒ·Updated 24 days agoΒ· 1
🐸 CLIP Text Encode
  • clip
  • Positive
  • Negative
  • positive_text
  • negative_text
β—„positiveβ–Ί
β—„negativeβ–Ί

Frog CLIP Text Encode is the "hold my two nodes" version of the stock encoder. Where a default workflow needs two separate CLIP Text Encode nodes - one for positive, one for negative - this one does both, plus a trick the stock nodes can't: it hands you your exact prompt text back as a string. That last part is the reason people keep it in a workflow long after they've gotten comfortable enough to skip the convenience.

The mechanism is the same as the stock node - it feeds your text through the CLIP encoder to produce conditioning - just packaged twice. Feed it a clip from your loader, type positive and negative, and it emits four outputs: Positive and Negative conditioning for the sampler, plus positive_text and negative_text as plain strings. Those string outputs are the quiet killer feature. Wire them into a save node that reads prompt text (the pack's own 🐸 Save: Hash Embed has inputs specifically for this) and your saved file's metadata always reflects exactly what was encoded - not what you think you typed last run, not a stale copy somewhere else in the graph. If you've ever found a PNG with a prompt that doesn't match the image, you know why that matters. On a model with an LLM text encoder like Anima's Qwen3, the conditioning is the literal interface with the model, so "what the encoder actually saw" is worth keeping.

The inputs that matter

  • clip - from your loader (🐸 Load: Model + CLIP + VAE or any standard CLIP loader).
  • positive - your positive prompt, multiline.
  • negative - your negative prompt, multiline.

That's the whole node. There are no hidden settings, no weights to fight with. Prompt weight syntax - (word:1.3), [word], that whole vocabulary - passes through to the encoder exactly as written, which on an Anima-style LLM encoder means you should just write plain language and skip the SDXL-era gymnastics.

Installing it

It ships in Frog Node Pack, so the install is the pack install. ComfyUI Manager β†’ search "Frog Node Pack" β†’ install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/RabbitThatIsPink/FrogNodePack

Restart and hard-refresh (Ctrl+Shift+R). No extra dependencies - the pack's requirements file lists none beyond Pillow, which is already there.

Where people trip

Two small things. First, the text outputs are just strings - they don't update the conditioning, they report it. If you edit the prompt box after running, the strings reflect what was actually encoded on that run. Second, don't wire the string outputs into a conditioning input by mistake; the Positive/Negative outputs are the conditioning, the _text outputs are for metadata, logging, or a Show Text node. Mixing those up produces the classic "conditioning where a string should be" red wire error. Otherwise this is the most friction-free node in the pack - it just sits there doing what two stock nodes did, with better metadata hygiene on the side.

Category🐸 Node Pack

Inputs (3)

NameTypeDefaultDescription
clipCLIPβ€”
positiveSTRINGβ€”
negativeSTRINGβ€”

Outputs (4)

NameTypeDescription
PositiveCONDITIONINGβ€”
NegativeCONDITIONINGβ€”
positive_textSTRINGβ€”
negative_textSTRINGβ€”