agentsclimarketplace

Ads photoshoot

Skill kennyolofsson23-netizen/claude-code-config/skills/claude-ads/skills/ads-photoshoot

The most comprehensive Claude Code setup — 29 skills, 9 plugins, 13 hooks, 8 agents, 8 commands. Self-documenting, self-improving, CLI-first. Includes self-interview prompt for personalization.

Install
npx -y skills add kennyolofsson23-netizen/claude-code-config --skill ads-photoshoot

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

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".

SKILL.md

8.0 KB, as published. Nobody here has run it

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

CommandWhat it does
/ads photoshootInteractive: ask for product + styles
/ads photoshoot --styles studio floatingGenerate only selected styles
/ads photoshoot --product shoe.jpgStart with a product image file
/ads photoshoot --all-platformsGenerate all 5 sizes per style

Environment Setup

export GOOGLE_API_KEY="your-key"
# See /ads generate for alternative providers

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: Check API Key

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.

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)

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

Step 5: Generate Images

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.

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
  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.

Cost Estimate

Before generating, show:

  • Number of styles selected × 2 sizes = total images
  • "$[N] images × $0.067 = ~$[total] (Gemini default)"
  • If >$0.50, ask for confirmation

Platform Recommendations

StyleBest PlatformsRationale
StudioMeta Feed, LinkedIn, Google PMaxUniversal, clean, platform-safe
FloatingMeta Reels, TikTok, StoriesHigh visual impact on vertical placements
IngredientMeta Feed, PinterestWorks best as square; tells product story
In UseTikTok, Meta Reels, StoriesAuthentic, native-feeling content
LifestyleAll platformsAspirational, broad audience appeal

Reference Files

  • ~/.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

Gives 0 of the 12 instructions most images graphics skills give

Counted across 371 of the 372 authors here whose files we hold, read 2026-08-06

  • create a complete brand world in one imagein 19 of 371, across 5 files
  • infer the brand strategy before generatingin 19 of 371, across 5 files
  • use a clean presentation gridin 19 of 371, across 5 files
  • confirm connection status is activein 19 of 371, across 4 files
  • base the visual system on meaningin 17 of 371, across 3 files
  • use very little textin 17 of 371, across 3 files
  • make every panel feel connectedin 17 of 371, across 3 files
  • call RUBE_SEARCH_TOOLS firstin 17 of 371, across 3 files
  • convert dash-format node IDs to colon formatin 17 of 371, across 5 files
  • match reference quality and rhythm if providedin 16 of 371, across 2 files
  • narrow scope or reduce depth to avoid oversized payloadsin 16 of 371, across 4 files
  • generate a simple and memorable logoin 15 of 371, across 1 file

Said here and by no other author read

  • collect product image and description
  • generate images for each size combination
  • ask for confirmation if cost exceeds threshold
  • provide platform recommendations in summary

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.