ComfyUI_RandomPose
Compose seeded pose prompts from a curated pose and hand gesture library.
Random Pose - Custom nodes for ComfyUI
Generates a body-position description for image prompts from a curated library of 1,590 poses in 124 categories, plus 64 hand gestures. A separate gesture library can replace the selected pose's arm and hand description.
Purpose
This node supplies a specific pose without adding identity, clothing, lighting, or scene details. Use the prose output for descriptive prompts or the shorter tag output for tag-oriented models. The same seed and settings reproduce the same result.
Nodes
The node appears in the Add Node menu under Random Pose:
- Random Pose - selects a random, listed, or fixed pose, with an optional hand gesture.
Example output:
Warrior II (Virabhadrasana II). Standing in a wide lunge, chest and hips facing the viewer. Front knee bent at ninety degrees over the ankle, front toes pointing sideways; back leg straight, back foot flat and parallel to the rear edge. Spine neutral; torso upright, centered between the legs. Arms extended straight out to the sides at shoulder height, palms down, in one line. Head turned to look along the front arm. Weight evenly split between the feet.
Installation
ComfyUI Manager (recommended)
In ComfyUI, open Manager > Custom Nodes Manager, search for ComfyUI_RandomPose, click Install, then restart ComfyUI.
Manual install
- Copy the
ComfyUI_RandomPosefolder into yourComfyUI/custom_nodes/directory. - Restart ComfyUI.
Controls
- seed - use the same value with the same settings to reproduce a pose.
- category - choose
random, a category ID, orgroup:<group>whenpose_modeisrandom. Random selection excludesgestures_rudeunlessallow_rudeis on. You can selectgestures_rudeexplicitly while it is off. - pose_mode -
randomdraws fromcategory;allow_listdraws from the listed pose IDs;fixeduses one pose ID. The latter two ignorecategory. - pose_allow_list - comma-separated pose IDs for
allow_list. Blank means all poses. Unknown IDs raise an error. - pose_fixed - one pose ID for
fixed. The dropdown shows poses from the selected category when it is a single category, or all poses forrandomand groups. The selected ID remains saved when hidden. - include_name - include the pose name at the start of both text outputs. On by default.
- gesture_mode - choose
off,random,allow_list, orfixed. Random and allow-list modes draw only from gestures that fit the pose's framing; an empty pool produces no gesture. - gesture_allow_list - comma-separated gesture IDs for
allow_list. Blank means all allowed gestures. Unknown IDs raise an error. - gesture_fixed - one gesture ID for
fixed. Fixed mode applies it regardless of framing. Every applied gesture replaces the pose'sarms_handstext. - allow_rude - permit rude gestures and include
gestures_rudeduring random category selection. Off by default. An explicitly selected rude gesture is skipped while off.
The node skips gestures for poses with props and for gestures_* or hands categories. Random and allow-list selection use friendly and neutral gestures by default; rude gestures require allow_rude in every mode. The allow-list and fixed widgets appear only when their mode uses them; hidden values remain saved.
Output pins
pose_text- the pose name and body description in silhouette-first prose order.pose_compact- the lowercased name, orientation, arms and hands, and legs and feet, for tag-oriented prompts.framing- the raw framing value, such asfull_bodyorupper_body.props- comma-joined prop names, or an empty string.gesture- the gesture text applied to both text outputs, or an empty string when off or skipped.seed- the 64-bit seed used to produce the output.
Data files
Pose categories live in data/poses/; gestures live in data/gestures.json. The node loads and validates the JSON once per process. Restart ComfyUI after editing the data.
The library has 124 categories, 1,590 poses, and 64 gestures. Gesture tones: 16 friendly, 40 neutral, 8 rude. Each category below shows its ID and pose count. Ungrouped categories have no group field.
Ungrouped
affection(15),arms_hands(10),ballet(17),ballroom(17),bjj(17)bodybuilding_posing(13),boxing(17),business_headshot(13),casual_everyday(7),cheer(16)contemporary_dance(10),dynamic_dramatic(8),everyday_actions(15),fashion_editorial(16),gestures_friendly(12)gestures_rude(12),glamour_pinup(17),gymnastics(19),hands(10),held_everyday_objects(8)held_weapons(8),hip_hop(11),influencer(12),jazz_dance(10),judo(13)jumping_crouching(16),karate(16),kneeling(9),latin_dance(9),legs_feet(12)locomotion(17),lying_reclining(13),martial_arts(15),martial_arts_weapons(14),military(20)mugshot(12),pilates(16),portrait_upper_body(10),prone(7),resting_relaxed(9)selfie(11),sitting(21),standing(11),stealth_hiding(9),strength_training(31)stretching(15),studio_photoshoot(14),swimsuit_beach(12),warmup(17),wrestling(16)yoga(31)
Activities
art_craft(8),cooking(13),eating(14),photography(8)
Cinematic
cinematic_action(10),cinematic_comedy(10),cinematic_drama(10),cinematic_horror(10)cinematic_noir(10),cinematic_romance(10),cinematic_superhero(12),cinematic_western(10)creature_performance(13),fantasy(14),historical(17),scifi_space(15)
Everyday
household_chores(18)
Mood
mood_angry(11),mood_anxious(8),mood_bored(8),mood_calm(10),mood_confident(8)mood_embarrassed(8),mood_excited(8),mood_frustrated(8),mood_happy(8),mood_lonely(8)mood_proud(8),mood_relaxed(10),mood_sad(8),mood_scared(8),mood_shy(8)mood_surprised(8),mood_thoughtful(8),mood_tired(8)
Music
music_concert(12),music_instruments(14),music_singing(12)
Performance
circus_acrobatics(20),robotic(12),theater(14)
Sports
american_football(14),archery(12),athletics(9),baseball_softball(17),basketball(13)climbing(26),cricket(8),cycling(13),diving(12),figure_skating(14)fishing_hunting(16),golf(12),horse_riding(12),ice_hockey(13),motorcycle(12)parkour(15),rugby(13),skateboarding(14),skiing(11),snowboarding(8)soccer(14),surfing(11),swimming(12),tennis(15),volleyball(11)water_sports(20)
Vehicles
aviation(13),driving(14)
Work
gardening_outdoor(20),medical(17),occupations(14),trades(22)
Testing
Unit tests cover pose selection, composition, gestures, and data validation without a ComfyUI install:
PYTHONPATH=. python -m pytest -q test_random_pose.py
node test_random_pose_node.cjs
Requirements
- ComfyUI with either the V3
comfy_api.v0_0_2symbols or the legacy V1 node API - Python 3.10+
- No additional pip packages required to use the node
Support
If you find this useful, please consider starring the repo. Stars help other people discover these nodes.