Nodes/ComfyUI Easy Use/easy portraitMaster
ComfyUI Node Runs on cloud

easy portraitMaster

A guided prompt builder for portraits

By yolain·Created 3 years ago·Updated 8 days ago· 2,633
easy portraitMaster
    • positive
    • negative
    shot
    shot_weight0.00
    genderWoman
    age30
    nationality_1Chinese
    nationality_2
    nationality_mix0.00
    body_type
    body_type_weight0.00
    model_pose
    eyes_color
    facial_expression
    facial_expression_weight0.00
    face_shape
    face_shape_weight0.00
    facial_asymmetry0.00
    hair_style
    hair_color
    disheveled0.00
    beard
    skin_details0.00
    skin_pores0.00
    dimples0.00
    freckles0.00
    moles0.00
    skin_imperfections0.00
    skin_acne0.00
    tanned_skin0.00
    eyes_details0.00
    iris_details0.00
    circular_iris0.00
    circular_pupil0.00
    light_type
    light_direction
    light_weight0.00
    photorealism_improvement
    prompt_startraw photo, (realistic:1.5)
    prompt_additional
    prompt_end
    negative_prompt

    Instead of remembering the magic words for pores and catchlights and skin imperfections, easy portraitMaster gives you a wall of dropdowns and sliders that assemble a portrait prompt for you. It's Easy-Use's port of florestefano1975's well-known Portrait Master node, and it's aimed squarely at people who want photoreal-ish faces without having learned the whole vocabulary of portrait prompting. Set the shot, gender, age, nationality, expression, hair; nudge a few realism sliders; out comes a positive and negative prompt.

    It's a nice on-ramp, and it's honest about what it is: a very elaborate prompt template. Worth calibrating your expectations up front, though - the whole approach (weighted tokens like skin details:1.4) is native to the SD 1.5 and SDXL era it was built in. On modern language-model-encoder models (Flux, Z-Image, Qwen), that kind of quality-token weighting does a lot less, and sometimes nothing. If you're on SDXL or a 1.5 realism checkpoint, this node is right at home. On the newest bases, treat its output as a starting draft you then rewrite in plain photographic language.

    How it works

    Every widget maps to a chunk of prompt text with an associated weight. The dropdowns (shot, gender, nationality, hair style, light type…) drop in descriptive phrases; the 0–1.95 sliders (skin_details, skin_pores, freckles, eyes_details, iris_details, and so on) emit weighted tokens at the strength you dial. It stitches all of that together - with your prompt_start, prompt_additional, and prompt_end text wrapped around it - into a finished positive prompt, plus a matching negative. Nothing is generated here; you get two strings to encode.

    The inputs and outputs that matter

    There are dozens of controls; a beginner really only needs a handful:

    • shot and shot_weight - framing (headshot, close-up, etc.) and how hard to push it.
    • gender, age, nationality_1 (and nationality_2 + nationality_mix to blend two) - the core identity of the subject.
    • facial_expression, hair_style, hair_color, eyes_color - the obvious descriptors.
    • The realism sliders - skin_details, skin_pores, and friends. This is where the "does it look like a photo or a plastic doll" lever lives. Per the photorealism playbook, too-smooth skin is the number-one tell that gives away an AI face, so a touch of skin_details / skin_pores is what pushes it toward believable. Don't crank everything to max - that overcooks fast.
    • prompt_start (defaults to raw photo, (realistic:1.5)), prompt_additional, prompt_end, negative_prompt - your own text woven around the generated parts.

    Outputs: positive and negative, both STRING. Encode them like any other prompt.

    How to install it

    Ships in ComfyUI-Easy-Use. ComfyUI Manager: search ComfyUI-Easy-Use, install, restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/yolain/ComfyUI-Easy-Use
    

    then install.bat (Windows) or pip install -r ComfyUI-Easy-Use/requirements.txt, and restart. No model downloads - it's a text builder.

    Common issues & troubleshooting

    Everything looks over-baked. Leaving a pile of sliders at high values stacks a lot of weighted tokens, and the result fights itself - plastic skin, exaggerated features. Start with most sliders near zero and raise only the two or three you care about (usually the skin ones). A focused prompt beats a maximal one.

    Weak or no effect on Flux / Z-Image / Qwen. As noted up top, this is SD-era prompt engineering. The newer language-model encoders largely ignore (token:1.4) weighting, and quality-booster spam is close to inert on them. On those models, use portraitMaster's phrasing as inspiration but write like a photographer - name a camera, a lens, a film stock - which is what actually moves those models.

    Output isn't conditioning. Same caveat as the other prompt nodes: positive and negative are strings. Send them into an encode / loader prompt input, not straight into a sampler.

    Nationality/ethnicity terms feel blunt. They're literal prompt phrases and behave like any other token. If a result skews wrong, adjust the nationality_mix blend or override the relevant part via prompt_additional rather than expecting the dropdown alone to nail it.

    CategoryEasyUse/Prompt

    Inputs (40)

    NameTypeDefaultDescription
    shotCOMBO9 options: -, Head portrait, Head and shoulders portrait, Half-length portrait, Full-length portrait, Face, +3
    shot_weightFLOAT0.000–1.95
    genderCOMBOWoman3 options: -, Man, Woman
    ageINT3018–90
    nationality_1COMBOChinese194 options: -, Afghan, Albanian, Algerian, Andorran, Angolan, +188
    nationality_2COMBO194 options: -, Afghan, Albanian, Algerian, Andorran, Angolan, +188
    nationality_mixFLOAT0.000–1.95
    body_typeCOMBO5 options: -, Underweight, Normal weight, Overweight, Obese
    body_type_weightFLOAT0.000–1.95
    model_poseCOMBO19 options: -, Power Pose, Walking Pose, The Over-the-Shoulder Look, S-curve Pose, Sitting Pose, +13
    eyes_colorCOMBO9 options: -, Brown, Blue, Green, Hazel, Gray, +3
    facial_expressionCOMBO25 options: -, Happy, Sad, Angry, Surprised, Fearful, +19
    facial_expression_weightFLOAT0.000–1.95
    face_shapeCOMBO13 options: -, Oval, Round, Square, Heart-shaped, Long, +7
    face_shape_weightFLOAT0.000–1.95
    facial_asymmetryFLOAT0.000–1.95
    hair_styleCOMBO40 options: -, Asymmetrical cut, Blunt cut, Bob cut, Braided bob, Buzz cut, +34
    hair_colorCOMBO10 options: -, Black, Brown, Blonde, Red, Auburn, +4
    disheveledFLOAT0.000–1.95
    beardCOMBO21 options: -, Stubble Beard, Goatee, Full Beard, Van Dyke Beard, Soul Patch, +15
    skin_detailsFLOAT0.000–1.95
    skin_poresFLOAT0.000–1.95
    dimplesFLOAT0.000–1.95
    frecklesFLOAT0.000–1.95
    molesFLOAT0.000–1.95
    skin_imperfectionsFLOAT0.000–1.95
    skin_acneFLOAT0.000–1.95
    tanned_skinFLOAT0.000–1.95
    eyes_detailsFLOAT0.000–1.95
    iris_detailsFLOAT0.000–1.95
    circular_irisFLOAT0.000–1.95
    circular_pupilFLOAT0.000–1.95
    light_typeCOMBO33 options: -, Natural sunlight, Soft ambient light, Harsh sunlight, Overcast sky, Sunset glow, +27
    light_directionCOMBO11 options: -, top, bottom, right, left, front, +5
    light_weightFLOAT0.000–1.95
    photorealism_improvementCOMBO2 options: enable, disable
    prompt_startSTRINGraw photo, (realistic:1.5)
    prompt_additionalSTRING
    prompt_endSTRING
    negative_promptSTRING

    Outputs (2)

    NameTypeDescription
    positiveSTRING
    negativeSTRING