Nodes/ComfyUI-NSFW-Prompt/NSFW randomize person
ComfyUI Node

NSFW randomize person

Hand the 'who' to a dice roll

By theSharque·Created 2 months ago·Updated about a month ago· 8
NSFW randomize person
    • prompt
    • seed
    prompt
    seed-1
    heightrandom 50%
    hair_colorrandom 50%
    hair_lengthrandom 50%
    hair_typerandom 50%
    skin_colorrandom 50%
    skin_detailsrandom 50%
    face_shaperandom 50%
    shouldersrandom 50%
    neckrandom 50%
    collarbonesrandom 50%
    earsrandom 50%
    noserandom 50%
    eyesrandom 50%
    lipsrandom 50%
    teethrandom 50%
    eyebrowsrandom 50%
    cheekbonesrandom 50%
    handsrandom 50%
    makeuprandom 50%
    manicurerandom 50%

    The main NSFW Prompt node in this pack is a whole-scene generator. NSFW randomize person is the opposite shape of node: it's a post-processor that takes a prompt you already have and appends exactly one line describing who's in the shot. Height, hair, skin, face shape, eyes, nose, makeup, nails - 20 trait slots, each a dice roll. It's the "I've decided what's happening; I just can't pick a face every single run" node.

    It belongs to the same theSharque/ComfyUI-NSFW-Prompt pack, so the install, the seed philosophy, and the plain-JSON dictionaries all carry over. The README is explicit about the division of labor: this node handles appearance (face, hair, skin - not body parts; that's the sibling NSFW body builder node's job). Run them back to back and you get a person and then a body in two appended lines.

    How it works

    It reads the incoming prompt text, not a widget, to figure out the grammar. Scan the detect_voice logic in the source: if the prompt mentions "woman", "girl", or "female" it picks She; "man" / "boy" / "male" picks He; a multi-person marker like "two women" or "woman and a man" flips it to They - and then the line is split into "They look different from each other, one with …, another with …". If the prompt doesn't mention a person at all, it silently defaults to She.

    Each trait is disabled, a fixed dictionary value, or random N% (default random 50%). The one oddball is skin_details, which has no fixed values at all - it's a chance gate, and when it passes, each skin detail gets its own independent coin flip. That's why you can get "freckled, with a beauty mark" one run and nothing the next. Hair is the other special case: the length, type, and color traits are recombined into a single phrase ("long wavy blonde hair") before being added to the line.

    Inputs and outputs

    • prompt (required, multiline) - the text it appends to.
    • seed (optional, default -1) - the tooltip says it plainly: connect a seed, or leave -1 / unconnected to generate.
    • 20 trait widgets - hair_color, hair_length, skin_color, height, eyes, nose, makeup and the rest.

    Outputs are prompt (the original text plus the new line) and seed. The seed echo is the important bit: when you leave it unconnected it rolls a fresh seed internally but still returns it - so you can capture the returned seed to lock in an appearance you liked.

    Install

    Same pack, same two steps:

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

    Restart ComfyUI. No extra Python dependencies - it imports the seed machinery straight out of the pack's own nsfw_prompt_node.py.

    Gotchas

    • Wire it in a chain: NSFW Prompt → randomize person → CLIP Text Encode. The node needs upstream text to work with; it won't conjure a scene from nothing.
    • The she/he/they default means a prompt that names nobody gets a female subject. If that's not what you want, name a person in the prompt text.
    • Reproducibility works like the rest of the pack: feed the prompt node's seed output into this node's seed input, and both the scene and the person stay fixed. Forget it and the face changes every run while the scene holds - which, to be fair, is sometimes exactly the point.
    Categoryprompt

    Inputs (22)

    NameTypeDefaultDescription
    promptSTRING
    seedoptINT-1-1–18446744073709550000Connect a seed, or leave -1 / unconnected to generate
    heightoptCOMBOrandom 50%10 options: disabled, random 100%, random 80%, random 50%, random 20%, short, +4
    hair_coloroptCOMBOrandom 50%28 options: disabled, random 100%, random 80%, random 50%, random 20%, black, +22
    hair_lengthoptCOMBOrandom 50%13 options: disabled, random 100%, random 80%, random 50%, random 20%, buzz cut, +7
    hair_typeoptCOMBOrandom 50%11 options: disabled, random 100%, random 80%, random 50%, random 20%, straight, +5
    skin_coloroptCOMBOrandom 50%12 options: disabled, random 100%, random 80%, random 50%, random 20%, fair, +6
    skin_detailsoptCOMBOrandom 50%5 options: disabled, random 100%, random 80%, random 50%, random 20%
    face_shapeoptCOMBOrandom 50%11 options: disabled, random 100%, random 80%, random 50%, random 20%, an oval face, +5
    shouldersoptCOMBOrandom 50%9 options: disabled, random 100%, random 80%, random 50%, random 20%, narrow shoulders, +3
    neckoptCOMBOrandom 50%9 options: disabled, random 100%, random 80%, random 50%, random 20%, a long neck, +3
    collarbonesoptCOMBOrandom 50%8 options: disabled, random 100%, random 80%, random 50%, random 20%, subtle collarbones, +2
    earsoptCOMBOrandom 50%9 options: disabled, random 100%, random 80%, random 50%, random 20%, small ears, +3
    noseoptCOMBOrandom 50%11 options: disabled, random 100%, random 80%, random 50%, random 20%, a small nose, +5
    eyesoptCOMBOrandom 50%11 options: disabled, random 100%, random 80%, random 50%, random 20%, large eyes, +5
    lipsoptCOMBOrandom 50%10 options: disabled, random 100%, random 80%, random 50%, random 20%, full lips, +4
    teethoptCOMBOrandom 50%9 options: disabled, random 100%, random 80%, random 50%, random 20%, even teeth, +3
    eyebrowsoptCOMBOrandom 50%10 options: disabled, random 100%, random 80%, random 50%, random 20%, thin eyebrows, +4
    cheekbonesoptCOMBOrandom 50%9 options: disabled, random 100%, random 80%, random 50%, random 20%, high cheekbones, +3
    handsoptCOMBOrandom 50%10 options: disabled, random 100%, random 80%, random 50%, random 20%, slender fingers, +4
    makeupoptCOMBOrandom 50%15 options: disabled, random 100%, random 80%, random 50%, random 20%, natural makeup, +9
    manicureoptCOMBOrandom 50%13 options: disabled, random 100%, random 80%, random 50%, random 20%, short natural nails, +7

    Outputs (2)

    NameTypeDescription
    promptSTRING
    seedINT