# ============================================================================= # Component Definitions for Agentic Analysis # ============================================================================= # Each component has prompts for different tiers (advanced/standard/basic) # Advanced tier requests JSON output; Basic tier requests plain text # ============================================================================= # FRAMING & COMPOSITION # ============================================================================= [framing] name = "Framing & Composition" [framing.advanced] prompt = """ Analyze the framing and composition in detail: 1. SHOT TYPE: ECU (extreme close-up) / BCU (big close-up) / CU (close-up) / MCU (medium close-up) / MS (medium shot) / MFS (medium full shot) / FS (full shot) / LS (long shot) 2. BODY VISIBILITY (top to bottom): - Head: fully visible / partially cropped / not visible - Shoulders: fully visible / partially cropped / not visible - Chest/torso: fully visible / partially cropped / not visible - Waist/hips: fully visible / partially cropped / not visible - Thighs: fully visible / partially cropped / not visible - Knees: fully visible / partially cropped / not visible - Lower legs: fully visible / partially cropped / not visible - Feet: fully visible / partially cropped / not visible - Where does the frame CUT OFF the body? (e.g., "frame cuts at mid-thigh", "cropped at chest") 3. DISTANCE/SCALE: How much of the frame does the subject fill? (fills frame / medium distance / far from camera) 4. RULE OF THIRDS POSITIONING: - Subject horizontal position: left third / center / right third - Subject vertical position: upper third / center / lower third - Face/eyes position relative to rule of thirds intersections 5. CAMERA ANGLE: Eye level / slightly above / high angle / slightly below / low angle 6. DEPTH OF FIELD: Shallow (blurry background) / medium / deep (sharp background) 7. COLOR MODE: Color or black & white Output JSON: { "shot_type": "", "body_visible": { "head": "", "shoulders": "", "chest": "", "waist": "", "thighs": "", "knees": "", "lower_legs": "", "feet": "" }, "frame_cutoff": "", "subject_distance": "", "rule_of_thirds": { "horizontal": "", "vertical": "", "face_position": "" }, "camera_angle": "", "depth_of_field": "", "color_mode": "", "prompt_description": "" } """ [framing.standard] prompt = """ Describe the framing and composition: SHOT TYPE: What type of shot? (close-up, medium, full shot, etc.) BODY VISIBILITY (from top to bottom): - Which body parts are VISIBLE in frame? (head, shoulders, chest, waist, hips, thighs, knees, legs, feet) - Which body parts are CROPPED/CUT OFF? - Where exactly does the frame cut the body? POSITIONING: - Rule of thirds: Is the subject positioned left, center, or right third? - Is the subject in upper, center, or lower third of frame? - How close/far is the subject? Does subject fill the frame or is there space around them? CAMERA: Angle (eye level, above, below), depth of field (blurry or sharp background) """ [framing.basic] prompt = "Describe the shot type, which body parts are visible vs cropped out of frame, where the subject is positioned (left/center/right, upper/center/lower), and whether the background is blurry or sharp." # ============================================================================= # ETHNICITY & DEMOGRAPHICS # ============================================================================= [ethnicity] name = "Ethnicity & Demographics" [ethnicity.advanced] prompt = """ Analyze the subject's demographics: 1. ETHNICITY: Be specific (East Asian, South Asian, European, etc.) 2. SKIN TONE: Base tone + undertone (warm/cool/olive) 3. AGE RANGE: young adult, adult, middle-aged, etc. 4. GENDER: female/male Output JSON: {"ethnicity": "", "skin_tone_base": "", "skin_tone_undertone": "", "age_range": "", "gender": "", "prompt_description": ""} """ [ethnicity.standard] prompt = """ Describe the subject: - Ethnicity or heritage - Skin tone - Approximate age - Gender """ [ethnicity.basic] prompt = "Describe the person: their ethnicity, skin tone, approximate age, and gender." # ============================================================================= # HAIR ANALYSIS # ============================================================================= [hair] name = "Hair Analysis" [hair.advanced] prompt = """ Analyze the hair (ARRANGEMENT FIRST): 1. ARRANGEMENT: Updo/Ponytail/Braided/Half-up/Loose/Short 2. COLOR: Base color + highlights 3. TEXTURE: Straight/wavy/curly 4. LENGTH: Short/shoulder/mid-back/long Output JSON: {"arrangement": "