Magnific Image Skin Enhancer
Add skin texture back in one call
- image
- IMAGE
Here's the thing about AI portraits: the single most reliable tell that an image isn't a photo is skin that's too smooth. Pores, micro-wrinkles, sebaceous texture - the stuff that makes skin read as skin - is exactly what generative models wash out. That "every portrait looks like a skincare ad" look isn't your prompt's fault; it's baked into the models.
The Magnific Image Skin Enhancer is the tool pointed in the other direction from every beauty filter. Instead of blurring and smoothing, it sharpens and adds grain back. It's a portrait retouch pass that makes generated skin look like it was shot on film, not rendered in a sim.
What it actually is
This is a partner node, which in ComfyUI-speak means: it ships with core, no install, and it does the heavy lifting in the cloud. You sign in with your ComfyUI account, top up credits, and the node hands your image to Magnific's API - routed through Comfy's proxy to Freepik's skin-enhancer service, since that's the stack Magnific now runs on. Your GPU idles; your wallet doesn't.
Execution is synchronous: the node uploads your image, submits a skin-enhancer job, and polls until it's done. Your queue blocks while it runs (usually well under a minute), then a normal IMAGE tensor drops back into your graph. Same wire format as anything else in ComfyUI, so it slots into the end of any portrait workflow.
The inputs that matter
Only four, and only one of them is non-obvious:
- image - a single portrait. The API validates it: one image only, minimum 160×160, aspect ratio between 1:3 and 3:1. Feed it a batch and it errors.
- sharpen (0–100, default 0) - edge crispness. Most people leave this near zero and let the grain do the work.
- smart_grain (0–100, default 2) - this is the star. It's the "add film grain to the skin so it stops looking airbrushed" control, and it's why this node exists. Nudge it up until the skin reads as textured but you haven't turned the face into noise.
- mode - creative, faithful, or flexible, and picking one changes the controls you get:
- creative - artistic enhancement, straight up. No extra dials.
- faithful - preserves the original appearance and adds a skin_detail slider (0–100, default 80) to tune how much texture gets restored.
- flexible - targeted optimization via an optimized_for dropdown:
enhance_skin,improve_lighting,enhance_everything,transform_to_real, orno_make_up.
The no_make_up option under flexible is quietly the one to reach for when a portrait came out with that glossed, influencer-default finish - it strips the shine before the grain goes on.
Output and wiring
One IMAGE output. Save it, preview it, or pipe it into a local upscaler or video node - the cloud work is done by the time it reaches your graph. It's a terminal-ish node; you'll usually put it after generation (or after a face-restore pass on a real photo you want to de-filter).
Gotchas
- It costs credits per run, and the mode you pick changes the price - the node shows an estimated badge before you queue it, so glance at that the first time.
- Results are nondeterministic across runs even with the same inputs. It's a cloud model; treat it as iterative.
- The localhost login rule that applies to all partner nodes applies here: access from 127.0.0.1, not a LAN
--listensetup. - And the obvious one: it's a portrait node. Landscapes don't need skin texture, and sending a batch will just error.
If you've ever generated a portrait and thought "great face, shame about the plastic," this is the node that fixes the plastic.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | The portrait image to enhance. | |
| sharpen | INT | 00–100 | Sharpening intensity level. |
| smart_grain | INT | 20–100 | Smart grain intensity level. |
| mode | COMBO | Processing mode: creative for artistic enhancement, faithful for preserving original appearance, flexible for targeted optimization. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |