Extensions/ComfyUI_RandomPose
ComfyUI Extension

ComfyUI_RandomPose

Compose seeded pose prompts from a curated pose and hand gesture library.

By bradsec·Created 2 days ago·Updated 2 days ago· 0
bradsec/ComfyUI_RandomPose
Nodes—
On cloudLocal install
Stars0
Updated2 days ago
Readme

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

  1. Copy the ComfyUI_RandomPose folder into your ComfyUI/custom_nodes/ directory.
  2. Restart ComfyUI.

Controls

  • seed - use the same value with the same settings to reproduce a pose.
  • category - choose random, a category ID, or group:<group> when pose_mode is random. Random selection excludes gestures_rude unless allow_rude is on. You can select gestures_rude explicitly while it is off.
  • pose_mode - random draws from category; allow_list draws from the listed pose IDs; fixed uses one pose ID. The latter two ignore category.
  • 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 for random and 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, or fixed. 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's arms_hands text.
  • allow_rude - permit rude gestures and include gestures_rude during 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 as full_body or upper_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_2 symbols 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.