Replicate tencentarc/photomaker
Stack a few photos, keep one face
- input_image
- input_image2
- input_image3
- input_image4
- IMAGE
PhotoMaker is one of the older tricks in the identity-preservation playbook, and it's still one of the best for one specific reason: you don't train anything. TencentARC's model takes one to four photos of a person and generates that same person in new scenes, outfits, and styles, in seconds. The name is a lie in the best way - there's no "making" of a photo in the studio sense, just a stack of references that becomes an identity.
This node wraps the Replicate-hosted version, so the whole thing runs in Comflowy's cloud and your GPU sits it out. Feed it a face, describe what you want, and an IMAGE comes back ready for your existing save-and-preview nodes.
How it works
PhotoMaker works by stacking your reference images into a single ID embedding - instead of one identity vector, it fuses several views of the person, which is why it's notably more robust than single-image methods when your photos are different angles or lighting. The embedding gets merged into the diffusion process through cross-attention, and your text prompt steers everything else. The img placeholder in the prompt is load-bearing: PhotoMaker models are trained so that "a photo of a person img" is where the ID embedding plugs in. Leave it out and you'll get a generic person, not yours.
The Replicate version is the classic one, tuned toward photorealistic output. (There's a sibling node, tencentarc/photomaker-style, that's the stylization flavor - worth a look if you want the artistic side.)
The inputs that matter
- input_image (required) plus input_image2/3/4 - your references. One is enough; two or three from different angles is the sweet spot. Wire each in from a Load Image.
- prompt - keep the
imgtoken in it. "A photo of a person img" is the default; extend from there. - style_name - 11 templates from "(No style)" through "Cinematic", "Digital Art", "Fantasy art", "Neonpunk", "Comic book", and the default "Photographic (Default)". This is the fastest lever on output look.
- style_strength_ratio (default
20, range 15–50) - how hard the style template pushes. This is your dial between "looks like the person" and "looks like the style." - num_steps (default
20), guidance_scale (default5), num_outputs (1–4), seed. - disable_safety_checker - off by default; flipping it on skips the model's built-in NSFW gate (which also means you're on your own for what gets returned).
Install
Same pack as the rest:
cd ComfyUI/custom_nodes
git clone https://github.com/6174/comflowy-nodes
Or ComfyUI Manager → search "Comflowy's Custom Nodes". Restart, set your key with the Comflowy Set API Key node, done. No local model files - this is the entire point of the node versus running PhotoMaker locally.
Where people get burned
The img token is the classic mistake - people write a flowery prompt, skip the trigger word, and get a stranger. Keep it. Second: more reference images isn't automatically better; four shots of different people will fuse into a frankenface, so keep your stack to one person. And remember it's a credit-burning cloud call per run - num_outputs of 4 is four images of billing, so test with 1. Black placeholder output? That's the pack's network/API-key failure mode, not the model. PhotoMaker is still the answer when you need a consistent face in a hurry and training a LoRA feels like overkill.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| input_image | IMAGE | — | |
| input_image2opt | IMAGE | — | |
| input_image3opt | IMAGE | — | |
| input_image4opt | IMAGE | — | |
| promptopt | STRING | A photo of a person img | — |
| style_nameopt | COMBO | Photographic (Default) | 11 options: (No style), Cinematic, Disney Charactor, Digital Art, Photographic (Default), Fantasy art, +5 |
| negative_promptopt | STRING | nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry | — |
| num_stepsopt | INT | 201–100 | — |
| style_strength_ratioopt | FLOAT | 20.0015–50 | — |
| num_outputsopt | INT | 11–4 | — |
| guidance_scaleopt | FLOAT | 5.001–10 | — |
| seedopt | INT | 0–2147483647 | — |
| disable_safety_checkeropt | BOOLEAN | false | — |
| force_rerunopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |