Nodes/ComfyUi-MzMaXaM/Text Encoder 3 in 1
ComfyUI Node

Text Encoder 3 in 1

Keep Pony's score tags separate from your actual prompt

By MzMaXaM·Created 2 years ago·Updated about a year ago· 14
Text Encoder 3 in 1
  • clip
  • Positive Conditioning
  • Negative Conditioning
positive_Text_Ascore_9, score_8_up, score_8. score_9, score_8_up, score_7_up, score_6_up, masterpiece, 4k, 8k, high quality, best quality, ultra high res, ultra detailed, 8k wallpaper
positive_Text_B1girl, solo, Sakura, pink short hair, green eyes, forehead protector, blushing, looking at viewer, smiling, white dress green background
stop_at_clip_layer-2
negative_Textscore_5, score_4, worst quality, low quality, text, censored, deformed, bad hand, blurry, (watermark), weights, extra hands, 3 finger, bad anatomy, big head, artist signature, artist name

This one's built for a very specific and very common annoyance if you generate on Pony-family checkpoints: every prompt has to open with score_9, score_8_up, score_7_up, score_6_up... for the model to behave, and retyping (or re-copy-pasting) that boilerplate every time you tweak your actual subject prompt gets old fast. This node splits your positive prompt into two fields so the score-tag string can sit there permanently while you iterate on the character or scene in the other box, then concatenates the two into a single conditioning under the hood.

Why the score tags matter this much

Pony Diffusion's quality system is a genuine quirk of how it was trained, not just a style suggestion. AstraliteHeart's team hand-ranked roughly 20,000 images on a 1–5 quality scale and captioned the training set with the resulting score labels - the idea being that low-quality images could still teach concepts without teaching ugly. A training bug meant the model learned the whole concatenated string as the quality signal rather than the individual tags, so score_9, score_8_up, score_7_up (and onward) has to be written out in full to do anything. It's specific to the Pony family - it does nothing on Illustrious, SDXL base, or Flux, the same way generic quality tags like masterpiece, best quality do comparatively little on Pony.

Inputs and outputs that matter

  • clip - the CLIP model to encode with.
  • positive_Text_A - defaults to the full Pony score-tag opener plus some generic quality boilerplate (masterpiece, 4k, 8k, high quality...). Worth knowing: on Pony, the score tags are doing essentially all the real work here - the masterpiece/4k/8k filler is along for the ride and carries comparatively little weight on this model family. It's harmless, just not pulling its weight.
  • positive_Text_B - your actual subject/scene description. This is the field you're meant to actually rewrite between generations, while A stays fixed.
  • stop_at_clip_layer - CLIP skip, range −24 to −1, default −2. This matters more than it sounds: Pony V6, Illustrious and NoobAI all expect CLIP skip 2 (i.e. −2), and pushing it to −1 is a documented way to break Pony output into noise. Leave it at the default unless you specifically know your checkpoint wants otherwise.
  • negative_Text - a single field, defaults to the standard negative boilerplate plus Pony's low-score negative tags (score_5, score_4, worst quality...).

Two outputs: Positive Conditioning (A and B concatenated and encoded) and Negative Conditioning, both CONDITIONING - wire them into your sampler exactly like any other text-encode node's output.

Installing it

ComfyUI Manager: search mzmaxam in Custom Nodes Manager and install. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/MzMaXaM/ComfyUi-MzMaXaM

Restart ComfyUI. No models to download and no extra dependencies - it's a CLIP-encoding node built on types ComfyUI already has.

Where people get tripped up

The biggest trap is stop_at_clip_layer at −1 on a Pony-family model - that's the setting that turns clean output into garbage, so don't nudge it "for better quality" without checking your checkpoint's own recommendation first. Second, this node's defaults are Pony-specific by design: drop it into a workflow running Illustrious, base SDXL, or Flux and the score tags in positive_Text_A just sit there doing nothing useful - not harmful, just dead weight eating into your prompt's token budget. Third, and worth knowing if you're on anything newer: models with LLM-based text encoders (the current wave that replaced CLIP-and-T5 setups) don't have a CLIP layer to skip and don't understand score tags at all - this node's whole design assumes a classic CLIP-conditioned checkpoint, which is exactly the world Pony, Illustrious and NoobAI still live in.

CategoryMzMaXaM

Inputs (5)

NameTypeDefaultDescription
clipCLIPThe CLIP model used for encoding the text.
positive_Text_ASTRINGscore_9, score_8_up, score_8. score_9, score_8_up, score_7_up, score_6_up, masterpiece, 4k, 8k, high quality, best quality, ultra high res, ultra detailed, 8k wallpaperFirst part of the positive text to be encoded.
positive_Text_BSTRING1girl, solo, Sakura, pink short hair, green eyes, forehead protector, blushing, looking at viewer, smiling, white dress green backgroundSecond part of the positive text to be encoded.
stop_at_clip_layerINT-2-24–-1
negative_TextSTRINGscore_5, score_4, worst quality, low quality, text, censored, deformed, bad hand, blurry, (watermark), weights, extra hands, 3 finger, bad anatomy, big head, artist signature, artist nameThe negative text to be encoded.

Outputs (2)

NameTypeDescription
Positive ConditioningCONDITIONINGA conditioning containing the embedded text used to guide the diffusion model.
Negative ConditioningCONDITIONING