Nodes/Violet Tools ๐Ÿ’…/๐Ÿšซ Negativity Nullifier
ComfyUI Node

๐Ÿšซ Negativity Nullifier

The classic negative-prompt list, with a brain

By leylahvioletยทCreated 12 months agoยทUpdated 10 months agoยท 14
๐Ÿšซ Negativity Nullifier
    • nullifier
    โ—„include_boilerplatetrueโ–บ
    โ—„extraโ–บ
    โ—„extra_inputโ€”โ–บ

    Negativity Nullifier is the pack's negative-prompt manager, and the honest way to describe it is: a big list of the classic negative tags, toggled on or off, with room for your own additions. worst quality, low quality, bad anatomy, extra limbs, fused fingers, watermark, username - that whole familiar 2023-era catalog, as a checkbox.

    Before you roll your eyes: the value isn't the list, it's that it's consistent and clean. One toggle gives you a complete, deduplicated negative prompt every run, which matters more than it sounds when you're batch-generating and don't want to babysit the negative box. It also plays nicely with the pack: if your positive side is built from Quality Queen + Scene Seductress, having the negative side come from a matching Violet node keeps your whole prompt block in one place, and its output feeds straight into Encoding Enchantress alongside everything else.

    How it works

    At startup the node loads its boilerplate list from feature_lists/negativity_nullifier.yaml. On each run it takes the boilerplate (unless you toggle it off), appends your extra text, joins everything with commas, and runs it through the shared deduplicator - which removes duplicate phrases and fixes malformed commas. That dedup step is quietly the best part: if you chain in a negative from another source that repeats itself, it comes out tidied rather than quadrupled.

    There's no magic here. It's list assembly with a cleanup pass. That's a feature - the node is trivially predictable, and extra supports the pack's {a|b|c} wildcards so you can randomize which specific "avoid" tags get used.

    The fields that matter

    Just two required inputs:

    • include_boilerplate - toggles the default negative list. Default is on. This is the "should my model even hear a negative prompt?" question, see below.
    • extra - your custom negatives, wildcard-capable.

    Plus extra_input (optional) for chaining another node's output in front. The output, nullifier (a NULLIFIER_STRING), goes into the nullifier input on ๐Ÿงฌ Encoding Enchantress, which routes it to the negative conditioning.

    The take you actually need

    Negative prompts are model-family dependent, and this list is the poster child for it. On the anime SDXL lineage (Illustrious, Pony, NoobAI) this kind of boilerplate still does real work - people pair "negative prompt" with Illustrious constantly. But on distilled, guidance-reduced models the negative prompt is inert at CFG 1 and can be counterproductive above it, and on Flux-class LLM-encoded models the negative box does next to nothing. So if you toggle include_boilerplate and see zero difference, that's your model architecture, not a broken node. Match the node to your checkpoint family.

    Installing it

    Part of ComfyUI-Violet-Tools - install the pack once. Via ComfyUI Manager, search Violet Tools, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/leylahviolet/ComfyUI-Violet-Tools.git
    

    Restart ComfyUI; it lands under Violet Tools ๐Ÿ’… โ†’ Prompt. No models, no keys; dependencies are PyYAML, rapidfuzz, and requests.

    Where people get tripped up

    Most "it's not working" reports trace to model family, not the node - test on an anime SDXL checkpoint before assuming a fault. And be deliberate about extra: if you paste a long bespoke negative in there, every run carries the whole thing, which on a distilled model can fight the generation. Keep extra short on modern models, or flip include_boilerplate off and use it as a plain text box. This is a small pack with a thin community footprint, so when in doubt, check the README's YAML - the list is editable if the defaults don't suit your workflow.

    CategoryViolet Tools ๐Ÿ’…/Prompt

    Inputs (3)

    NameTypeDefaultDescription
    include_boilerplateBOOLEANtrueโ€”
    extraSTRINGโ€”
    extra_inputoptSTRINGOptional chained input - will be prepended to extra field with ', '

    Outputs (1)

    NameTypeDescription
    nullifierNULLIFIER_STRINGโ€”