Nodes/Mode_personal_node/Structured Negative Prompt
ComfyUI Node

Structured Negative Prompt

Six checkboxes that write your negative prompt for you

By transcendedhacker·Created 8 months ago·Updated 8 months ago· 0
Structured Negative Prompt
    • negative
    qualitytrue
    anatomytrue
    styletrue
    lightingfalse
    contextfalse
    texturetrue
    custom

    This is the "Structured Negative Prompt" node, and it's the simpler half of the Mode_personal_node pack. No dropdowns, no schema, no hidden logic - six checkboxes that bolt a negative prompt together from a few hardcoded categories, plus a box for your own text. If you've ever stared at a fifty-keyword negative block you copied from a YouTube thumbnail and wished someone would just give you the toggle version, this is that.

    What it actually does

    The node ships six boolean toggles, each one standing in for a category of negative terms: quality, anatomy, style, lighting, context, and texture. Flip one on and its canned phrase gets joined into the output; leave it off and it's skipped. The defaults make sense: quality, anatomy, style, and texture start on (that's your "blurry, deformed face, extra limbs, jpeg artifacts" boilerplate), while lighting and context start off. There's also a custom multiline string in the optional section that gets appended to whatever the checkboxes produce.

    The mechanism is genuinely boring, in a good way: each category is just a hardcoded comma-separated string in the node's source, and the output is those strings joined with ", ". There's no LLM, no API call, no model analysis - deterministic to the point of being a dictionary lookup. That's the whole design philosophy of this pack, for better and for worse.

    One output, named negative (type STRING). Wire it into the negative input of a CLIP Text Encode node, or straight into your negative conditioning, and you're done.

    Where it works - and where it's dead weight

    This is the part nobody tells you. A negative prompt only does anything if your model is actually running classifier-free guidance above CFG 1 - and ComfyUI doesn't even compute the unconditional pass at CFG 1. So on SDXL-lineage checkpoints (SDXL, Illustrious, Pony, that whole family) at a CFG of 4-9, this node's output genuinely helps. On Flux, or any distilled/guidance-free model, it's mostly theater: nothing gets subtracted because there's nothing to subtract from.

    There's a second, subtler trap the boilerplate itself falls into. The community consensus these days is that a giant generic negative - which is exactly what these toggles assemble - can conflict with your positive prompt on sensitive checkpoints. The advice from people who actually test this stuff: only name defects your positive is actually producing, and prefer stating what you want over stating what you don't. So the practical move is to treat the anatomy toggle as your always-on friend, and think hard before enabling all six at once. The custom field is your escape hatch for model-specific negatives (that "deviant art" aesthetic-steering trick works in negatives for a reason).

    Installing it

    You're installing the whole pack either way - the two nodes ship together. Easiest path is ComfyUI Manager: search for Mode_personal_node, install, restart. Manual route:

    cd ComfyUI/custom_nodes
    git clone https://github.com/transcendedhacker/Mode_personal_node
    

    Then restart ComfyUI. No requirements.txt, no model downloads, no extra deps - it's pure Python against ComfyUI's base environment. The pack is CC BY-NC 4.0, which is fine for personal and research use and for selling images you generate; it's the software itself you can't commercially redistribute.

    Common issues

    • "My negative isn't doing anything." Check your CFG. If it's 1.0, nothing you type will matter - this is math, not a bug.
    • Output too long / fighting your positives. Trim toggles. The style and context defaults are off for a reason.
    • Looking for model-aware negatives? This node is static text, period. If you need negatives that adapt per checkpoint, this isn't it.

    It's a small, honest utility. On SDXL it saves you from retyping the same boilerplate a hundred times; on anything else, keep it for the muscle memory and let your positives do the talking.

    Categoryprompting/structured

    Inputs (7)

    NameTypeDefaultDescription
    qualityBOOLEANtrue
    anatomyBOOLEANtrue
    styleBOOLEANtrue
    lightingBOOLEANfalse
    contextBOOLEANfalse
    textureBOOLEANtrue
    customoptSTRING

    Outputs (1)

    NameTypeDescription
    negativeSTRING