Nodes/ComfyUI-Artha-Nodes/πŸ”± Artha Gemini Body
ComfyUI Node

πŸ”± Artha Gemini Body

Describe a character's body without fumbling for words

By CyrostarΒ·Created 10 months agoΒ·Updated 8 months agoΒ· 0
πŸ”± Artha Gemini Body
  • image
  • body
β—„body_typeNONEβ–Ί
β—„body_heightNONEβ–Ί
β—„body_weightNONEβ–Ί
β—„body_buildNONEβ–Ί
β—„body_frameNONEβ–Ί
β—„body_shoulderNONEβ–Ί
β—„body_chestNONEβ–Ί
β—„body_breastsNONEβ–Ί
β—„body_torsoNONEβ–Ί
β—„body_waistNONEβ–Ί
β—„body_hipNONEβ–Ί
β—„body_legsNONEβ–Ί
β—„body_skin_toneNONEβ–Ί
β—„body_postureNONEβ–Ί
β—„randomizefalseβ–Ί
β—„use_imagefalseβ–Ί
β—„api_keyβ–Ί
β—„modelgemini-2.5-flashβ–Ί
β—„max_tokens5000β–Ί
β—„temperature0.7β–Ί

Artha Gemini Body is a character-description builder that focuses on one slice of a person: their physical structure. It hands back a typed ARTHABODY object that feeds into Artha Gemini Portrait, which is the node that actually turns a stack of attributes into a flowing, grammatically correct character prompt for your image model. On its own this node is just a very opinionated checklist - wired up, it's how you get "tall, athletic build, broad shoulders, medium skin tone, upright confident posture" without once staring at a blank prompt box.

It belongs to the Artha pack's character pipeline: Artha Gemini Face, Body, Form, Cloth, and Makeup each produce a typed attribute object, and Portrait merges them all into one description. Body is the one that covers height, weight, build, frame, shoulders, chest, torso, waist, hips, legs, skin tone, and posture.

What you actually set

Fourteen combo boxes, every one defaulting to NONE (skip it):

body_type, body_height, body_weight, body_build, body_frame, body_shoulder, body_chest, body_breasts, body_torso, body_waist, body_hip, body_legs, body_skin_tone, body_posture.

Each dropdown is populated from a profile.json that ships in the pack - so body_height gives you presets from VERY_SHORT up to EXTREMELY TALL, and body_skin_tone gives you named tones rather than RGB hexes. You pick values, or you don't: leave everything NONE and the node hands Portrait an effectively empty body block, which Portrait simply skips.

Two toggles sit at the bottom of the node:

  • randomize - picks a random preset per category. Great for generating character batches or for when you want variety without curating every box.
  • use_image - the interesting one. Connect an image and the node asks Gemini to describe the body structure from the photo, returning that description as the body value. This is the only mode that needs an API key and a network call; the pure picker mode is local Python.

How it fits

The body output (type ARTHABODY) goes into Artha Gemini Portrait's body input, alongside face, form, cloth, and makeup. Portrait then merges everything into prose. One honest caveat: since Portrait's system prompt reads the body attributes verbatim into a property list, the dict keys get humanized (BODY_SHOULDER becomes "body shoulder") - so think of your dropdown choices as describing the category, and let the value carry the specifics.

The trap to watch

If you set use_image without an image connected, the node just falls through to the picker path - fine. If you do use an image and the body output comes back empty, it's almost always the API: these nodes swallow errors and print them to the ComfyUI console, then return an empty string. Check the console, and check that your key is in place. The key resolution order is: the node's api_key field β†’ api.json in the pack folder β†’ the GEMINI_API_KEY environment variable. Put it in api.json and leave the field blank, so you don't end up with a plaintext key baked into a workflow you'll share.

Install

One install gets you the whole πŸ”± pack, Body included:

cd ComfyUI/custom_nodes
git clone https://github.com/Cyrostar/ComfyUI-Artha-Nodes
cd ComfyUI-Artha-Nodes
pip install -r requirements.txt

Then restart ComfyUI. Or use ComfyUI Manager and search "Artha." The pack pulls in google-genai plus some heavier companions like opencv-python and scikit-learn, so give the pip step a moment. The picker mode needs no key at all; only use_image mode calls Google.

CategoryArtha/LLM/Gemini

Inputs (21)

NameTypeDefaultDescription
body_typeCOMBONONE9 options: NONE, ECTOMORPH, MESOMORPH, ENDOMORPH, PEAR, APPLE, +3
body_heightCOMBONONE9 options: NONE, VERY_SHORT, SHORT, BELOW_AVERAGE, AVERAGE, ABOVE_AVERAGE, +3
body_weightCOMBONONE6 options: NONE, SKINNY, THIN, AVARAGE, OVERWEIGHT, OBESE
body_buildCOMBONONE9 options: NONE, SLIM, ATHLETIC, MUSCULAR, AVERAGE, CURVY, +3
body_frameCOMBONONE4 options: NONE, SMALL BONED, MEDIUM BONED, LARGE BONED
body_shoulderCOMBONONE5 options: NONE, REGULAR, BROAD, NARROW, SLOPING
body_chestCOMBONONE5 options: NONE, BROAD CHEST, NARROW CHEST, BARREL CHEST, FLAT CHEST
body_breastsCOMBONONE18 options: NONE, ROUND, TEARDROP, BELL-SHAPED, SIDE SET, CLOSE SET, +12
body_torsoCOMBONONE8 options: NONE, SHORT TORSO, LONG TORSO, BALANCED TORSO, NARROW TORSO, WIDE TORSO, +2
body_waistCOMBONONE8 options: NONE, DEFINED WAIST, STRAIGHT WAIST, HIGH WAIST, LOW WAIST, TAPERED WAIST, +2
body_hipCOMBONONE8 options: NONE, STRAIGHT HIPS, SQUARE HIPS, TRIANGLE HIPS, HEART HIPS, ROUND HIPS, +2
body_legsCOMBONONE9 options: NONE, LONG LEGS, SHORT LEGS, STRAIGHT LEGS, CURVY LEGS, BOW LEGS, +3
body_skin_toneCOMBONONE10 options: NONE, VERY_FAIR, FAIR, LIGHT, MEDIUM, OLIVE, +4
body_postureCOMBONONE6 options: NONE, UPRIGHT, SLOUCHED, CONFIDENT, RELAXED, RIGID
randomizeBOOLEANfalseβ€”
use_imageBOOLEANfalseβ€”
api_keySTRINGAPI key will be visible in plain text. Consider adding your api to the api.json located inside this custom node folder.
modelCOMBOgemini-2.5-flash5 options: gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.0-flash, gemini-2.0-flash-lite
max_tokensINT50001–8192For Gemini models, a token is equivalent to about 4 characters. 100 tokens is equal to about 60–80 English words.
temperatureFLOAT0.70–2A temperature of 0 means only the most likely tokens are selected. Higher values increase randomness.
imageoptIMAGEβ€”

Outputs (1)

NameTypeDescription
bodyARTHABODYβ€”