ads-photoshoot · diff
git:20260517.d9709b3 to git:20260711.c346837
15 added, 215 removed. Audit A to A.
---
name: ads-photoshoot
- description: "Product photography enhancement for ad creatives using banana-claude image generation. Takes a product image and generates 5 professional photography styles for ad use: Studio, Floating, Ingredient, In Use, and Lifestyle. Requires banana-claude (v1.4.1+) with nanobanana-mcp. Triggers on: product photo, product photography, photoshoot, enhance product image, product shoot, product photos for ads, generate product photos, studio shot, lifestyle photo."
- user-invokable: false
- tested_date: 2026-05-17
- tested_with: claude-code v2.x
+ description: "Generate rights-cleared paid-ad product photography variants from an authorized source image and validated brand profile. Triggers on: product photo, product photography, virtual photoshoot, photoshoot, enhance product image, studio shot, lifestyle shot, lifestyle product image, floating product image, ingredient shot."
---
- # Ads Photoshoot: AI Product Photography
-
- Transforms a product image or description into professional ad-ready photography
- in 5 distinct visual styles. Each style generates at two sizes: 1:1 (Meta/LinkedIn)
- and 9:16 (TikTok/Reels/Stories).
-
- ## Quick Reference
-
- | Command | What it does |
- |---------|-------------|
- | `/ads photoshoot` | Interactive: ask for product + styles |
- | `/ads photoshoot --styles studio floating` | Generate only selected styles |
- | `/ads photoshoot --product shoe.jpg` | Start with a product image file |
- | `/ads photoshoot --all-platforms` | Generate all 5 sizes per style |
-
- ## Environment Setup
-
- Requires banana-claude (v1.4.1+) with nanobanana-mcp configured.
- Run `/banana setup` to configure API key and MCP.
-
- ## Process
-
- ### Step 1: Collect Product Information
-
- Ask (combine into one message):
- 1. **Product image**: Path to product image file (local) OR product URL OR text description
- > "Provide a product image path (e.g. ./product.jpg), a URL, or describe your product"
- 2. **Product description**: What is it? Key features to highlight? (helps prompt quality)
- 3. **Styles to generate**: Which of the 5 styles? (default: all 5)
- - Studio, Floating, Ingredient, In Use, Lifestyle
- 4. **Target platforms**: Which platforms will these run on?
- - Determines output sizes (default: Meta + TikTok → 1:1 + 9:16)
-
- ### Step 2: Load Brand Profile (Optional)
-
- Check for `brand-profile.json` in the current directory.
-
- If found, extract for style injection:
- - `colors.primary` → inject into backgrounds and accent elements
- - `aesthetic.mood_keywords` → inject as atmosphere descriptors
- - `target_audience` → use for Lifestyle and In Use context
- - `imagery.forbidden` → exclude from all prompts
-
- If not found, proceed with standard style templates.
-
- ### Step 3: Verify banana-claude
-
- Verify banana-claude is installed (run `/banana setup` to check). If not installed,
- display setup instructions and exit.
-
- ### Step 4: Construct Prompts per Style
-
- For each selected style, build the prompt using the template + product description + brand DNA.
-
- #### Style 1: Studio
- Clean, e-commerce style product shot.
-
- **Base template:**
- ```
- "[product description], professional product photography, clean white seamless
- background, even studio lighting, soft drop shadow, high detail product focus,
- ecommerce style, [brand.colors.primary] subtle accent reflections if applicable,
- top-down or 3/4 angle, no distractions, catalog quality"
- ```
-
- **Composition:** Centered, slight 3/4 angle or flat lay.
- **Output sizes:** 1080×1080, 1080×1920
-
- #### Style 2: Floating
- Dramatic levitation effect.
-
- **Base template:**
- ```
- "[product description] floating in mid-air, dramatic floating product shot,
- [brand.colors.primary or brand.aesthetic.mood_keywords[0]] gradient background,
- atmospheric shadow below product, levitation effect, product defying gravity,
- clean modern aesthetic, high contrast, striking visual"
- ```
-
- **Composition:** Product centered vertically, ample space above and below.
- **Output sizes:** 1080×1080, 1080×1920
-
- #### Style 3: Ingredient
- Flat lay with components.
-
- **Base template:**
- ```
- "[product description] centered flat lay, surrounded by its key ingredients
- or materials artfully arranged, top-down overhead view, clean light background,
- natural texture surface, product as hero element, ingredients scattered with
- intentional negative space, editorial food photography style"
- ```
-
- **Composition:** Top-down, product in center, ingredients fanning out.
- **Output sizes:** 1080×1080 (optimal for this style). Also generate 9:16 vertical for TikTok/Reels/Stories placements.
-
- #### Style 4: In Use
- Authentic usage context.
-
- **Base template:**
- ```
- "person's hands using [product description] in natural context, lifestyle
- photography, focus on product-hand interaction, shallow depth of field,
- warm natural window light, authentic not staged, [brand.target_audience.profession]
- implied context, [brand.aesthetic.mood_keywords] atmosphere"
- ```
-
- **Composition:** Hands prominent, product clearly identifiable, background soft-focus.
- **Note:** Hands only; no full face (avoids model release complications).
- **Output sizes:** 1080×1080, 1080×1920
-
- #### Style 5: Lifestyle
- Aspirational full-context shot.
-
- **Base template:**
- ```
- "[product description] in aspirational lifestyle scene, [brand.target_audience.age_range]
- demographic implied environment, [brand.target_audience.profession] context,
- [brand.aesthetic.mood_keywords] atmosphere, golden hour or clean natural lighting,
- editorial photography style, [brand.aesthetic.negative_space] composition,
- product clearly visible and prominent"
- ```
-
- **Composition:** Environmental context, product as hero element within the scene.
- **Output sizes:** 1080×1080, 1080×1920
-
- ### Iterative Refinement
-
- For iterative refinement: if initial generation doesn't match brand expectations, adjust the prompt by specifying: lighting direction, color temperature, background texture, or product angle before regenerating.
-
- ### Step 5: Generate Images
-
- **Domain mode selection per style:**
- - Use banana **Product** mode for Studio, Floating, and Ingredient styles
- - Use banana **Editorial** mode for In Use and Lifestyle styles
- - Set resolution to 2K (default) for all generations
-
- **Aspect ratio setup:** Use banana MCP `set_aspect_ratio` before each generation:
- - For 1080x1080: set ratio to 1:1
- - For 1080x1920: set ratio to 9:16
-
- For each style x size combination, use `/banana generate` with the constructed
- prompt, selected domain mode, and correct aspect ratio. Save output to
- `./product-photos/[style]/[product-slug]-[style]-[WxH].png`.
-
- Track results. If a generation fails, retry once with a simplified prompt.
-
- ### Step 6: Organize and Report
-
- **Output directory structure:**
- ```
- ./product-photos/
- studio/
- product-studio-1080x1080.png
- product-studio-1080x1920.png
- floating/
- product-floating-1080x1080.png
- product-floating-1080x1920.png
- ingredient/
- product-ingredient-1080x1080.png
- product-ingredient-1080x1920.png
- in-use/
- product-in-use-1080x1080.png
- product-in-use-1080x1920.png
- lifestyle/
- product-lifestyle-1080x1080.png
- product-lifestyle-1080x1920.png
- ```
-
- **Summary:**
- ```
- ✓ Product photos generated: [N] images
-
- Studio: ./product-photos/studio/ (2 sizes)
- Floating: ./product-photos/floating/ (2 sizes)
- Ingredient: ./product-photos/ingredient/ (2 sizes)
- In Use: ./product-photos/in-use/ (2 sizes)
- Lifestyle: ./product-photos/lifestyle/ (2 sizes)
-
- Cost: see ~/.banana/costs.json for total spend
-
- Best for:
- • Meta Feed → Studio (4:5) or Lifestyle (4:5)
- • TikTok/Reels → Floating (9:16) or In Use (9:16)
- • LinkedIn → Studio (1:1) or Lifestyle (1:1)
- • Google PMax → Studio (1:1); crop to 1.91:1 after
-
- Run `/ads generate` to use these in a full campaign.
- ```
-
- ## Cost Estimate
-
- Before generating, show:
- - Number of styles selected x 2 sizes = total images
- - Estimated cost based on banana pricing tiers
- - If >$0.50, ask for confirmation
-
- ## Platform Recommendations
-
- | Style | Best Platforms | Rationale |
- |-------|---------------|-----------|
- | Studio | Meta Feed, LinkedIn, Google PMax | Universal, clean, platform-safe |
- | Floating | Meta Reels, TikTok, Stories | High visual impact on vertical placements |
- | Ingredient | Meta Feed, Pinterest | Works best as square; tells product story |
- | In Use | TikTok, Meta Reels, Stories | Authentic, native-feeling content |
- | Lifestyle | All platforms | Aspirational, broad audience appeal |
+ # Product Photography Variants
- ## Reference Files
+ 1. Confirm rights to the product image and collect the validated brand profile,
+ product facts, intended placements, provider capability, cost ceiling, and output
+ root.
+ 2. Preserve product geometry, packaging, logos, labels, color, and material unless
+ the operator explicitly approves a change.
+ 3. Define distinct production hypotheses such as studio, contextual use, ingredient
+ story, scale/detail, or lifestyle; do not imply unsupported product outcomes.
+ 4. Generate approved aspect ratios and record source hashes, prompt version,
+ provider/model, cost, output hashes, and dimensions.
+ 5. Validate product fidelity, visual defects, safe zones, accessibility, and policy.
+ 6. Store assets and manifest atomically inside the run directory.
- - `~/.claude/skills/ads/references/image-providers.md`: API setup and pricing
- - `~/.claude/skills/ads/references/brand-dna-template.md`: Brand injection schema
- - `~/.claude/skills/ads/references/meta-creative-specs.md`: Safe zone for 9:16
- - `~/.claude/skills/ads/references/tiktok-creative-specs.md`: Safe zone constraints
+ Human review is mandatory. Do not create deceptive before/after evidence, people or
+ endorsements without authorization, or regulated claims from visual implication.