AI prompts
base on This node was designed to help AI image creators to generate prompts for human portraits. # ComfyUI Portrait Master
This nodes was designed to help AI image creators to generate prompts for human portraits.
## New major version: 3!
- The node has been divided into four separate modules: **Base Character**, **Skin Details**, **Style & Pose**, **Make-up**.
- Eliminated randomization switches: selectors now have the built-in selectable option.
- Improved code and performance.
## Donations and marketplace
**_If this project is useful to you and you like it, please consider a small donation to the author_**
➡️ https://ko-fi.com/stefanoflore75
**Buy my workflows!**
➡️ https://stefanoflore.it/en/download/stable-diffusion/
## Overview of the custom node
![ComfyUI Portrait Master Node](/screenshot/overview.png)
## Install from ComfyUI Manager
- Type _florestefano1975_ on the search bar of [ComfyUI Manager](https://github.com/ltdrdata/ComfyUI-Manager).
- Click the install button.
## Manual installation and update instructions
### Install
To install comfyui-portrait-master:
1. open the terminal on the ComfyUI `custom_nodes` folder
2. digit: `git clone https://github.com/florestefano1975/comfyui-portrait-master`
3. restart ComfyUI
### Update
To update comfyui-portrait-master:
1. open the terminal on the ComfyUI `comfyui-portrait-master` folder
2. digit: `git pull`
3. restart ComfyUI
**Warning: update command overwrites files modified and customized by users.**
## Available Options
- **shot**: sets the shot type
- **shot_weight**: coefficient (weight) of the shot type
- **gender**: sets the character's gender
- **androgynous**: coefficient (weight) to change the genetic appearance of the character
- **age**: the age of the subject portrayed
- **nationality_1**: sets first ethnicity
- **nationality_2**: sets second ethnicity
- **nationality_mix**: controls the mix between nationality_1 and nationality_2, according to the syntax [nationality_1: nationality_2: nationality_mix]. This syntax is not natively recognized by ComfyUI; we therefore recommend the use of [comfyui-prompt-control](https://github.com/asagi4/comfyui-prompt-control). _This feature is still being tested_
- **body_type**: set the type of the body
- **body_type_weight**: coefficient (weight) of the body type
- **model_pose**: select the pose from the list
- **eyes_color**: set the eyes color
- **eyes_shape**: set the eyes shape
- **lips_color**: set the lips color
- **lips_shape**: set the lips shape
- **makeup**: set the makeup
- **clothes**: set the clothes
- **facial_expression** / **facial_expression_weight**: apply and adjust character's expression
- **face_shape** / **face_shape_weight**: apply and adjust the face shape
- **facial_asymmetry**: coefficient (weight) to set the asymmetry of the face
- **hair_color**: set the hair color
- **hairs_style**: hairstyle selector
- **hairs_length**: hair length selector
- **disheveled**: coefficient (weight) of the disheveled effect
- **natural_skin**: coefficient (weight) for control the natural aspect of the skin
- **bare_face**: coefficient (weight) for control bare face level
- **washed_face**: coefficient (weight) for control washed face level
- **dried_face**: coefficient (weight) for control dried face level
- **skin_details**: coefficient (weight) of the skin detail
- **skin_pores**: coefficient (weight) of the skin pores
- **dimples**: coefficient (weight) for controlling facial dimples
- **freckles**: coefficient (weight) of the freckles
- **moles**: coefficient (weight) for the presence of moles on the skin
- **skin_imperfections**: coefficient (weight) to introduce skin imperfections
- **eyes_details**: coefficient (weight) for the general detail of the eyes
- **iris_details**: coefficient (weight) for the iris detail
- **circular_iris**: coefficient (weight) to increase or force the circular shape of the iris
- **circular_pupil**: coefficient (weight) to increase or force the circular shape of the pupil
- **light_type**: set global illumination
- **light_direction**: set the direction of the light. _This feature is still being tested_
- **photorealism_improvement**: experimental option to improve photorealism and the final result
- **style_1** / **style_1_weight**: apply and adjust the first style
- **style_1** / **style_1_weight**: apply and adjust the second style
Parameters with null value (-) would be not included in the prompt generated.
To enable the casual generation options, connect a random seed generator to the nodes.
The nodes generates output string.
## Model Pose Library
The _model_pose_ option allows you to use a list of default poses. You need to disable ControlNet, if in use, in this case and adjust framing with the _shot_ option.
![Model Pose Library](/screenshot/legacy/portrait-master-pose-library-2.2b.jpg)
## Practical advice
Using high values for the skin and eye detail control parameters may override the setting for the chosen shot. In this case it is advisable to reduce the parameter values for the skin and eyes, or insert in the negative prompt (closeup, close up, close-up:1.5), modifying the weight as needed.
## Notes
The effectiveness of the parameters depends on the quality of the checkpoint used.
For advanced photorealism we recommend [FormulaXL 2.0](https://civitai.com/models/129922?modelVersionId=160525).
Portrait Master is compatible with [Prompt Composer](https://github.com/florestefano1975/comfyui-prompt-composer/).
[Portrait Master 2.9.2 (legacy) documentation](/PORTRAIT_MASTER_2.9.2.md)
## Other projects
- [ComfyUI Prompt Composer](https://github.com/florestefano1975/comfyui-prompt-composer/)
- [ComfyUI HiDiffusion](https://github.com/florestefano1975/ComfyUI-HiDiffusion/)
", Assign "at most 3 tags" to the expected json: {"id":"6104","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"