Nodes/ComfyUI-LZNodes/LZ Advanced Positive Prompt
ComfyUI Node

LZ Advanced Positive Prompt

Stop hand-stitching artist tags, quality tags, and prompt soup

By liz-ils·Created 7 months ago·Updated 12 days ago· 1
LZ Advanced Positive Prompt
  • clip
  • conditioning (positive)
  • prompt_text
prompt
artist
others
qualitymasterpiece, best quality, ultra-detailed, highres

Every serious prompt is really four prompts stapled together: the subject, the artist list, the extra trigger words (LoRA triggers, character refs), and the quality block. LZ Advanced Positive Prompt gives each its own box, joins them, and encodes the result - so you stop re-trimming commas and re-typing "masterpiece, best quality" on every single generation.

What it does

Four multiline fields in, one CONDITIONING out:

  • prompt - your main subject. No default; this is the actual content.
  • artist - the artist tags. It's kept separate for a reason (below).
  • others - LoRA trigger words and other extra tags that you don't want polluting the subject line.
  • quality - pre-filled with masterpiece, best quality, ultra-detailed, highres, the classic quality front-load.

The node strips whitespace, drops any empty field, joins the survivors with ", ", tokenizes, and encodes. Because each field is a separate widget, you can change the artist without touching the quality block, and you can convert any of them to an input socket and drive them from elsewhere in the graph.

Why the artist/quality split actually matters

Order matters in Danbooru-style prompting. Quality tags and artist tags pull hardest when they lead the prompt, and keeping the subject in its own box means you can experiment with artist chains without re-trimming the rest. It's especially relevant on Anima, the 2B DiT anime base from Circlestone Labs, which was trained with dataset tags that conventionally sit on their own first line followed by a newline - so having an explicit artist field you can rearrange (or feed the pack's Anima Artist Mixer family, which wants artist chains in exactly this shape) is more than cosmetic.

Outputs

  • conditioning (positive) - the encoded positive, straight into the sampler (or an LZ pipe).
  • prompt_text - the joined string. Wire this to a save/log node so your logs show the actual final prompt, not the four separate boxes.

The tradeoff

It's not a magic prompt rewriter. It does zero reordering beyond the fixed field order, and there's no per-tag weighting here (that's what LZPromptWeight and LZTagEditor in the same pack are for). What it removes is the mechanical copy-paste-join error, and it gives you a single canonical string output for logging. If you mostly run one fixed prompt template, the win is small; if you iterate on artists and LoRA triggers constantly, it's the kind of node you reach for every time.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/liz-ils/ComfyUI-LZNodes

restart, and it's under MyCustomNodes/Prompt. ComfyUI Manager search: ComfyUI-LZNodes. No extra Python dependencies - the pack's requirements are satisfied by what ComfyUI already bundles.

Where people get burned

The subtle trap is the quality default: it's baked in, so people forget it's there and then wonder why their "minimal, plain" prompt still reads as high-quality anime. If you want a bare prompt, empty the quality field. The other common stumble is expecting the artist field to apply different weights - it doesn't; for weighted artist chains you want the Anima Artist Pack nodes from this same pack, which accept the exact weight syntaxes those nodes understand.

CategoryMyCustomNodes/Prompt

Inputs (5)

NameTypeDefaultDescription
clipCLIP
promptSTRING
artistSTRING
othersSTRING
qualitySTRINGmasterpiece, best quality, ultra-detailed, highres

Outputs (2)

NameTypeDescription
conditioning (positive)CONDITIONING
prompt_textSTRING