Give it a Google Play link. Get 20 ready-to-upload ad creatives back.
One command → Research → Strategy → Generation → QA → 20 creatives on your Desktop
Full Pack Generator takes any Google Play Store app link and automatically produces a complete set of advertising images ready to upload to Google Ads. No Photoshop. No design team. No manual work.
You run one slash command inside Claude Code. A few minutes later, you have a folder on your Desktop with 20 professionally crafted, policy-compliant ad creatives across multiple formats and visual approaches -- each one individually inspected by AI and regenerated if it doesn't meet the quality bar.
/full-pack-generator https://play.google.com/store/apps/details?id=com.example.app
That's it. The entire pipeline -- from research to final deliverable -- runs autonomously.
Media buyers running Google UAC (Universal App Campaigns) need a constant stream of fresh creatives. The typical workflow looks like this:
- Research the app manually -- screenshots, reviews, competitor landscape
- Brief a designer or design agency
- Wait days (or weeks) for deliverables
- Discover half the creatives violate Google Ads policies
- Request revisions, wait again
- Upload, test, repeat
Full Pack Generator collapses this entire process into a single command. It handles the research, develops the creative strategy, generates the images using AI, validates every single one against Google's policies, and packages the final output. What used to take days now takes minutes.
The system runs in 5 phases with aggressive parallelism at every stage:
Google Play URL
|
v
+-------------------------------+
| PHASE 1: RESEARCH |
| (3 parallel agents) |
+-------------------------------+
| | |
v v v
App Data Branding Reviews
(metadata, (colors, (5-star,
icon, logo, selling
screenshots) tone) points)
| | |
v v v
+-------------------------------+
| PHASE 1.5: ASSET UPLOAD |
| (starts as soon as icon is |
| ready -- doesn't wait) |
+-------------------------------+
|
v
+-------------------------------+
| PHASE 2: CREATIVE STRATEGY |
| 2 concepts x angles/hooks |
+-------------------------------+
|
v
+-------------------------------+
| PHASE 3: GENERATION |
| (4 parallel agents) |
+-------------------------------+
| | | |
v v v v
Approach Approach Approach Native
A B C Ads
(HTML (Pure (Asset (2 in-feed
Mockup) Prompt) Reference) images)
6 imgs 6 imgs 6 imgs 2 imgs
| | | |
+----+----+----+----+----+------+
| |
v v
Inline QA Inline QA
(per image) (per image)
| |
v v
+-------------------------------+
| PHASE 5: SUMMARY |
| Report + open all-creatives/ |
+-------------------------------+
|
v
~/Desktop/full-pack-
generator-runs/{app}/v1/
all-creatives/
(20 approved images)
Every image goes through inline QA immediately after generation. There is no separate review phase -- generation and quality control are a single loop that iterates until the image passes inspection.
- Scrapes full app metadata from Google Play (name, developer, rating, downloads, description)
- Downloads the high-res app icon and all Play Store screenshots
- Visits the developer's website to extract brand colors, logos, and visual tone
- Analyzes 30-50 five-star reviews to identify top selling points and emotional hooks
- All 3 research agents run in parallel
- Selects the 2 strongest creative angles from 10 proven ad frameworks (Hero Screenshot, Social Proof, Feature Spotlight, Lifestyle, Urgency, etc.)
- Generates headlines (max 30 chars), descriptions (max 90 chars), visual directions, and prompt keywords for each concept
- Produces a full creative brief saved as Markdown
- Approach A -- HTML Mockup: Builds a pixel-level HTML/CSS mockup of each ad, screenshots it with Playwright, then uses AI to transform it into a polished banner. Gives the most layout control.
- Approach B -- Pure Prompt: Generates directly from text prompts + the app icon. Pure AI creativity with brand guardrails.
- Approach C -- Asset Reference: Combines the icon + real app screenshots as multi-image input. Produces the most authentic-looking results.
- Native Ads: 2 editorial-style in-feed images designed to blend with organic content.
- All 4 generation streams run as parallel agents
- Every image is visually inspected by Claude immediately after generation
- Checks for: artifacts, gibberish text, wrong anatomy, upside-down devices, policy violations, brand consistency, correct app icon, professional composition
- Failed images get their prompt automatically adjusted and are regenerated
- No retry limit -- iterates until perfect
- Quality bar: "If you have to look twice at something, it's a FAIL"
- No "Download" or "Install" text (policy violation)
- No fake buttons or UI elements
- Content centered in safe zone (center 80%)
- Text overlay under 25%
- JPG format, under 5MB per image
- Every image is 100% unique for proper A/B testing
Each run produces 20 ad creative images in the exact sizes Google Ads requires:
| Format | Dimensions | Aspect Ratio | Count |
|---|---|---|---|
| Landscape | 1200 x 628 | 1.91:1 | 6 |
| Square | 1200 x 1200 | 1:1 | 6 |
| Portrait | 1200 x 1500 | 4:5 | 6 |
| Native | 1200 x 627 | ~1.91:1 | 2 |
| Total | 20 |
The 18 banners come from 3 different generation approaches (A, B, C) x 2 creative concepts x 3 sizes. This gives you maximum visual diversity for A/B testing.
All approved images land in a single all-creatives/ folder with descriptive filenames:
all-creatives/
A_hero-your-photos-reimagined_1200x628.jpg
A_hero-your-photos-reimagined_1200x1200.jpg
A_hero-your-photos-reimagined_1200x1500.jpg
A_social-proof-1m-users_1200x628.jpg
B_feature-ai-photo-magic_1200x628.jpg
B_feature-ai-photo-magic_1200x1200.jpg
C_lifestyle-create-anywhere_1200x1500.jpg
native_photo-restoration_1200x627.jpg
...
Upload the entire folder to Google Ads. Done.
| Component | Technology | Role |
|---|---|---|
| Orchestrator | Claude Code | Runs the full pipeline, launches parallel agents, makes creative decisions, performs visual QA |
| Image Generation | Replicate API | Three-tier model cascade for AI image generation |
| Primary Model | google/nano-banana-2 |
Fast, high-quality image generation (Tier 1) |
| Fallback Model | google/nano-banana-pro |
Higher quality fallback (Tier 2) |
| Last Resort Model | black-forest-labs/flux-2-flex |
Different architecture, final fallback (Tier 3) |
| Web Scraping | Playwright MCP | Browser automation for Google Play and developer websites |
| HTML Screenshots | Playwright (Node.js) | Renders HTML mockups to JPG for Approach A |
| Image Processing | sips (macOS built-in) |
Resizes generated images to exact UAC dimensions |
| Language | Python 3 | Replicate API wrapper with cascade logic |
| Requirement | Install |
|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
| Node.js (18+) | brew install node or nodejs.org |
| Python 3 (3.8+) | brew install python3 or python.org |
| Replicate account | Sign up at replicate.com |
# Clone the repository
git clone https://github.com/JanNafta/full-pack-generator.git
cd full-pack-generator
# Run the installer (checks prerequisites, copies files to Claude Code config)
chmod +x install.sh
./install.shThe installer copies two files into your Claude Code configuration:
~/.claude/commands/full-pack-generator.md-- the skill (slash command)~/.claude/utils/replicate_gen.py-- the Replicate API wrapper
Option A: Environment variable
export REPLICATE_API_TOKEN="r8_your_token_here"
# Make it permanent:
echo 'export REPLICATE_API_TOKEN="r8_your_token_here"' >> ~/.zshrcOption B: Claude Code secrets file
Create or edit ~/.claude/secrets.md:
## APIs - Replicate
- API Token: `r8_your_token_here`Claude Code needs a Playwright MCP server for browser automation:
claude mcp add playwright -- npx @playwright/mcp@latestFor true parallel research (optional, but recommended):
claude mcp add playwright-2 -- npx @playwright/mcp@latest
claude mcp add playwright-3 -- npx @playwright/mcp@latest# Start Claude Code with permissions bypass (required for autonomous operation)
claude --dangerously-skip-permissions
# Run the skill
/full-pack-generator https://play.google.com/store/apps/details?id=com.example.appNote on
--dangerously-skip-permissions: The skill launches parallel agents, runs shell commands, reads/writes files, and automates browsers. Without this flag, Claude Code asks for permission on every single action, making the workflow unusable. The skill only writes to~/Desktop/full-pack-generator-runs/and~/.claude/.
The Replicate wrapper (replicate_gen.py) defaults to auto-cascade mode. You can override this:
# Auto cascade (default) -- starts with nano-banana-2, escalates on failures
python3 replicate_gen.py generate "your prompt" -o output.jpg
# Force a specific model
python3 replicate_gen.py generate "your prompt" -o output.jpg --model nano
python3 replicate_gen.py generate "your prompt" -o output.jpg --model nano-pro
python3 replicate_gen.py generate "your prompt" -o output.jpg --model flux
# Check current cascade status
python3 replicate_gen.py status| Tier | Model | Escalation Trigger |
|---|---|---|
| 1 | google/nano-banana-2 |
Default starting point |
| 2 | google/nano-banana-pro |
After 10 consecutive Tier 1 failures |
| 3 | black-forest-labs/flux-2-flex |
After 10 consecutive Tier 2 failures |
- If the current model succeeds, the failure counter resets to 0
- Once escalated to a higher tier, the system never goes back to a lower one
- Each image is retried if it returns
None(model failed but threshold not reached)
All runs go to ~/Desktop/full-pack-generator-runs/{app-name}/v{N}/. Version numbers auto-increment, so previous runs are never overwritten.
/full-pack-generator https://play.google.com/store/apps/details?id=com.spotify.music# Upload an image to Replicate (returns a URL for use in generation)
python3 ~/.claude/utils/replicate_gen.py upload ./my-icon.png
# Generate a single image
python3 ~/.claude/utils/replicate_gen.py generate \
"Professional app ad banner, premium quality, vibrant colors" \
-o banner.jpg -a 16:9 -r 1K \
-i "https://replicate.delivery/..." \
--uac landscape
# Generate with forced model
python3 ~/.claude/utils/replicate_gen.py generate \
"Minimalist app showcase" \
-o showcase.jpg -a 1:1 --model flux
# Batch generate from a JSON spec
python3 ~/.claude/utils/replicate_gen.py batch jobs.json[
{
"prompt": "Professional app banner with phone mockup",
"filepath": "./output/banner-1.jpg",
"aspect_ratio": "16:9",
"resolution": "1K",
"image_input": ["https://replicate.delivery/icon-url"],
"uac_size": "landscape"
},
{
"prompt": "Square ad with feature spotlight",
"filepath": "./output/banner-2.jpg",
"aspect_ratio": "1:1",
"resolution": "1K",
"uac_size": "square"
}
]full-pack-generator/
|-- full-pack-generator.md # The skill definition (Claude Code slash command)
|-- utils/
| +-- replicate_gen.py # Replicate API wrapper with 3-tier cascade
|-- install.sh # One-command installer
|-- README.md # This file
+-- .gitignore
~/Desktop/full-pack-generator-runs/{app-name}/v{N}/
|-- research/
| |-- app-data.json # Full Google Play metadata
| |-- icon.png # High-res app icon
| |-- screenshots/ # All Play Store screenshots
| | |-- screenshot-01.jpg
| | |-- screenshot-02.jpg
| | +-- ...
| |-- branding/
| | +-- brand-analysis.json # Colors, fonts, tone
| |-- reviews-analysis.md # Top selling points from 5-star reviews
| +-- creative-brief.md # 2 concepts with headlines and visual directions
|-- banners/
| |-- approach-a-mockup/
| | |-- html/ # HTML/CSS mockup source files
| | |-- mockups/ # Playwright screenshots of the mockups
| | +-- final/ # AI-enhanced versions (landscape/square/portrait)
| |-- approach-b-prompt/
| | +-- final/ # Pure prompt generations
| +-- approach-c-assets/
| +-- final/ # Multi-image fusion generations
|-- native/ # 2 native in-feed ad images
|-- all-creatives/ # >>> THE DELIVERABLE -- all 20 approved images <<<
| |-- A_hero-app-name_1200x628.jpg
| |-- A_hero-app-name_1200x1200.jpg
| |-- B_social-proof-5-stars_1200x628.jpg
| +-- ...
+-- summary.md # Run report with QA results and model usage
| Issue | Solution |
|---|---|
REPLICATE_API_TOKEN not set |
Set the env var: export REPLICATE_API_TOKEN="r8_..." or add it to ~/.claude/secrets.md |
playwright not found |
Run npx playwright install chromium |
sips command not found |
macOS only. On Linux, install ImageMagick and replace sips -z H W file with convert file -resize WxH! file |
| Models keep failing | The cascade auto-escalates through 3 tiers. If all fail, Replicate may be overloaded -- wait and retry. |
| Images look wrong | The inline QA catches most issues. For persistent problems, force the flux model: --model flux |
| Agents running sequentially | Add multiple Playwright MCP servers (see Quick Start) for true parallel browser automation |
| Permission prompts interrupt flow | Run Claude Code with --dangerously-skip-permissions |
Contributions are welcome. Here are some areas where help would be valuable:
- Linux/Windows support -- replace macOS-specific
sipswith cross-platform image processing - New generation approaches -- additional creative strategies beyond the current A/B/C
- Additional ad networks -- Meta Ads, TikTok Ads, Unity Ads creative specs
- iOS App Store support -- extend research phase to scrape App Store data
- Prompt engineering -- better prompts for higher quality generations
To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-improvement) - Make your changes
- Test with a real Google Play URL
- Open a pull request
Jan Naftanaila -- Media Buyer & AI Automation Specialist
Building tools that turn hours of manual creative production into single commands.
- GitHub: @JanNafta
- LinkedIn: Jan Naftanaila
This project is open source and available under the MIT License.
Built with Claude Code + Replicate + Playwright
Star this repo if you find it useful -- it helps others discover it.