ComfyUI Node

Portrait Prompt

Face, hair, build, age, all of it

By clouddreamfly·Created about a year ago·Updated 8 months ago· 4
Portrait Prompt
    • text
    languageChinese
    lens_angle--
    lens_angle_weight1.00
    nationality_1--
    nationality_2--
    nationality_mix_weight0.50
    gender--
    androgynous_weight0.00
    age--
    age_weight1.00
    body_part--
    body_part_weight1.00
    body_type--
    body_type_weight1.00
    face_shape--
    face_shape_weight1.00
    pretty_face_weight0.00
    ordinary_face_weight0.00
    ugly_face_weight0.00
    facial_asymmetry_weight0.00
    facial_expression--
    facial_expression_weight1.00
    eyes_shape--
    eyes_color--
    eyebrows_style--
    eyebrows_color--
    eyelashs_style--
    eyelashs_color--
    nose_shape--
    hair_style--
    hair_color--
    hair_length--
    disheveled_weight0.00
    mouth_shape--
    lips_shape--
    lips_color--
    beard_style--
    beard_color--
    beard_length--
    seed0
    enabletrue
    preset_prompt
    input_prompt

    Describing a face is where prompts get vague. "Attractive woman" - what does the model do with that? Portrait Prompt is the opposite of vague: it hands you forty dropdowns covering lens angle, nationality, gender, age, body type, face shape, eyes, brows, lashes, nose, hair, mouth, lips, and beard, and assembles your choices into a weighted portrait prompt. It's the flagship of ComfyUI-PromptWrapper, a mostly Chinese-audience pack that flies under the radar in English discussions but puts real work into its prompt datasets.

    How it works

    Every dropdown is backed by a JSONL file in the pack's assets/ folder, in your choice of Chinese or English (the language input swaps the whole set). Most fields follow the same pattern: -- omits it, random 🎲 picks one via seed % dataset_length, and the weight slider (0–2) controls how strongly it lands - weight 1 is bare text, anything else becomes (word:1.3). A few fields are weight-only, like pretty_face_weight, ordinary_face_weight, and ugly_face_weight, which pull fixed phrases and let you dial realism up or down.

    The one genuinely clever input is nationality: nationality_1 and nationality_2 with nationality_mix_weight. Pick two and the node emits the [a:b:0.5] blend syntax, so you can mix ethnicities rather than pick one.

    The inputs that matter

    You can't set forty fields every run. The ones that carry the image:

    • gender, age, hair_style, hair_color - the big four. Everything else at -- still gives you a recognizable portrait.
    • lens_angle - 128 options, and it's the highest-leverage input for shot composition.
    • seed - reproduces random picks deterministically.
    • preset_prompt + optional input_prompt - both prepend your own text, so you can say "cinematic, 8k" without losing the generated part.

    The single text output goes straight into a CLIP Text Encode.

    Install

    ComfyUI Manager → Custom Nodes Manager → search ComfyUI-PromptWrapper → Install → restart, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/clouddreamfly/ComfyUI-PromptWrapper
    

    All the datasets ship with the pack - nothing to download.

    Where people get burned

    The weighting caveat applies loudly here: (word:1.3) and [a:b:0.5] are CLIP-encoder syntax. On SDXL-lineage checkpoints (Illustrious, Pony, SD 1.5) they work as intended. On 2026's LLM-encoded models - Flux's T5, Z-Image, Anima - those weights are silently discarded, so the node degrades to a phrase picker and the mix-weight feature does nothing. Also default language is Chinese; flip it to English for clean output on Western models. And a sanity note: this builds the description, not the pose - for stance and movement you'll want the pack's Portrait Pose Prompt wired into the same prompt.

    CategoryPromptWrapper

    Inputs (43)

    NameTypeDefaultDescription
    languageCOMBOChinese2 options: Chinese, English
    lens_angleCOMBO--128 options: --, random 🎲, 前视图, 侧视图, 后视图, 仰视图, +122
    lens_angle_weightFLOAT1.000–2
    nationality_1COMBO--196 options: --, random 🎲, 中国人, 俄罗斯人, 美国人, 英国人, +190
    nationality_2COMBO--196 options: --, random 🎲, 中国人, 俄罗斯人, 美国人, 英国人, +190
    nationality_mix_weightFLOAT0.500–1
    genderCOMBO--5 options: --, random 🎲, 女性, 男性, 双性
    androgynous_weightFLOAT0.000–2
    ageCOMBO--113 options: --, random 🎲, 婴儿, 幼儿, 小孩, 小男孩, +107
    age_weightFLOAT1.000–2
    body_partCOMBO--11 options: --, random 🎲, 肖像, 头像, 头部, 脸部肖像, +5
    body_part_weightFLOAT1.000–2
    body_typeCOMBO--28 options: --, random 🎲, 瘦身材, 正常身材, 超重身材, 骨感身材, +22
    body_type_weightFLOAT1.000–2
    face_shapeCOMBO--120 options: --, random 🎲, 椭圆形脸, 椭圆形脸, 卵圆形脸, 倒卵圆形脸, +114
    face_shape_weightFLOAT1.000–2
    pretty_face_weightFLOAT0.000–2
    ordinary_face_weightFLOAT0.000–2
    ugly_face_weightFLOAT0.000–2
    facial_asymmetry_weightFLOAT0.000–2
    facial_expressionCOMBO--26 options: --, random 🎲, 开心, 伤心, 生气, 惊讶, +20
    facial_expression_weightFLOAT1.000–2
    eyes_shapeCOMBO--196 options: --, random 🎲, 眼袋, 缠着绷带的单眼, 遮眼|眼罩, 眼罩, +190
    eyes_colorCOMBO--11 options: --, random 🎲, 棕色的眼睛, 蓝色的眼睛, 绿色的眼睛, 红色的眼睛, +5
    eyebrows_styleCOMBO--14 options: --, random 🎲, 眉毛, 柳叶眉, 狐眉, 浓眉, +8
    eyebrows_colorCOMBO--13 options: --, random 🎲, 黑色的眉毛, 蓝色的眉毛, 红色的眉毛, 棕色的眉毛, +7
    eyelashs_styleCOMBO--7 options: --, random 🎲, 睫毛, 羽扇形睫毛, 飞扬型睫毛, 典雅型睫毛, +1
    eyelashs_colorCOMBO--7 options: --, random 🎲, 黑色的睫毛, 灰色的睫毛, 棕色的睫毛, 褐色的睫毛, +1
    nose_shapeCOMBO--118 options: --, random 🎲, 正常鼻, 蒜头鼻, 肉鼻子, 朝天鼻, +112
    hair_styleCOMBO--450 options: --, random 🎲, 长发, 很短的头发, 短发, 后短发,前长发, +444
    hair_colorCOMBO--61 options: --, random 🎲, 浅灰色头发, 番茄色头发, 酸橙色头发, 海洋绿头发, +55
    hair_lengthCOMBO--9 options: --, random 🎲, 长发, 短发, 很短的头发, 后短发,前长发, +3
    disheveled_weightFLOAT0.000–2
    mouth_shapeCOMBO--47 options: --, random 🎲, 张嘴, 张大嘴喘气, 嘴巴微微张开, 波浪嘴, +41
    lips_shapeCOMBO--111 options: --, random 🎲, 小嘴唇, 大嘴唇, 樱桃嘴唇, 薄唇, +105
    lips_colorCOMBO--106 options: --, random 🎲, 黑色的嘴唇, 红色的嘴唇, 粉色的嘴唇, 紫色的嘴唇, +100
    beard_styleCOMBO--23 options: --, random 🎲, 胡子, 胡茬胡子, 山羊胡, 全蓄胡子, +17
    beard_colorCOMBO--9 options: --, random 🎲, 黑色的胡子, 灰色的胡子, 白色的胡子, 白灰色胡子, +3
    beard_lengthCOMBO--5 options: --, random 🎲, 短胡子, 中等胡子, 长胡子
    seedINT00–18446744073709550000
    enableBOOLEANtrue
    preset_promptSTRING
    input_promptoptSTRING

    Outputs (1)

    NameTypeDescription
    textSTRING