Nodes/One Button Prompt/Auto Negative Prompt
ComfyUI Node

Auto Negative Prompt

A negative prompt built to match what you're actually generating

By AIrjen·Created 3 years ago·Updated about a year ago· 1,064
Auto Negative Prompt
    • negative_prompt
    postive_prompt
    base_negativetext, watermark
    enhancenegative0
    insanitylevel0
    base_modelSDXL
    seed0

    Most negative prompts are the same forty-keyword block copy-pasted from a tutorial: worst quality, lowres, bad hands, extra fingers, on and on, regardless of what's actually in the image. AutoNegativePrompt, from the OneButtonPrompt pack, takes a different approach - it looks at your positive prompt and builds a negative around it, stacking that on top of a small base list, rather than shipping the same static block to every generation. It's the sibling node to OneButtonPrompt - that one writes what you want, this one figures out what to steer away from given what you asked for.

    This matters more than it sounds like it should, because the community's own hard-won rule about negative prompting is exactly this: a negative should only contain things your positive is already producing, not a preemptive list of everything that could theoretically go wrong. A generic block fights the positive prompt as often as it helps it, especially on sensitive checkpoints. A negative that's actually derived from the positive is closer to doing the job right.

    How it works

    Feed it your positive prompt and it builds a matching negative, using the same insanitylevel-style generation machinery as the rest of the pack - pulling in negatives relevant to what's being generated rather than everything under the sun - then appends whatever you've set as base_negative on top.

    The inputs and outputs that matter

    • postive_prompt (required, multiline) - yes, that's really how it's spelled in the node itself, a typo baked into the pack. This is your generated or hand-written positive prompt; the whole node's output depends on what's in here.
    • base_negative (default "text, watermark") - a small always-included seed list, on top of whatever the node generates automatically.
    • enhancenegative (0 or 1, default 0) - a toggle rather than a real range despite being typed as an integer; flip it on for a more aggressive negative.
    • insanitylevel (0–10, default 0) - same idea as the main generator's slider, but defaulting to off here: how much extra negative material gets layered in beyond the base list.
    • base_model - matters because what counts as an unwanted element differs by model family; keep it matched to whatever you set on OneButtonPrompt.
    • Output: negative_prompt, a single string - wire it straight into your negative CLIP Text Encode.

    How to install it

    Same pack, same steps as OneButtonPrompt: ComfyUI Manager → search "One Button Prompt" → install, or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/AIrjen/OneButtonPrompt
    

    then restart. It's a text-only node - no models, no extra Python dependencies beyond what the rest of the pack already needs.

    Common issues & troubleshooting

    It does absolutely nothing to your image, and it's not broken. This is the one that actually catches people. If you're running a distilled, speed-optimized checkpoint at CFG 1 - Z-Image Turbo, a Lightning/Turbo/Hyper checkpoint, most speed-LoRA setups - classifier-free guidance isn't running a second unconditioned pass at all, and the negative prompt has nothing to act through. It's not weakened, it's not computed. This has nothing to do with AutoNegativePrompt specifically; it's true of any negative prompt at CFG 1, including a perfectly hand-written one. If you're on a CFG-1 workflow, restate the constraint positively in your positive prompt instead, or bump CFG above 1 and accept the speed trade-off.

    The generated negative feels generic. Check that postive_prompt is actually wired to something substantial - a thin or empty positive gives the node little to react to, and it'll fall back closer to just the base_negative list.

    enhancenegative looks like it should be a slider. It isn't - it's effectively 0 or 1 in the node's own schema. Anything you type beyond those two values is outside the documented range.

    You want it to do more. Push insanitylevel up from its 0 default - unlike the main OneButtonPrompt node, this one starts conservative rather than at 5.

    CategoryOneButtonPrompt

    Inputs (6)

    NameTypeDefaultDescription
    postive_promptSTRING
    base_negativeoptSTRINGtext, watermark
    enhancenegativeoptINT00–1
    insanityleveloptINT00–10
    base_modeloptCOMBOSDXL4 options: SD1.5, SDXL, Stable Cascade, Anime Model
    seedoptINT00–18446744073709550000

    Outputs (1)

    NameTypeDescription
    negative_promptSTRING