Nodes/ComfyUI_LC123_nodes/LC Skin Beauty ✨
ComfyUI Node

LC Skin Beauty ✨

Grade the skin, not the whole frame

By lonecatone23·Created 2 months ago·Updated about 12 hours ago· 19
LC Skin Beauty ✨
  • image
  • mask
  • image
  • skin_mask
presetNatural
strength1.00
coolness0.22
brightness0.12
rosy0.08
evenness0.18
shadow_lift0.15
smooth0.06
texture_preserve0.88
saturation-0.08
highlight_protect0.75
mask_sensitivity0.55
mask_feather0.45

The classic beauty-retouch move in ComfyUI is dragging a whole-frame node in - brighten, smooth, done - and then watching the background, the clothes, and the eyes all get mangled by a filter that was aimed at a face. LC Skin Beauty is the targeted version: it detects where the skin actually is, then does its cooling and brightening in CIELAB color space on that mask only. You grade the skin, and the rest of the frame barely notices.

That targeting is the whole point. "Too-smooth skin" is the number-one photorealism tell in the KB's photorealism essay - the beauty-filter look that reads instantly as AI - and this node's answer is restraint plus control: an auto skin mask that protects eyes and lips and suppresses busy fabric, with the option to intersect it with an external mask (say, a SAM person matte) for higher precision.

How it works

The pipeline is mask → CIELAB grade → blend. It builds a skin mask automatically (mask_sensitivity controls reach, mask_feather controls the edge), optionally intersects it with your MASK input, then applies the color grade in LAB where lightness and color are separated. That's why you get distinct brightness (lightness lift, highlights protected) and coolness (less yellow, cooler skin) dials instead of one blunt slider. Presets - Natural, Light, Fresh, Porcelain, Warm keep - load the sliders, and after that what you see is what runs. There's an on-node wipe preview to compare before/after.

The dials that matter most

  • strength - overall blend with the original; 1.0 = full preset, above 1 = stronger.
  • smooth and texture_preserve - the plastic-vs-natural trade. Less plastic = lower smooth, higher texture_preserve (keep those pores).
  • mask_sensitivity - if it's grabbing fabric, lower it, or feed a person/skin MASK.
  • highlight_protect - keep bright skin from blowing out.

Outputs: image (graded) and skin_mask - inspect the mask output first thing; it tells you exactly what the node thinks is skin.

Getting it right

The README's quick guide: natural cleanup → Natural or Warm keep at strength ~0.7–1.0; fabric leaks → lower mask_sensitivity or supply a mask; and always check skin_mask before trusting the result. "Busy fabric suppressed" is a nice claim but fabric with skin tones in it still occasionally sneaks through - the mask output is your verification.

Install

It's in the LC123 pack - ComfyUI Manager (search "LC123") or:

cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes

Restart. No extra pip packages - this is pure pixel math, no model. Cloud-hosted ComfyUI needs LC123 requested or run locally.

The take: if your portraits come out looking like a skincare ad, this is a gentler, more surgical fix than a sharpen-and-smooth stack, and the mask-aware design means the background survives the retouch.

CategoryLC123/image

Inputs (15)

NameTypeDefaultDescription
imageIMAGESource image (batch ok).
presetCOMBONaturalStarting preset. Customize below by moving the sliders.
strengthFLOAT1.000–2How much of the effect to apply. 0 = original image, 1 = full, above 1 = stronger.
coolnessFLOAT0.220–1Cool vs warm skin. 0 = no shift, 1 = much less yellow / cooler.
brightnessFLOAT0.120–1Skin whitening / lightness. 0 = none, 1 = strong lift (highlights still protected).
rosyFLOAT0.08-0.3–0.5Rosy flush. Negative = less red, 0 = neutral, higher = pinker cheeks/lips-adjacent skin.
evennessFLOAT0.180–1Even skin tone. 0 = keep variation, 1 = strong local color averaging.
shadow_liftFLOAT0.150–1Shadow recovery. 0 = no change in dark areas, 1 = lift shadows more than midtones.
smoothFLOAT0.060–1Soft smoothing. 0 = full texture, 1 = softer skin (use with texture preserve).
texture_preserveFLOAT0.880–1Texture keep. 0 = allow smooth to flatten detail, 1 = protect pores/micro-contrast.
saturationFLOAT-0.08-0.5–0.5Skin saturation. Negative = quieter color, 0 = unchanged, positive = richer.
highlight_protectFLOAT0.750–1Highlight protect. 0 = treat bright skin same as midtones, 1 = mostly skip highlights.
mask_sensitivityFLOAT0.550–1Mask reach. 0 = only obvious skin, 1 = wider (may include more non-skin).
mask_featherFLOAT0.450–1Mask edge. 0 = harder cut, 1 = softer feather into non-skin.
maskoptMASKOptional external skin mask (higher precision). Combined with auto mask.

Outputs (2)

NameTypeDescription
imageIMAGE
skin_maskMASK