Portrait Skin Prompt
Pores, freckles, wrinkles — skin detail as sliders
- text
Default SDXL skin is airbrushed plastic - smooth, poreless, uncanny. Portrait Skin Prompt exists for the people who want skin that looks like skin: it puts the entire skin-texture vocabulary on sliders, from base skin tone (122 options) down to pores, imperfections, acne, tanned skin, wrinkles, freckles, moles, even circular pupils and iris detail. It's the realism specialist in ComfyUI-PromptWrapper's portrait family, and it's the node to reach for when your portraits read "render" instead of "photo".
How it works
The skin dropdown reads from skin_datas.jsonl, picked by seed % dataset_length on random 🎲. Everything else is weight-only: a library of fixed skin phrases lives in the pack's portrait_datas.json, and each weight slider (0–2) adds its phrase wrapped as (phrase:1.3) - or omits it entirely at 0, which is the default for every detail slider. So out of the box you get just the skin tone, and you opt in to texture one knob at a time.
Inputs that matter
- skin and skin_weight - the base tone. The only dropdown, and the one input you'll always set.
- skin_details_weight, skin_pores_weight, skin_imperfections_weight, skin_acne_weight - the texture group. This is where "photoreal" actually comes from.
- tanned_skin_weight, bare_face_weight, moist_face_weight, dried_face_weight - complexion states.
- dimples_weight, wrinkles_weight, freckles_weight, moles_weight - character detail.
- eyes_details_weight, circular_pupils_weight, iris_details_weight, circular_iris_weight - eye realism, the part people notice first.
One text output, comma-joined, ready for Combine Prompt alongside your face and pose.
Install
ComfyUI Manager → Custom Nodes Manager → search ComfyUI-PromptWrapper → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/clouddreamfly/ComfyUI-PromptWrapper
No downloads - the skin datasets ship with the pack.
Where people get burned
This node rides the realism knife-edge. Stack every detail slider at 1.0 and you'll get a face that's 40% pores, which reads as texture noise rather than skin. The working pattern is additive and light: base tone, skin_details at 0.8, one or two character features (freckles, moles) at 0.5. Also be realistic about your checkpoint - the photorealism framing matters most on SDXL-lineage models; on stylized anime checkpoints most of these phrases are dead weight, and on LLM-encoded models the weights get discarded. Pair it with a good VAE and a photo-focused checkpoint and it earns its keep.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| language | COMBO | Chinese | 2 options: Chinese, English |
| skin | COMBO | -- | 122 options: --, random 🎲, 白皮肤, 黄皮肤, 黑皮肤, 苍白的皮肤, +116 |
| skin_weight | FLOAT | 1.000–2 | — |
| skin_details_weight | FLOAT | 0.000–2 | — |
| skin_pores_weight | FLOAT | 0.000–2 | — |
| skin_imperfections_weight | FLOAT | 0.000–2 | — |
| skin_acne_weight | FLOAT | 0.000–2 | — |
| tanned_skin_weight | FLOAT | 0.000–2 | — |
| bare_face_weight | FLOAT | 0.000–2 | — |
| moist_face_weight | FLOAT | 0.000–2 | — |
| dried_face_weight | FLOAT | 0.000–2 | — |
| dimples_weight | FLOAT | 0.000–2 | — |
| wrinkles_weight | FLOAT | 0.000–2 | — |
| freckles_weight | FLOAT | 0.000–2 | — |
| moles_weight | FLOAT | 0.000–2 | — |
| eyes_details_weight | FLOAT | 0.000–2 | — |
| circular_pupils_weight | FLOAT | 0.000–2 | — |
| iris_details_weight | FLOAT | 0.000–2 | — |
| circular_iris_weight | FLOAT | 0.000–2 | — |
| seed | INT | 00–18446744073709550000 | — |
| enable | BOOLEAN | true | — |
| preset_prompt | STRING | — | |
| input_promptopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |