Nodes/comfyui_AcademiaSD/Academia SD CLIP Text Encode (Positive) ๐ŸŸข
ComfyUI Node

Academia SD CLIP Text Encode (Positive) ๐ŸŸข

History, favorites, presets โ€” same encoder as stock

By AcademiaSDยทCreated about a year agoยทUpdated about 22 hours agoยท 76
Academia SD CLIP Text Encode (Positive) ๐ŸŸข
  • clip
  • CONDITIONING
  • STRING
โ—„textโ€”โ–บ

Your positive prompt is the single most-edited thing in any ComfyUI workflow, and stock ComfyUI gives it a bare textarea with no memory. The Academia SD CLIP Text Encode (Positive) ๐ŸŸข is a drop-in replacement for that box: same encoder underneath, but with a recents list of your last ten queued prompts, a favorites vault, and named preset files so your best landscape or portrait prompts survive between sessions.

It comes from the comfyui_AcademiaSD pack by the Academia SD YouTube channel - a tutorial creator whose suite is mostly small quality-of-life nodes (downloader, multi-LoRA, seed generator, resolution math). Of everything in the pack, this pair of CLIP encoders is the least likely to break anything, because the hard part is stock ComfyUI.

How it works

The Python class is nearly empty, and that's the point. It runs clip.tokenize(text) then clip.encode_from_tokens(tokens, return_pooled=True) - literally the same two calls as the native CLIPTextEncode - and returns the conditioning. So prompt weighting, token limits, and encoder behavior are all inherited verbatim from whatever CLIP model you loaded. The real work happens in academia_clip_text_encode.js, which hides ComfyUI's default textarea and draws its own fluid, collapsible editor with the tray, the heart button, and the preset dropdown.

Worth knowing for 2026 models: since this is a plain text encoder, it feeds whatever encoder your checkpoint uses. On LLM-encoded models like Flux 2 Klein or Z-Image, that means full sentences beat comma-tag spam, and CLIP-era ((word:1.4)) weighting does nothing. This node won't fight that - it just encodes what you type.

Inputs and outputs

Two required inputs:

  • text - your prompt, multiline. The box stretches with the node.
  • clip - the CLIP socket from your checkpoint or CLIP loader.

Two outputs:

  • CONDITIONING - into your sampler's positive input.
  • STRING - the exact prompt as a plain string, passed through so you can log it or reuse it elsewhere without a converter node.

On startup the node auto-loads default_positive_prompt.json from its prompt_lists/ folder, so your saved prompt is there the moment ComfyUI boots.

Installing it

Easiest via ComfyUI Manager: search comfyui_AcademiaSD, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/AcademiaSD/comfyui_AcademiaSD

Then restart ComfyUI. No pip packages, no model downloads - this one runs on stock ComfyUI alone.

Where people get burned

Your data lives in files, not in the node. Recents, favorites, and presets are JSON in custom_nodes/comfyui_AcademiaSD/prompt_lists/. Deleting the folder or uninstalling the pack wipes everything - export your lists to JSON first if you ever clean house. The default file is protected from deletion, but the rest aren't.

One note on expectations: the encoding is byte-for-byte stock, so this node won't change your results one pixel. If you're chasing quality, this is a convenience, not an upgrade. The recents tray in particular quietly pays for itself - you know the workflow you tore down last night and want back in the morning. That's this node's whole job, and it does it well.

And the usual frontend-patch caveat: it hides ComfyUI's native textarea at the DOM level. If the box ever renders oddly after a ComfyUI update, update the pack rather than rebuilding your graph.

CategoryAcademia SD/Conditioning

Inputs (2)

NameTypeDefaultDescription
textSTRINGโ€”
clipCLIPโ€”

Outputs (2)

NameTypeDescription
CONDITIONINGCONDITIONINGโ€”
STRINGSTRINGโ€”