Portrait Styler
A 2,000-option portrait prompt machine — if you read Chinese
- positive
- negative
Portrait Styler (PortraitStyler) is the flagship of the zsq_prompt pack and the reason the pack exists - the README is basically "comfyui prompt style," and this is the style. It's a massive portrait-prompt builder: fourteen category dropdowns (hairstyle, outfit, expression, pose, location, weather, eye color, nationality, and so on) whose thousands of choices get assembled into a finished English prompt, with optional random sampling for batch variety and an optional Fooocus style on top. If you've seen those enormous Chinese-community prompt-styler nodes from ComfyUi_PromptStylers or comfyui-sixgod_prompt, this is that lineage - and the data was literally sourced from them.
How it works
The category dropdowns are labeled in Chinese (风格/style, 场所/place, 表情/expression, 发型/hairstyle, 服装/clothing, 姿势/pose, 国籍/nationality, 视角/view, 特征/features, 化妆/makeup, 脸型/face shape, 天气/weather, 头发颜色/hair color, 眼睛颜色/eye color). Under the hood each option maps a Chinese label to an English prompt fragment via JSON dictionaries shipped in the repo, and the node concatenates your selections into one prompt. Some categories carry a weight from prompt_weight.json (nationality, features, and build get 1.2) - that's the pack's attention-weighting.
You also get a GO_gender (Man/Woman) and GO_age (18–80) pair that emits a clause like (a (25-year-old:1.5) Man), a GO_fooocus toggle that can layer a Fooocus style template (Enhance, Masterpiece, Photograph…) onto the result, and - the fun one - GO_Random with modes like ONLY, EXCEPT, NOSELECT, SELECTED, and ALL, which randomize selected categories per image. GO_ImageNum sets how many prompts to generate (up to 100).
The outputs are the two that matter: positive (a STRING list - one prompt per image when you're in random/multi mode) and negative (a single STRING). The pack's negative default is the standard quality-tag block, and your own GO_negative is appended.
The honest reality check
The big caveat: the entire UI is Chinese, from the category names to the option labels. If you don't read it, you'll be guessing what "01风格" vs "03天气" select. The generated output is English (usable by any model), but operating the node is a Chinese-reading experience. That's the single biggest factor in whether this node is for you.
Also weigh this: on 2026-era LLM-encoded models, comma-tag prompts and (word:1.5) weights are largely inert - this styler is built for the CLIP-based SDXL/Illustrious/Pony lineage where tags and weights still sing. If your base model is newer, the effort-to-payoff math gets worse.
Where it fits
Portrait iteration, hard. Want to batch 20 portraits that all share a pose but randomize hairstyle, nationality, and weather? Set GO_ImageNum to 20, put the stable categories on "nothing", and use GO_Random with the right mode - the positive list gives you a prompt per image. Feed the list into the pack's BatchPromptJson or a sampler that accepts prompt lists, and you've got a variation farm. It's the one node in this pack with genuinely no core-ComfyUI equivalent.
Installing zsq_prompt
Shared pack install. ComfyUI Manager → search zsq_prompt → install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/windfancy/zsq_prompt
Restart ComfyUI. Heavy shared deps (transformers, opencv-python, opencv-contrib-python, scikit-image, timm, onnx, ultralytics) come with the pack; if Manager flags "conflicting with zsq_prompt" on a workflow, that's dependency-overlap noise, only meaningful once the pack is installed. No model downloads - all the style data ships inside the repo, so it works offline.
Gotchas
- Chinese-only UI. Not "Chinese and English," Chinese-only. Budget for it.
GO_Random = "ALL"randomizes every category;"NO"assembles exactly what you picked. TheSELECTED/EXCEPTmodes randomize only the category named inGO_Random_Item. Worth a read of the mode list before you assume.- The positive output is a list, so a plain single-prompt sampler won't accept it directly - route it through something that consumes prompt lists.
- The category dropdowns have hundreds to thousands of options each; the node can feel sluggish to open. That's the cost of the dataset, not a bug.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| GO_positive | STRING | — | |
| GO_negative | STRING | — | |
| GO_fooocus | COMBO | fooocus_styles | 2 options: nothing, fooocus_styles |
| GO_Random | COMBO | NO | 6 options: NO, ONLY, EXCEPT, NOSELECT, SELECTED, ALL |
| GO_ImageNum | INT | 11–100 | — |
| GO_Random_Item | COMBO | 14 options: 01风格, 03场所, 09表情, 06发型, 03天气, 02国籍, +8 | |
| GO_gender | COMBO | - | 3 options: -, Man, Woman |
| GO_age | INT | 2518–80 | — |
| 01风格 | COMBO | 202 options: nothing, 画质-简单起手, 画质-真实风格起手, 画质-提高质量, 画质-最佳质量, 画质-高分辨率, +196 | |
| 03场所 | COMBO | 931 options: nothing, 中国-故宫, 中国-长城, 中国-兵马俑, 中国-颐和园, 中国-天坛, +925 | |
| 09表情 | COMBO | 32 options: nothing, 开心, 伤心, 嘲笑, 生气, 紧张, +26 | |
| 06发型 | COMBO | 120 options: nothing, 辫子-辫子, 辫子-两条辫子, 辫子-双辫子, 辫子-短辫子, 辫子-长辫子, +114 | |
| 03天气 | COMBO | 95 options: nothing, 时间-日出, 时间-黎明, 时间-黄昏, 时间-午夜, 时间-清晨, +89 | |
| 02国籍 | COMBO | 182 options: nothing, 亚洲-阿富汗人, 亚洲-亚美尼亚人, 亚洲-阿塞拜疆人, 亚洲-巴林人, 亚洲-孟加拉国人, +176 | |
| 02视角 | COMBO | 9 options: nothing, 特写, 面部特写, 全身照, 全长肖像, 半长肖像, +3 | |
| 06头发颜色 | COMBO | 222 options: nothing, 矿物色-金色头发, 黑色-黑色头发, 矿物色-红宝石头发, 矿物色-蓝宝石头发, 矿物色-绿宝石头发, +216 | |
| 01特征 | COMBO | 58 options: nothing, 美丽, 猫耳, 熊耳, 兔耳, 狗耳, +52 | |
| 04服装 | COMBO | 424 options: nothing, 原神-北斗, 原神-安柏, 原神-凯亚, 原神-丽莎, 原神-罗莎莉亚, +418 | |
| 08化妆 | COMBO | 50 options: nothing, 复古妆, 烟熏妆, 清新淡妆, 哥特妆, 甜美妆, +44 | |
| 10姿势 | COMBO | 239 options: nothing, 运动-行走, 运动-转身, 运动-摆动, 运动-弯腰, 运动-高抬腿, +233 | |
| 05脸型 | COMBO | 19 options: nothing, 椭圆, 可爱, 菱形, 瘦, 扁平, +13 | |
| 07眼睛颜色 | COMBO | 11 options: nothing, 棕色眼睛, 蓝色眼睛, 绿色眼睛, 深褐色眼睛, 灰色眼睛, +5 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | STRING | — |
| negative | STRING | — |