Ad-Ready: AI Advertising Image Generator
Generate professional advertising images from product URLs using a 4-phase AI pipeline on ComfyDeploy.
⚠️ CRITICAL: Required Inputs Checklist
Before running ANY ad generation, the agent MUST ensure ALL of these are provided:
| Input |
Required? |
How to Get It |
--product-url |
✅ ALWAYS |
User provides the product page URL |
--product-image |
✅ ALWAYS |
Download from the product page, or user provides |
--logo |
✅ ALWAYS |
Download from brand website or search online. MUST be an image file |
--reference |
✅ RECOMMENDED |
An existing ad whose style we want to clone. Search online or use previously generated images |
--brand-profile |
✅ NEVER EMPTY |
Pick from catalog or run brand-analyzer first. NEVER leave as "No Brand" if a brand is known |
--prompt-profile |
✅ ALWAYS |
Choose based on campaign objective |
--aspect-ratio |
Default: 4:5 |
Change if needed for platform |
--model |
Optional |
Model/talent face from catalog or user-provided |
🚨 NEVER Skip These Steps:
- Product image — Download the main product photo from the product URL. The scraper is fragile; always provide a product image explicitly.
- Brand logo — Download the logo from the brand's official website or search for "{brand name} logo" online. Must be a clean logo image (PNG preferred).
- Brand profile — If the brand doesn't exist in the catalog, run
brand-analyzer skill FIRST to generate one. Never submit with "No Brand" when a brand is known.
- Reference image — Search for an existing ad or visual with a style that matches what we're generating. Can be from previously generated images, the brand's campaigns, or found online. This dramatically improves output quality.
Auto-Preparation Workflow
When the user asks to generate an ad, follow this workflow:
1. User provides: product URL + brand name + objective
2. CHECK brand profile exists:
→ ls ~/clawd/ad-ready/configs/Brands/ | grep -i "{brand}"
→ If not found: run brand-analyzer skill first
3. DOWNLOAD product image:
→ Visit the product URL in browser or fetch the page
→ Find and download the main product image
→ Save to /tmp/ad-ready-product.jpg
4. DOWNLOAD brand logo:
→ Search "{brand name} logo PNG" or fetch from brand website
→ Download clean logo image
→ Save to /tmp/ad-ready-logo.png
5. FIND reference image:
→ Search for "{brand name} advertisement" or similar
→ Or use a previously generated ad that has the right style
→ Save to /tmp/ad-ready-reference.jpg
6. SELECT prompt profile based on objective:
→ Awareness: brand discovery, first impressions
→ Interest: engagement, curiosity
→ Consideration: comparison, features
→ Evaluation: deep dive, decision support
→ Conversion: purchase intent, CTAs (most common)
→ Retention: re-engagement
→ Loyalty: brand advocates
→ Advocacy: referral, community
7. RUN the generation with ALL inputs filled
Usage
Full command (recommended):
COMFY_DEPLOY_API_KEY="$KEY" uv run ~/.clawdbot/skills/ad-ready/scripts/generate.py \
--product-url "https://shop.example.com/product" \
--product-image "/tmp/product-photo.jpg" \
--logo "/tmp/brand-logo.png" \
--reference "/tmp/reference-ad.jpg" \
--model "models-catalog/catalog/images/model_15.jpg" \
--brand-profile "Nike" \
--prompt-profile "Master_prompt_05_Conversion" \
--aspect-ratio "4:5" \
--output "ad-output.png"
Auto-fetch mode (downloads product image and logo automatically):
COMFY_DEPLOY_API_KEY="$KEY" uv run ~/.clawdbot/skills/ad-ready/scripts/generate.py \
--product-url "https://shop.example.com/product" \
--brand-profile "Nike" \
--prompt-profile "Master_prompt_05_Conversion" \
--auto-fetch \
--output "ad-output.png"
The --auto-fetch flag will:
- Download the main product image from the product URL
- Search and download the brand logo
- Both get uploaded to ComfyDeploy automatically
API Details
Endpoint: https://api.comfydeploy.com/api/run/deployment/queue
Deployment ID: e37318e6-ef21-4aab-bc90-8fb29624cd15
ComfyDeploy Input Variables
These are the exact variable names the ComfyDeploy deployment expects:
| Variable |
Type |
Description |
product_url |
string |
Product page URL to scrape |
producto |
image URL |
Product image (uploaded to ComfyDeploy) |
model |
image URL |
Model/talent face reference |
referencia |
image URL |
Style reference ad image |
marca |
image URL |
Brand logo image |
brand_profile |
enum |
Brand name from catalog |
prompt_profile |
enum |
Funnel stage prompt |
aspect_ratio |
enum |
Output format |
4-Phase Pipeline (How It Works Internally)
Phase 1: Product Scraping
- Gemini Flash visits the product URL
- Extracts: title, description, features, price, images
- ⚠️ Image scraping is the most fragile part — always provide product images manually
Phase 2: Campaign Brief Generation (CRITICAL)
- Uses Brand Identity JSON + Product Data → 10-point brief
- Everything downstream depends on brief quality
- Brief covers: strategic objective, central message, visual tone, product role, photographer, art direction, environment, textures, signature
Phase 3: Blueprint Generation
- Master Prompt (per funnel stage) + Brief + Product JSON + Keyword Bank + Format
- Gemini Flash generates complete Blueprint JSON
- Covers: scene, production, graphic design, lighting, composition, materials, CTA
Phase 4: Image Generation
- Nano Banana Pro (Imagen 3.0) generates the final image
- Uses Blueprint JSON + all reference images (product, talent, logo, style ref)
Supporting Reference Nodes
pose_ref → enforce a specific pose (replicated exactly)
photo_style_ref → replicate photographic style (⚠️ can be too literal, being optimized)
location_ref → replicate location and color palette
Brand Profiles
Existing catalog (70+ brands):
ls ~/clawd/ad-ready/configs/Brands/*.json | sed 's/.*\///' | sed 's/\.json//'
Creating new brand profiles:
Use the brand-analyzer skill:
GEMINI_API_KEY="$KEY" uv run ~/.clawdbot/skills/brand-analyzer/scripts/analyze.py \
--brand "Brand Name" --auto-save
This generates a full Brand Identity JSON and saves it to the catalog automatically.
Prompt Profiles (Funnel Stages)
| Profile |
Stage |
Best For |
Master_prompt_01_Awareness |
Awareness |
Brand discovery, first impressions |
Master_prompt_02_Interest |
Interest |
Engagement, curiosity |
Master_prompt_03_Consideration |
Consideration |
Comparison, features |
Master_prompt_04_Evaluation |
Evaluation |
Deep dive, decision support |
Master_prompt_05_Conversion |
Conversion |
Purchase intent, CTAs |
Master_prompt_06_Retention |
Retention |
Re-engagement, loyalty |
Master_prompt_07_Loyalty |
Loyalty |
Brand advocates |
Master_prompt_08_Advocacy |
Advocacy |
Referral, community |
How to choose:
- Most ads → Conversion (purchase intent)
- New product launches → Awareness
- Retargeting → Consideration or Evaluation
- Existing customers → Retention or Loyalty
Aspect Ratios
| Ratio |
Use Case |
4:5 |
Default. Instagram feed, Facebook |
9:16 |
Stories, Reels, TikTok |
1:1 |
Square posts |
16:9 |
YouTube, landscape banners |
5:4 |
Alternative landscape |
Model Catalog
Models for talent/face reference: ~/clawd/models-catalog/catalog/
Priority: User-provided model > Catalog selection > No model (product-only ad)
Known Limitations
- Product image scraping is fragile — always provide product images manually when possible
- photo_style_ref can be too literal — the style reference may be replicated too closely
- Some websites block scraping — Armani works well, others may return incorrect data
- Auto 4-Format is alpha — bugs and edge cases exist
- Gemini hallucinations — occasional issues in complex reasoning steps
Ad-Ready vs Morpheus
| Feature |
Ad-Ready |
Morpheus |
| Input |
Product URL (auto-scrapes) |
Manual product image |
| Brand intelligence |
70+ brand profiles |
None |
| Funnel targeting |
8 funnel stages |
None |
| Creative direction |
Auto-generated from brief |
Pack-based (camera, lens, etc.) |
| Best for |
Product advertising campaigns |
Fashion/lifestyle editorial photography |
| Control level |
High-level (objective-driven) |
Granular (every visual parameter) |
Source Repository
API Key
Uses ComfyDeploy API key. Set via COMFY_DEPLOY_API_KEY environment variable.
1---2name: ad-ready3description: Generate professional advertising images from product URLs using the Ad-Ready pipeline on ComfyDeploy. Use when the user wants to create ads for any product by providing a URL, optionally with a brand profile (70+ brands) and funnel stage targeting. Supports model/talent integration, brand-aware creative direction, and multi-format output. Differs from Morpheus (manual fashion photography) — Ad-Ready is URL-driven, brand-intelligent, and funnel-stage aware.4---56# Ad-Ready: AI Advertising Image Generator78Generate professional advertising images from product URLs using a 4-phase AI pipeline on ComfyDeploy.910## ⚠️ CRITICAL: Required Inputs Checklist1112Before running ANY ad generation, the agent MUST ensure ALL of these are provided:1314| Input | Required? | How to Get It |15|-------|-----------|---------------|16| `--product-url` | ✅ ALWAYS | User provides the product page URL |17| `--product-image` | ✅ ALWAYS | Download from the product page, or user provides |18| `--logo` | ✅ ALWAYS | Download from brand website or search online. MUST be an image file |19| `--reference` | ✅ RECOMMENDED | An existing ad whose style we want to clone. Search online or use previously generated images |20| `--brand-profile` | ✅ NEVER EMPTY | Pick from catalog or run brand-analyzer first. NEVER leave as "No Brand" if a brand is known |21| `--prompt-profile` | ✅ ALWAYS | Choose based on campaign objective |22| `--aspect-ratio` | Default: 4:5 | Change if needed for platform |23| `--model` | Optional | Model/talent face from catalog or user-provided |2425### 🚨 NEVER Skip These Steps:26271. **Product image** — Download the main product photo from the product URL. The scraper is fragile; always provide a product image explicitly.282. **Brand logo** — Download the logo from the brand's official website or search for "{brand name} logo" online. Must be a clean logo image (PNG preferred).293. **Brand profile** — If the brand doesn't exist in the catalog, run `brand-analyzer` skill FIRST to generate one. Never submit with "No Brand" when a brand is known.304. **Reference image** — Search for an existing ad or visual with a style that matches what we're generating. Can be from previously generated images, the brand's campaigns, or found online. This dramatically improves output quality.3132## Auto-Preparation Workflow3334When the user asks to generate an ad, follow this workflow:3536```371. User provides: product URL + brand name + objective38392. CHECK brand profile exists:40 → ls ~/clawd/ad-ready/configs/Brands/ | grep -i "{brand}"41 → If not found: run brand-analyzer skill first42 433. DOWNLOAD product image:44 → Visit the product URL in browser or fetch the page45 → Find and download the main product image46 → Save to /tmp/ad-ready-product.jpg47484. DOWNLOAD brand logo:49 → Search "{brand name} logo PNG" or fetch from brand website50 → Download clean logo image51 → Save to /tmp/ad-ready-logo.png52535. FIND reference image:54 → Search for "{brand name} advertisement" or similar55 → Or use a previously generated ad that has the right style56 → Save to /tmp/ad-ready-reference.jpg57586. SELECT prompt profile based on objective:59 → Awareness: brand discovery, first impressions60 → Interest: engagement, curiosity61 → Consideration: comparison, features62 → Evaluation: deep dive, decision support63 → Conversion: purchase intent, CTAs (most common)64 → Retention: re-engagement65 → Loyalty: brand advocates66 → Advocacy: referral, community67687. RUN the generation with ALL inputs filled69```7071## Usage7273### Full command (recommended):74```bash75COMFY_DEPLOY_API_KEY="$KEY" uv run ~/.clawdbot/skills/ad-ready/scripts/generate.py \76 --product-url "https://shop.example.com/product" \77 --product-image "/tmp/product-photo.jpg" \78 --logo "/tmp/brand-logo.png" \79 --reference "/tmp/reference-ad.jpg" \80 --model "models-catalog/catalog/images/model_15.jpg" \81 --brand-profile "Nike" \82 --prompt-profile "Master_prompt_05_Conversion" \83 --aspect-ratio "4:5" \84 --output "ad-output.png"85```8687### Auto-fetch mode (downloads product image and logo automatically):88```bash89COMFY_DEPLOY_API_KEY="$KEY" uv run ~/.clawdbot/skills/ad-ready/scripts/generate.py \90 --product-url "https://shop.example.com/product" \91 --brand-profile "Nike" \92 --prompt-profile "Master_prompt_05_Conversion" \93 --auto-fetch \94 --output "ad-output.png"95```9697The `--auto-fetch` flag will:98- Download the main product image from the product URL99- Search and download the brand logo100- Both get uploaded to ComfyDeploy automatically101102## API Details103104**Endpoint:** `https://api.comfydeploy.com/api/run/deployment/queue`105**Deployment ID:** `e37318e6-ef21-4aab-bc90-8fb29624cd15`106107## ComfyDeploy Input Variables108109These are the exact variable names the ComfyDeploy deployment expects:110111| Variable | Type | Description |112|----------|------|-------------|113| `product_url` | string | Product page URL to scrape |114| `producto` | image URL | Product image (uploaded to ComfyDeploy) |115| `model` | image URL | Model/talent face reference |116| `referencia` | image URL | Style reference ad image |117| `marca` | image URL | Brand logo image |118| `brand_profile` | enum | Brand name from catalog |119| `prompt_profile` | enum | Funnel stage prompt |120| `aspect_ratio` | enum | Output format |121122## 4-Phase Pipeline (How It Works Internally)123124### Phase 1: Product Scraping125- Gemini Flash visits the product URL126- Extracts: title, description, features, price, images127- ⚠️ Image scraping is the most fragile part — always provide product images manually128129### Phase 2: Campaign Brief Generation (CRITICAL)130- Uses Brand Identity JSON + Product Data → 10-point brief131- **Everything downstream depends on brief quality**132- Brief covers: strategic objective, central message, visual tone, product role, photographer, art direction, environment, textures, signature133134### Phase 3: Blueprint Generation135- Master Prompt (per funnel stage) + Brief + Product JSON + Keyword Bank + Format136- Gemini Flash generates complete Blueprint JSON137- Covers: scene, production, graphic design, lighting, composition, materials, CTA138139### Phase 4: Image Generation140- Nano Banana Pro (Imagen 3.0) generates the final image141- Uses Blueprint JSON + all reference images (product, talent, logo, style ref)142143### Supporting Reference Nodes144- `pose_ref` → enforce a specific pose (replicated exactly)145- `photo_style_ref` → replicate photographic style (⚠️ can be too literal, being optimized)146- `location_ref` → replicate location and color palette147148## Brand Profiles149150### Existing catalog (70+ brands):151```bash152ls ~/clawd/ad-ready/configs/Brands/*.json | sed 's/.*\///' | sed 's/\.json//'153```154155### Creating new brand profiles:156Use the `brand-analyzer` skill:157```bash158GEMINI_API_KEY="$KEY" uv run ~/.clawdbot/skills/brand-analyzer/scripts/analyze.py \159 --brand "Brand Name" --auto-save160```161162This generates a full Brand Identity JSON and saves it to the catalog automatically.163164## Prompt Profiles (Funnel Stages)165166| Profile | Stage | Best For |167|---------|-------|----------|168| `Master_prompt_01_Awareness` | Awareness | Brand discovery, first impressions |169| `Master_prompt_02_Interest` | Interest | Engagement, curiosity |170| `Master_prompt_03_Consideration` | Consideration | Comparison, features |171| `Master_prompt_04_Evaluation` | Evaluation | Deep dive, decision support |172| `Master_prompt_05_Conversion` | Conversion | Purchase intent, CTAs |173| `Master_prompt_06_Retention` | Retention | Re-engagement, loyalty |174| `Master_prompt_07_Loyalty` | Loyalty | Brand advocates |175| `Master_prompt_08_Advocacy` | Advocacy | Referral, community |176177**How to choose:**178- Most ads → **Conversion** (purchase intent)179- New product launches → **Awareness**180- Retargeting → **Consideration** or **Evaluation**181- Existing customers → **Retention** or **Loyalty**182183## Aspect Ratios184185| Ratio | Use Case |186|-------|----------|187| `4:5` | **Default.** Instagram feed, Facebook |188| `9:16` | Stories, Reels, TikTok |189| `1:1` | Square posts |190| `16:9` | YouTube, landscape banners |191| `5:4` | Alternative landscape |192193## Model Catalog194195Models for talent/face reference: `~/clawd/models-catalog/catalog/`196197**Priority:** User-provided model > Catalog selection > No model (product-only ad)198199## Known Limitations2002011. **Product image scraping is fragile** — always provide product images manually when possible2022. **photo_style_ref can be too literal** — the style reference may be replicated too closely2033. **Some websites block scraping** — Armani works well, others may return incorrect data2044. **Auto 4-Format is alpha** — bugs and edge cases exist2055. **Gemini hallucinations** — occasional issues in complex reasoning steps206207## Ad-Ready vs Morpheus208209| Feature | Ad-Ready | Morpheus |210|---------|----------|----------|211| Input | Product URL (auto-scrapes) | Manual product image |212| Brand intelligence | 70+ brand profiles | None |213| Funnel targeting | 8 funnel stages | None |214| Creative direction | Auto-generated from brief | Pack-based (camera, lens, etc.) |215| Best for | Product advertising campaigns | Fashion/lifestyle editorial photography |216| Control level | High-level (objective-driven) | Granular (every visual parameter) |217218## Source Repository219220- GitHub: https://github.com/PauldeLavallaz/ads_SV221- Local clone: ~/clawd/ad-ready/222- Patreon docs: https://www.patreon.com/posts/from-product-to-149933468223224## API Key225226Uses ComfyDeploy API key. Set via `COMFY_DEPLOY_API_KEY` environment variable.