skills/ads-photoshoot/SKILL.md
Product photography enhancement for ad creatives using AI image generation. Takes a product image and generates 5 professional photography styles for ad use: Studio, Floating, Ingredient, In Use, and Lifestyle. Requires GOOGLE_API_KEY or configured ADS_IMAGE_PROVIDER. Triggers on: "product photo", "product photography", "photoshoot", "enhance product image", "product shoot", "product photos for ads", "generate product photos", "studio shot", "lifestyle photo".
npx skillsauth add tapanshah/ads-audit-claude ads-photoshootInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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).
| 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 |
export GOOGLE_API_KEY="your-key"
# See /ads generate for alternative providers
Ask (combine into one message):
"Provide a product image path (e.g. ./product.jpg), a URL, or describe your product"
Check for brand-profile.json in the current directory.
If found, extract for style injection:
colors.primary → inject into backgrounds and accent elementsaesthetic.mood_keywords → inject as atmosphere descriptorstarget_audience → use for Lifestyle and In Use contextimagery.forbidden → exclude from all promptsIf not found, proceed with standard style templates.
Verify the required environment variable is set before generating:
python3 -c "
import os, sys
provider = os.environ.get('ADS_IMAGE_PROVIDER', 'gemini')
keys = {'gemini': 'GOOGLE_API_KEY', 'openai': 'OPENAI_API_KEY',
'stability': 'STABILITY_API_KEY', 'replicate': 'REPLICATE_API_TOKEN'}
env_var = keys.get(provider, 'GOOGLE_API_KEY')
if not os.environ.get(env_var):
print(f'Error: {env_var} not set (provider: {provider})', file=sys.stderr)
sys.exit(1)
print(f'OK: {env_var} is set')
"
If this exits with code 1, show setup instructions from
~/.claude/skills/ads/references/image-providers.md and stop.
For each selected style, build the prompt using the template + product description + brand DNA.
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
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
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)
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
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
For each style × size combination:
python ~/.claude/skills/ads/scripts/generate_image.py \
"[constructed prompt]" \
--size [WxH] \
--output ./product-photos/[style]/[product-slug]-[style]-[WxH].png \
--json
Track results. If a generation fails, retry once with a simplified prompt.
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
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/ (1 size — square only)
In Use: ./product-photos/in-use/ (2 sizes)
Lifestyle: ./product-photos/lifestyle/ (2 sizes)
Estimated cost: [N] images × $0.067 = ~$[total]
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.
Before generating, show:
| 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 |
~/.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 constraintsdevelopment
YouTube Ads specific analysis covering campaign types, creative quality, audience targeting, and measurement. Evaluates video ad performance across skippable, non-skippable, bumper, Shorts, and Demand Gen formats. Use when user says "YouTube Ads", "video ads", "pre-roll", "bumper ads", "YouTube campaign", or "Shorts ads".
testing
TikTok Ads deep analysis covering creative quality, tracking, bidding, campaign structure, and TikTok Shop. Evaluates 25 checks with emphasis on creative-first strategy, safe zone compliance, and Smart+ campaigns. Use when user says "TikTok Ads", "TikTok marketing", "TikTok Shop", "Spark Ads", "Smart+", or "TikTok campaign".
testing
Strategic paid advertising planning with industry-specific templates. Covers platform selection, campaign architecture, budget planning, creative strategy, and phased implementation roadmap. Use when user says "ad plan", "ad strategy", "campaign planning", "media plan", "PPC strategy", or "advertising plan".
development
Microsoft/Bing Ads deep analysis covering search, Performance Max, Audience Network, and Copilot integration. Evaluates 20 checks with focus on Google import validation, unique Microsoft features, and cost advantage assessment. Use when user says "Microsoft Ads", "Bing Ads", "Bing PPC", "Copilot ads", or "Microsoft campaign".