Nodes/Comfyui-EasyIllustrious/◆ TIPO Prompt Optimizer
ComfyUI Node

◆ TIPO Prompt Optimizer

Rank and clean up a prompt automatically

By regiellis·Created 12 months ago·Updated 4 months ago· 82
◆ TIPO Prompt Optimizer
    • optimized_prompt
    • candidate_prompts
    • diagnostics
    prompt
    candidates8
    seed0
    enable_synonymstrue
    flavorbalanced
    max_length320
    negative_prompt
    style_anchorsbalanced colors, clean lineart, consistent shading

    One thing worth clearing up before you install this: if you've used SwarmUI or Forge, "TIPO" might already mean something specific to you - KBlueLeaf's TIPO-500M-ft, a small language model on Hugging Face that expands and rewrites tag prompts. This node is not that. It's EasyIllustrious's own, same-named take on the same general idea: take a rough prompt, generate several candidate rewrites, and pick the best one - but implemented as a self-contained function inside the pack rather than a separate model checkpoint you download and load. No extra weights to fetch, no GPU model load, but also don't expect the exact phrase-level rewriting behavior the original LLM-based tool is known for. Same name, different machinery.

    What it does

    TIPOPromptOptimizer takes a prompt (multiline string - comma-separated tags recommended, per the tooltip) and generates candidates (3–32, default 8) variant versions of it. enable_synonyms (default on) allows synonym swaps between candidates so they're meaningfully different from each other rather than near-duplicates. flavor (balanced/vibrant/soft/natural) biases which candidate actually wins the ranking - this is the same flavor system the pack's scene-generator nodes expose when their own "Enable TIPO Optimization" toggle is on, so if you've used those, the behavior here should feel familiar. max_length (80–800, default 320) is a soft character cap on the winning result, and seed (0 = auto) makes the candidate generation reproducible if you want the same run twice.

    Two optional fields let you steer the ranking rather than just accept whatever wins on its own: negative_prompt gives it terms to actively downweight or strip out of candidates, and style_anchors (default balanced colors, clean lineart, consistent shading) names tags it should favor pulling candidates toward.

    Outputs

    Three strings: optimized_prompt is the winning candidate - the one you actually wire into your CLIP text encoder. candidate_prompts gives you the full set it generated, useful if the winner isn't quite right and you want to see what else it considered instead of re-rolling blind. diagnostics reports on how it scored things, which is the place to look if you're trying to understand why a particular candidate won.

    When to reach for this over the scene generators' built-in version

    If you're already using IllustriousScenesPlus or IllustriousSmartSceneGenerator, you don't need this node - both have their own Enable TIPO Optimization toggle running the same logic internally. Reach for the standalone version when you're optimizing a prompt that didn't come from either of those: something typed by hand, built from IllustriousPrompt, or assembled from several of this pack's other selector nodes chained together.

    Installing it

    ComfyUI Manager: search "EasyIllustrious," install, restart - the recommended path. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/regiellis/ComfyUI-EasyIllustrious, then pip install -r ComfyUI-EasyIllustrious/requirements.txt inside your ComfyUI environment, then restart.

    Troubleshooting

    If you were expecting the real TIPO model's style of output and this node's results feel more like reshuffled synonyms than a genuine rewrite, that's the architecture difference above, not a bug - it's candidate ranking, not language generation. If every candidate keeps coming back similar to each other, bump candidates up and make sure enable_synonyms is actually on; if the winning prompt keeps getting truncated in a way that drops something important, raise max_length rather than fighting it through style_anchors. And as with the rest of this pack, it's beta-stage, single-developer work - check diagnostics and candidate_prompts rather than trusting optimized_prompt blind on a prompt that really matters.

    CategoryEasy Illustrious / Utils / Prompt Optimization

    Inputs (8)

    NameTypeDefaultDescription
    promptSTRINGBase prompt to optimize (comma-separated tags recommended).
    candidatesINT83–32How many prompt variants to generate and rank.
    seedINT00–2147483647Random seed (0 = auto).
    enable_synonymsBOOLEANtrueAllow synonym swaps for variation.
    flavorCOMBObalancedFlavor bias for ranking.
    max_lengthINT32080–800Soft cap for final prompt length (characters).
    negative_promptoptSTRINGTerms to avoid (downweighted/removed).
    style_anchorsoptSTRINGbalanced colors, clean lineart, consistent shadingAnchor tags to encourage in the optimized prompt.

    Outputs (3)

    NameTypeDescription
    optimized_promptSTRING
    candidate_promptsSTRING
    diagnosticsSTRING