LayerFilter: SkinBeauty
One-node skin smoothing that hands you the mask too
- image
- image
- beauty_mask
Portrait skin retouching without opening Photoshop or wiring up a frequency-separation contraption. Feed it a face, and it smooths the skin while trying to keep eyes, hair, and edges sharp. The genuinely useful part is that it doesn't just hand you a smoothed image - it also spits out the skin mask it worked on, so you can dial the effect back in later or reuse that mask for makeup, color, or targeted grading.
Where this fits: it's a finishing node for anything with a person in it. AI faces often come out with slightly blotchy or over-detailed skin, and a light pass here evens it out. It's the "beauty filter" step, and like every beauty filter, the trap is overdoing it until everyone looks like a wax figure.
How it works
Under the hood it does the classic retouch move - detect the skin tones, smooth the low-frequency blemish/texture variation on them, and blend that back over the original so the sharp stuff (lashes, hair, lip edges) survives. The threshold controls what counts as skin. Because it isolates skin rather than blurring the whole frame, you keep the crisp features that make a portrait read as sharp.
The inputs and outputs that matter
image(IMAGE) - the portrait.smooth(INT, 1–64, default 20) - how hard it smooths. This is your main dial. 20 is a sane starting point; go higher for glossy/editorial, but past ~35 skin starts looking plastic.threshold(INT, −255 to 255, default −10) - controls how aggressively pixels get pulled into the "skin" region. Nudge it if it's grabbing background/clothing that happens to be skin-toned, or if it's missing skin.opacity(INT, 0–100, default 100) - the overall strength of the effect blended over the original. Honestly the cleanest way to keep it natural: runsmootha bit high, then pullopacitydown to 50–70 so you're mixing retouched and original.
Two outputs:
image(IMAGE) - the retouched result.beauty_mask(MASK) - the skin region it operated on. Don't throw this away. It's handy for feeding a separate color/dodge pass, or for compositing the smooth version over the original yourself with more control thanopacitygives you.
How to install it
ComfyUI Manager → search ComfyUI Layer Style → install → restart. Or from a terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_LayerStyle
Restart to install the pack's requirements. SkinBeauty is image-math only - no model weights to fetch.
Common issues & troubleshooting
If the node isn't in your menu, it's the pack-level IMPORT FAILED problem, not this node. Check the console at startup. The two recurring causes across this pack: an outdated install from before it was split into ComfyUI_LayerStyle and ComfyUI_LayerStyle_Advanced (nuke the old folder and reinstall), and a broken dependency in your environment (a bad transformers/tensorflow state is a common one) that crashes the import. Reinstall clean via Manager and it usually comes back.
The most common result complaint is the wax-figure look - that's just smooth cranked too high or opacity left at 100. Back both off. If it smooths the wrong things (a skin-toned wall, wooden furniture) or ignores actual skin, that's the threshold doing too much or too little - tune it. And since it's tuned for skin, don't expect much on non-portrait images; there's nothing for it to find.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| smooth | INT | 201–64 | — |
| threshold | INT | -10-255–255 | — |
| opacity | INT | 1000–100 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| beauty_mask | MASK | — |