Learn-skills.dev ads-generate
git clone https://github.com/NeverSight/learn-skills.dev
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/agricidaniel/claude-ads/ads-generate" ~/.claude/skills/neversight-learn-skills-dev-ads-generate && rm -rf "$T"
data/skills-md/agricidaniel/claude-ads/ads-generate/SKILL.mdAds Generate — AI Ad Image Generator
Generates platform-sized ad creative images from your campaign brief and brand profile. Uses Gemini by default (
gemini-2.5-flash-image, stable GA).
Quick Reference
| Command | What it does |
|---|---|
| Generate all images from campaign-brief.md |
| Generate Meta assets only |
| Standalone generation without brief |
| Use Gemini Batch API (50% cost, 24h turnaround) |
Environment Setup
Required before running:
# Gemini (default — recommended) export GOOGLE_API_KEY="your-key" # Get a key: console.cloud.google.com/apis/credentials # Switch to a different provider (optional) export ADS_IMAGE_PROVIDER="openai" export OPENAI_API_KEY="your-key" export ADS_IMAGE_PROVIDER="stability" export STABILITY_API_KEY="your-key" export ADS_IMAGE_PROVIDER="replicate" export REPLICATE_API_TOKEN="your-token"
If the API key is not set, this skill will display the setup instructions above and stop. It will never fail silently.
Process
Step 1: Check API Key
Verify the required environment variable is set before proceeding:
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, display the Environment Setup section above and stop.
Step 2: Locate Source Files
Check for:
→ primary source for prompts and dimensionscampaign-brief.md
→ brand color/style injection (optional but recommended)brand-profile.json
If campaign-brief.md is found: Use
## Image Generation Briefs section as the
generation job list.
If no campaign-brief.md: Enter standalone mode (Step 2b).
Step 2b: Standalone Mode
Ask the user:
- Generation prompt (what should the image show?)
- Target platform (to set correct dimensions)
- Output filename (optional)
Then skip to Step 5.
Step 3: Read Provider Config
Load
~/.claude/skills/ads/references/image-providers.md to confirm:
- Active provider pricing (show user the cost estimate)
- Rate limits for current tier
- Batch API availability
Step 4: Read Platform Specs
For each platform in the campaign brief, load the relevant spec reference:
~/.claude/skills/ads/references/meta-creative-specs.md~/.claude/skills/ads/references/google-creative-specs.md~/.claude/skills/ads/references/tiktok-creative-specs.md~/.claude/skills/ads/references/linkedin-creative-specs.md~/.claude/skills/ads/references/youtube-creative-specs.md~/.claude/skills/ads/references/microsoft-creative-specs.md
Step 5: Spawn Visual Designer Agent
Spawn the
visual-designer agent using the Task tool with context: fork.
The agent will:
- Parse the image generation briefs from campaign-brief.md
- Inject brand colors and mood from brand-profile.json
- Call generate_image.py for each asset
- Save to
directory structure./ad-assets/[platform]/[concept]/ - Write
generation-manifest.json
Step 6: Validate with Format Adapter
After the visual-designer completes, spawn the
format-adapter agent
with context: fork to validate dimensions and report missing formats.
Step 7: Report Results
Present a summary:
Generation complete: Generated assets: ✓ ./ad-assets/meta/concept-1/feed-1080x1350.png ✓ ./ad-assets/tiktok/concept-1/vertical-1080x1920.png ✗ ./ad-assets/google/concept-1/landscape-1200x628.png [error reason] Format validation: See format-report.md Cost estimate: ~$[N] at $0.067/image (Gemini 1K) Next steps: 1. Review assets in ./ad-assets/ 2. Check format-report.md for any missing formats 3. Upload to your ad platform managers
Cost Transparency
Before generating, estimate and show the cost:
- Count the number of image briefs in campaign-brief.md
- Multiply by $0.067 (Gemini default 1K)
- Show: "Estimated cost: [N] images × $0.067 = ~$[total]"
- If >$1.00, ask for confirmation before proceeding
Standalone Mode (No campaign-brief.md)
When running without a campaign brief:
Platform target → dimensions used: meta-feed → 1080×1350 (4:5) meta-reels → 1080×1920 (9:16) tiktok → 1080×1920 (9:16) google-pmax → 1200×628 (1.91:1) linkedin → 1080×1080 (1:1) youtube → 1280×720 (16:9) youtube-short → 1080×1920 (9:16)
Calls generate_image.py directly:
python ~/.claude/skills/ads/scripts/generate_image.py \ "[user prompt]" \ --size [WxH] \ --output [filename] \ --json
Reference Files
— provider config, pricing, limits~/.claude/skills/ads/references/image-providers.md
— per-platform specs~/.claude/skills/ads/references/[platform]-creative-specs.md
— brand injection schema~/.claude/skills/ads/references/brand-dna-template.md