Portrait Master 2.9.2 经典单节点版
Why the 2.9.2 Portrait Master Still Wins
- positive
- negative
Here's the twist: the author of the Chinese fork recommends the old one. The v3 split is nicer to read, but PortraitMasterLegacyCN (Portrait Master 2.9.2 经典单节点版) is the classic all-in-one - every Portrait Master option from shot to style in a single node, including two things the split modules don't have: an integrated negative prompt and a built-in photorealism boost. The pack README says it plainly: "当前更推荐使用 2.9.2" - currently, the 2.9.2 is the one to use.
If you want to actually understand Portrait Master, this is the node to study, because it's the whole system in one wall of widgets.
How it works
It's the original 2.9.2 prompt-builder, Chinese-labeled, English-emitted. Selectors and weight sliders resolve to prompt phrases; - values and 0 weights are skipped; ~50 randomization booleans (随机镜头, 随机性别, 随机皮肤瑕疵, random_style_1…) can re-roll individual fields each run - the v3 split removed these switches, and honestly they're the legacy node's secret weapon for batch variety.
The big difference from v3: two outputs. positive and negative STRINGs. The node builds one prompt and a companion negative, so it can push tokens to both sides - the 照片写实增强 (photorealism improvement) toggle, when enabled, appends (professional photo, balanced photo, balanced exposure:1.2) to the positive and injects anti-shiny-skin tokens like (shinny skin, shiny skin, reflections on the skin, skin reflections:1.35) into the negative. That single toggle is doing the work people usually hand-build with two text boxes.
The inputs that matter
- prompt_start / prompt_additional / prompt_end - three free-text slots that sandwich the generated core. prompt_start sets the image type (
raw photo, the default), prompt_additional drops in clothing/setting mid-prompt, prompt_end holds minor extras. This is how you blend your own writing with the node's. - negative_prompt - your own negative, merged with the node's auto-generated one.
- 镜头类型 / 性别 / 年龄 / 国籍_1 / 国籍_2 - the identity block. 国籍_1 defaults to 中国人 (Chinese), which tells you which audience this fork is tuned for.
- 模特姿势 / 服装 / 光照类型 / style_1 / style_2 - the "how it's shot" block, same vocabulary as the v3 StylePose module.
Wire both outputs into two CLIPTextEncode nodes (positive → positive, negative → negative).
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/DropFan/comfyui-portrait-master-cn
Restart, or find comfyui-portrait-master-cn in ComfyUI Manager. No models, no requirements.txt - this is one of the cleanest installs in the custom-node ecosystem.
Where people get burned
- The nationality mix has sharp edges. Set both 国籍_1 and 国籍_2 and the node emits
[chinese:spanish:0.84]- weighted alternation syntax that ComfyUI's stockCLIPTextEncodedoesn't parse natively (grab comfyui-prompt-control for it). There's also a cosmetic float bug: the mix value can come out as0.16000000000000003in the emitted prompt. It's harmless but it looks broken when you read the output. - Random toggles override your manual values. That's by design, but people forget - you spend ten minutes dialing in a face, flip 随机发型 on, and wonder why it changed.
- The whole prompt is lowercased. Fine for SDXL booru-style tags, and expected for SD1.5, but the old habit of capitalizing words for emphasis does nothing here.
- Weights are a CLIP-era feature. If your checkpoint uses an LLM text encoder (Flux, Z-Image), the
(token:1.2)wrappers are mostly discarded. The node still writes coherent vocabulary - the emphasis just lands softer.
The honest take
It's an intimidating single node with over a hundred widgets, and that's exactly why the author still recommends it: everything lives in one place, the randomness switches give you free variety, and the built-in negative + photorealism combo is something the v3 modules punt on. If you're new, start here, get one great portrait, then graduate to the modular setup when you want a cleaner canvas. The legacy node is the one I'd actually reach for.
Inputs (82)
| Name | Type | Default | Description |
|---|---|---|---|
| 镜头类型 | COMBO | 头像 | 12 options: -, 头像, 头肩像, 半身肖像, 全身肖像, 脸部, +6 |
| 镜头权重 | FLOAT | 0.000–1.95 | — |
| 性别 | COMBO | 女 | 5 options: -, 男, 女, 男孩, 女孩 |
| 跨性别程度 | FLOAT | 0.000–1.95 | — |
| 年龄 | INT | 220–100 | — |
| 国籍_1 | COMBO | 中国人 | 193 options: -, 阿富汗人, 阿尔巴尼亚人, 阿尔及利亚人, 安道尔人, 安哥拉人, +187 |
| 国籍_2 | COMBO | - | 193 options: -, 阿富汗人, 阿尔巴尼亚人, 阿尔及利亚人, 安道尔人, 安哥拉人, +187 |
| 国籍混血 | FLOAT | 0.500–1 | — |
| 体型 | COMBO | - | 35 options: -, 强壮的, 丰满的, 健壮的, 胖乎乎的, 有曲线的, +29 |
| 体型权重 | FLOAT | 0.000–1.95 | — |
| 模特姿势 | COMBO | - | 92 options: -, 整理服装姿势, 靠墙姿势, 整理头发姿势, 举手姿势, 艺术舞蹈姿势, +86 |
| 服装 | COMBO | - | 88 options: -, 舞会礼服, 沙滩裙, 紧身包臀连衣裙, 波西米亚连衣裙, 伴娘礼服, +82 |
| 眼睛颜色 | COMBO | - | 18 options: -, 白化外观, 琥珀色, 琥珀棕色, 黑色, 蓝色, +12 |
| 眼睛形状 | COMBO | - | 13 options: -, 杏仁眼形状, 亚洲人眼睛形状, 眼距近的眼睛形状, 深陷的眼睛形状, 下斜眼形状, +7 |
| 唇色 | COMBO | - | 34 options: -, 浆果色唇, 黑色唇, 蓝色唇, 古铜色唇, 棕色唇, +28 |
| 唇形 | COMBO | - | 23 options: -, 咬唇, 弓形唇, 闭唇, 丘比特弓唇, 弯曲唇形, +17 |
| 表情 | COMBO | - | 43 options: -, 愉快的, 愤怒的, 焦虑的, 吃惊的, 无聊的, +37 |
| 表情权重 | FLOAT | 0.000–1.95 | — |
| 脸型 | COMBO | - | 25 options: -, 圆形, 娃娃脸, 菱形, 心形, 尖下巴心形, +19 |
| 脸型权重 | FLOAT | 0.000–1.95 | — |
| 面部不对称 | FLOAT | 0.000–1.95 | — |
| 发型 | COMBO | - | 121 options: -, 爆炸头, A 字波波头, 不对称发型, 挑染, 光头, +115 |
| 发型颜色 | COMBO | - | 25 options: -, 赤褐色, 米色 (浅褐色), 黑色, 金色(女)/浅黄色(男), 酒红色, +19 |
| 头发长度 | COMBO | - | 8 options: -, 光头, 超短发, 短, 中, 齐肩长的, +2 |
| 凌乱程度 | FLOAT | 0.000–1.95 | — |
| 妆容 | COMBO | - | 44 options: -, 动漫妆, 艺术妆, 前卫妆, 波西米亚妆, 波西米亚风妆容, +38 |
| 胡子 | COMBO | - | 34 options: -, 胡茬, 山羊胡, 络腮胡, 凡戴克胡, 灵魂补丁胡(下巴上的一小撮胡子), +28 |
| 自然皮肤 | FLOAT | 0.000–1.95 | — |
| 素颜 | FLOAT | 0.000–1.95 | — |
| 洗脸程度 | FLOAT | 0.000–1.95 | — |
| 干脸程度 | FLOAT | 0.000–1.95 | — |
| 皮肤细节 | FLOAT | 0.000–1.95 | — |
| 皮肤毛孔 | FLOAT | 0.000–1.95 | — |
| 酒窝 | FLOAT | 0.000–1.95 | — |
| 皱纹 | FLOAT | 0.000–1.95 | — |
| 雀斑 | FLOAT | 0.000–1.95 | — |
| 痣 | FLOAT | 0.000–1.95 | — |
| 皮肤瑕疵 | FLOAT | 0.000–1.95 | — |
| 皮肤痤疮 | FLOAT | 0.000–1.95 | — |
| 晒黑_小麦色皮肤 | FLOAT | 0.000–1.95 | — |
| 眼睛细节 | FLOAT | 0.000–1.95 | — |
| 虹膜细节 | FLOAT | 0.000–1.95 | — |
| 环形虹膜 | FLOAT | 0.000–1.95 | — |
| 圆形瞳孔 | FLOAT | 0.000–1.95 | — |
| 光照类型 | COMBO | - | 71 options: -, 抽象光图案, 环境光, 逆光剪影光, 逆光, 蓝色时刻光, +65 |
| 光照方向 | COMBO | - | 11 options: -, 顶部, 底部, 右侧, 左侧, 正前方, +5 |
| 光照权重 | FLOAT | 0.000–1.95 | — |
| 照片写实增强 | COMBO | 2 options: enable, disable | |
| prompt_start | STRING | raw photo, (realistic:1.5) | — |
| prompt_additional | STRING | — | |
| prompt_end | STRING | — | |
| negative_prompt | STRING | — | |
| style_1 | COMBO | - | 78 options: -, 爱克发维斯塔(一种胶卷风格), 古旧风格, 阿斯蒂亚(一种胶卷风格), 北极光(常用于形容特定摄影效果), 黑白摄影作品, +72 |
| style_1_weight | FLOAT | 1.501–1.95 | — |
| style_2 | COMBO | - | 78 options: -, 爱克发维斯塔(一种胶卷风格), 古旧风格, 阿斯蒂亚(一种胶卷风格), 北极光(常用于形容特定摄影效果), 黑白摄影作品, +72 |
| style_2_weight | FLOAT | 1.501–1.95 | — |
| 随机镜头 | BOOLEAN | false | — |
| 随机性别 | BOOLEAN | false | — |
| 随机年龄 | BOOLEAN | false | — |
| 随机跨性别 | BOOLEAN | false | — |
| 随机种族 | BOOLEAN | false | — |
| 随机体型 | BOOLEAN | false | — |
| 随机模特姿势 | BOOLEAN | false | — |
| 随机服装 | BOOLEAN | false | — |
| 随机眼睛颜色 | BOOLEAN | false | — |
| 随机眼睛形状 | BOOLEAN | false | — |
| 随机唇色 | BOOLEAN | false | — |
| 随机唇形 | BOOLEAN | false | — |
| 随机面部表情 | BOOLEAN | false | — |
| 随机脸型 | BOOLEAN | false | — |
| 随机发型 | BOOLEAN | false | — |
| 随机发色 | BOOLEAN | false | — |
| 随机头发长度 | BOOLEAN | false | — |
| 随机凌乱 | BOOLEAN | false | — |
| 随机妆容 | BOOLEAN | false | — |
| 随机雀斑 | BOOLEAN | false | — |
| 随机痣 | BOOLEAN | false | — |
| 随机皮肤瑕疵 | BOOLEAN | false | — |
| 随机胡子 | BOOLEAN | false | — |
| random_style_1 | BOOLEAN | false | — |
| random_style_2 | BOOLEAN | false | — |
| seedopt | INT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | STRING | — |
| negative | STRING | — |