โ† Back to Marketing & Sales
Marketing & Sales by @pauldelavallaz

ad-ready-pro

Generate professional advertising images from product URLs

0
Source Code

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:

  1. Product image โ€” Download the main product photo from the product URL. The scraper is fragile; always provide a product image explicitly.
  2. 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).
  3. 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.
  4. 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

  1. Product image scraping is fragile โ€” always provide product images manually when possible
  2. photo_style_ref can be too literal โ€” the style reference may be replicated too closely
  3. Some websites block scraping โ€” Armani works well, others may return incorrect data
  4. Auto 4-Format is alpha โ€” bugs and edge cases exist
  5. 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.