NSFW body builder
The body-detail dice roll
- prompt
- seed
If NSFW randomize person decides the face, NSFW body builder decides everything below the neck - and its name is a small lie that works in your favor. It doesn't build a body; it rolls one, appending a single "She has …" line to a prompt you feed it. Waist, hips, butt, legs, thighs, arms, breasts, nipples, belly, musculature, pubic area, feet - 12 slots, each defaulting to a random 50% coin flip.
It's the third node in the theSharque/ComfyUI-NSFW-Prompt pack and it shares the exact same architecture as its sibling: post-process node, prompt in, prompt + seed out, appearance drawn from plain JSON dictionaries (this time under body/). The README's division of labor is worth repeating: randomize person handles face/hair/skin, body builder handles the rest. Chain both after the main prompt node and you get a who, then a body, then the scene - a full subject description in two appended lines.
How it works
Mechanically it's a near-twin of randomize person, and the source code confirms it - the two files share the same seed bank, the same random N% chance logic, and the same detect_voice function that reads the incoming prompt to pick She / He / They. Multi-person markers like "two women" split the body traits into "They look different from each other, one with …, another with …" so each person gets half the details instead of both getting all of them.
The grammar is simpler than the person node, though: it doesn't recombine traits. Each slot that passes its coin flip just joins the list - "a toned build, large firm breasts, a wasp waist, wide hips, a round firm butt" - and the whole thing is prefixed with the pronoun + "has". Empty results (all slots fail their rolls, or everything's set to disabled) mean no line is appended at all; you get your input prompt back untouched.
Inputs and outputs
- prompt (required, multiline) - the text it appends to.
- seed (optional, default -1) - connect one, or leave it unconnected and let it generate; the seed echo tells you which it used.
- The 12 body slots - musculature, breasts, nipples, waist, belly, hips, butt, legs, thighs, arms, pubic, feet.
Outputs: prompt (input plus the new line) and seed. The returned seed is your reproducibility handle - capture it if a body roll came out exactly right.
Install
Nothing new to install if you already have the pack - it's one clone:
cd ComfyUI/custom_nodes
git clone https://github.com/theSharque/ComfyUI-NSFW-Prompt
Restart ComfyUI and the node appears under the prompt category. ComfyUI Manager finds the pack by title as well. No extra Python dependencies, no model downloads.
Gotchas
- This node only makes sense downstream of a prompt that already establishes a person. Bolt it straight onto an empty prompt and you get a bare "She has…" sentence with no context.
- The pubic slot has some… enthusiastic entries (the source dictionary includes "a pubic area with pimples and scratches"). If that's not your lane, set that slot to
disabledor prunebody/pubic.json- every dictionary in the pack is editable plain JSON, and reloading the node picks up your edits. - Like every node here, the roll is only reproducible if you thread the seed: scene seed → person seed → body seed → sampler. Miss one link and the body will change while everything else holds.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| seedopt | INT | -1-1–18446744073709550000 | Connect a seed, or leave -1 / unconnected to generate |
| musculatureopt | COMBO | random 50% | 14 options: disabled, random 100%, random 80%, random 50%, random 20%, a skinny build, +8 |
| breastsopt | COMBO | random 50% | 17 options: disabled, random 100%, random 80%, random 50%, random 20%, large breasts, +11 |
| nipplesopt | COMBO | random 50% | 12 options: disabled, random 100%, random 80%, random 50%, random 20%, small nipples, +6 |
| waistopt | COMBO | random 50% | 12 options: disabled, random 100%, random 80%, random 50%, random 20%, a wasp waist, +6 |
| bellyopt | COMBO | random 50% | 11 options: disabled, random 100%, random 80%, random 50%, random 20%, a flat stomach, +5 |
| hipsopt | COMBO | random 50% | 12 options: disabled, random 100%, random 80%, random 50%, random 20%, wide hips, +6 |
| buttopt | COMBO | random 50% | 15 options: disabled, random 100%, random 80%, random 50%, random 20%, a flat butt, +9 |
| legsopt | COMBO | random 50% | 13 options: disabled, random 100%, random 80%, random 50%, random 20%, long legs, +7 |
| thighsopt | COMBO | random 50% | 12 options: disabled, random 100%, random 80%, random 50%, random 20%, thick thighs, +6 |
| armsopt | COMBO | random 50% | 11 options: disabled, random 100%, random 80%, random 50%, random 20%, slender arms, +5 |
| pubicopt | COMBO | random 50% | 13 options: disabled, random 100%, random 80%, random 50%, random 20%, a smooth pubic area, +7 |
| feetopt | COMBO | random 50% | 12 options: disabled, random 100%, random 80%, random 50%, random 20%, small feet, +6 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| seed | INT | — |