Nodes/ComfyUI-NSFW-Prompt/NSFW sick bastard
ComfyUI Node

NSFW sick bastard

The same prompt engine, with the gloves off

By theSharque·Created 2 months ago·Updated 2 months ago· 10
NSFW sick bastard
    • prompt
    • seed
    ◄seed0►
    ◄prefix►
    ◄shotrandom+sick►
    ◄agerandom+sick►
    ◄bodyrandom+sick►
    ◄lookrandom+sick 20%►
    ◄genderwoman►
    ◄emotionrandom+sick 80%►
    ◄toprandom+sick 20%►
    ◄bottomrandom+sick 20%►
    ◄hosieryrandom+sick 80%►
    ◄headwearrandom+sick 20%►
    ◄footwearrandom+sick 20%►
    ◄accessoryrandom+sick 80%►
    ◄addonrandom+sick 50%►
    ◄toyrandom+sick 20%►
    ◄poserandom+sick 50%►
    ◄actionrandom+sick►
    ◄coverrandom+sick 50%►
    ◄placerandom+sick 80%►
    ◄lightingrandom+sick 20%►
    ◄atmosphererandom+sick 20%►
    ◄camerarandom+sick 80%►
    ◄postfix►

    The name is doing real work. NSFW sick bastard is not a separate generator - it's the exact same NSFW Prompt engine with the "sick" dictionary merged in, and it's the first place you'll notice that the whole pack is really one codebase with a flag flipped. Open the source and the class is literally NSFWPromptBase with SICK_MODES = True on it. Same 21 slots, same sentence assembly, same outputs - the only difference is what's in the pools it rolls from.

    Why would you reach for it? Because the vanilla NSFW Prompt node is actually fairly tame. Its dictionaries describe a photo and a person and an action, but they stop at a certain line. The sick/ folder in the pack pushes past it - more explicit actions, nastier framing, "sick only" filters. If you want a batch of images that genuinely wander into the deep end, this node is the one-click pass into that territory. If you don't, ignore it and use the plain node; you already own both.

    How it works

    Every slot now draws from data/*.json plus sick/*.json, and the widget modes grow a third family. Where the normal node offers random / random N% / fixed values, this one adds:

    • random+sick / random+sick N% - roll from the merged data+sick pool, with the same chance behavior,
    • sick only - roll strictly from the sick/ dictionary (this mode only appears on non-chance slots like shot, age, body, gender),
    • special action modes you won't see elsewhere: multiple+sick, partner sick only, and multiple partner sick.

    The sick/ JSON files are allowed to be empty - the pack ships every one, so you can look through them and prune what you're not into without breaking anything. And a nice safety detail: a {toy}-free action still means the toy slot is skipped, so you don't get random props stapled onto acts that don't use them.

    Inputs and outputs

    Identical to NSFW Prompt: seed, prefix, postfix, the full slot list (age, body, look, gender, emotion, top, bottom, hosiery, headwear, footwear, accessory, addon, toy, pose, action, cover, place, lighting, atmosphere, camera). Defaults are shifted to the random+sick variants, which tells you the author's intent: this node assumes you want the merged pool by default.

    Outputs are the same two: prompt (STRING) into your CLIP encode, seed (INT) into your KSampler. Same rule as the parent node - if you want a rolled prompt to be reproducible, wire the seed out.

    Install

    No separate install. It ships in the same pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/theSharque/ComfyUI-NSFW-Prompt
    

    Restart ComfyUI and it shows up under the prompt category. ComfyUI Manager finds the pack by title too. No extra Python dependencies, no models, no API.

    Gotchas

    • The randomness gets wild fast. random+sick on every slot means a run can go somewhere you didn't intend - the escape hatch is fixing one or two slots (like shot and place) so the frame stays sane while the content wanders.
    • Age terms live in the same dictionary here, including youthful ones. Keep the age slot adult. This node is already the pack's sharpest edge; don't be the reason it gets taken down.
    • Since it's the same engine, your prompt from the plain node isn't wasted - you can swap one node for the other and get a sibling result for the same seed, which is a fun way to A/B the vanilla vs. merged pools.
    Categoryprompt

    Inputs (24)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000—
    prefixSTRING—
    shotCOMBOrandom+sick33 options: disabled, random, random+sick, sick only, an amateur photo, a professional studio photo, +27
    ageCOMBOrandom+sick28 options: disabled, random, random+sick, sick only, random under 30, random over 30, +22
    bodyCOMBOrandom+sick49 options: disabled, random, random+sick, sick only, random thin, random thick, +43
    lookCOMBOrandom+sick 20%59 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +53
    genderCOMBOwoman19 options: disabled, random, random+sick, sick only, random women, woman, +13
    emotionCOMBOrandom+sick 80%65 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +59
    topCOMBOrandom+sick 20%72 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +66
    bottomCOMBOrandom+sick 20%92 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +86
    hosieryCOMBOrandom+sick 80%62 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +56
    headwearCOMBOrandom+sick 20%48 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +42
    footwearCOMBOrandom+sick 20%71 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +65
    accessoryCOMBOrandom+sick 80%75 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +69
    addonCOMBOrandom+sick 50%63 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +57
    toyCOMBOrandom+sick 20%107 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +101
    poseCOMBOrandom+sick 50%81 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +75
    actionCOMBOrandom+sick172 options: disabled, random, random+sick, multiple, multiple+sick, partner sick only, +166
    coverCOMBOrandom+sick 50%57 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +51
    placeCOMBOrandom+sick 80%82 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +76
    lightingCOMBOrandom+sick 20%58 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +52
    atmosphereCOMBOrandom+sick 20%69 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +63
    cameraCOMBOrandom+sick 80%54 options: disabled, random, random+sick, random 100%, random+sick 100%, random 80%, +48
    postfixSTRING—

    Outputs (2)

    NameTypeDescription
    promptSTRING—
    seedINT—