{"skill":{"slug":"product-to-ads","displayName":"Product to Ads (Ad-Ready)","summary":"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.","description":"---\nname: ad-ready\ndescription: 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.\n---\n\n# Ad-Ready: AI Advertising Image Generator\n\nGenerate professional advertising images from product URLs using a 4-phase AI pipeline on ComfyDeploy.\n\n**Source:** [github.com/PauldeLavallaz/ads_SV](https://github.com/PauldeLavallaz/ads_SV)\n\n---\n\n## Pipeline Architecture\n\nThe pipeline runs as a ComfyUI custom node deployed on ComfyDeploy. A single `ProductToAds_Manual` node executes 4 phases internally:\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                  ProductToAds_Manual Node                     │\n│                                                             │\n│  PHASE 1: Product Scraping (Gemini Flash)                   │\n│  ─────────────────────────────────────────                   │\n│  Scrapes product URL → extracts title, description,         │\n│  features, price, materials, image URLs                      │\n│  Also scrapes HTML for high-res product images (≥1000px)    │\n│                                                             │\n│  PHASE 2: Campaign Brief Generation (Gemini Flash)          │\n│  ────────────────────────────────────────────────            │\n│  Brand Identity + Product Data + References →                │\n│  10-point Campaign Brief (creative direction)                │\n│                                                             │\n│  PHASE 3: Blueprint Generation (Gemini Flash)               │\n│  ──────────────────────────────────────────────              │\n│  Master Prompt (funnel stage) + Brief + Keywords →           │\n│  Production-Ready JSON Blueprint                             │\n│                                                             │\n│  PHASE 4: Image Generation (Nano Banana Pro / Imagen 3)     │\n│  ──────────────────────────────────────────────────          │\n│  Blueprint + all reference images → final ad image           │\n│                                                             │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### Phase 2: Campaign Brief (The Creative Brain)\n\nThe Brief Generator is the most critical intermediate step. It acts as a \"Senior Art Director\" that translates raw data into actionable creative direction using a 10-point framework:\n\n1. **Strategic Objective** — Why this campaign exists (awareness/positioning/launch)\n2. **Central Message** — One idea perceivable without text\n3. **Visual Tone of Voice** — Register: calm/energetic/intimate/monumental\n4. **Product Role** — Hero vs co-protagonist vs implicit presence\n5. **Visual Language & Brand Coherence** — Non-negotiable brand codes\n6. **Photographer & Equipment** — Photography as concept, not execution\n7. **Extended Art Direction** — Styling, casting, poses, hair/makeup, layout\n8. **Environment & Context** — Where and why (conceptual, never decorative)\n9. **Texture, Material & Product Render** — How surfaces are perceived\n10. **Final Image Signature** — Finish, grain, temporal positioning\n\nWithout the brief, the Master Prompt must guess creative strategy. With it, the Master Prompt only executes.\n\nThe brief prompt template is included at `{baseDir}/configs/Brief_Generator/brief_prompt.json`.\n\n### Phase 3: Master Prompts (8 Funnel Stages)\n\nEach funnel stage has a specialized Master Prompt that generates a production-ready JSON Blueprint. All share the same internal simulation:\n\n- **ROUND -1: Brand Identity Forensics** (stages 03+) — Unified Brand Style Manifest\n- **ROUND 0: Fidelity Lock** — Product geometry & talent identity are IMMUTABLE\n- **ROUND 1: Stage Strategy** — Strategic approach specific to funnel position\n- **ROUND 2: Graphic Design** — UI, typography, CTA engineering\n\nThe Blueprint JSON covers: scene production, talent lock, camera perspective, subject action/pose/wardrobe, lighting, product constraints, layout architecture, typography, CTA engineering, and brand asset placement.\n\nMaster prompt files are included at `{baseDir}/configs/Product_to_Ads/`.\n\n### Reference Analyzer\n\nReference images (`referencia`) are **optional** and **off by default**. The pipeline generates creative direction internally from Brand Identity + Campaign Brief. Only use a reference when the user explicitly asks to clone a specific ad's style.\n\nWhen used, the reference is analyzed for pose, photographic style, and location cues.\n\n---\n\n## ⚠️ CRITICAL: Required Inputs Checklist\n\nBefore running ANY ad generation, ensure these are provided:\n\n| Input | Required? | How to Get It |\n|-------|-----------|---------------|\n| `--product-url` | ✅ ALWAYS | User provides the product page URL |\n| `--product-image` | ✅ ALWAYS | Download from the product page, or user provides |\n| `--brand-profile` | ✅ NEVER EMPTY | Pick from catalog or run brand-analyzer first. NEVER leave as \"No Brand\" if a brand is known |\n| `--prompt-profile` | ✅ ALWAYS | Choose based on campaign objective |\n| `--aspect-ratio` | Default: 4:5 | Change if needed for platform |\n| `--model` | 🔶 OPTIONAL | Model/talent face. Ads with talent perform much better. Empty = product-only ad (no person). When used, pick from `~/clawd/models-catalog/catalog/images/` (114 models available) |\n| `--logo` | 🔶 OPTIONAL | Try to find it. Use if good quality & easy to get. Skip if low-res or hard to find. Empty = bypassed |\n| `--reference` | 🔶 OPTIONAL (off) | Only when user explicitly asks to clone a reference ad. Empty = bypassed |\n| `--creative-brief` | 🔶 ON-DEMAND | Only when user gives explicit creative direction. Omit to let pipeline auto-generate from brand profile |\n| `--language` | 🔶 ON-DEMAND | Only when user requests a specific language. Omit to use default (es) |\n\n### 🚨 NEVER Skip These Steps:\n\n1. **Product image** — Download the main product photo from the product URL. The scraper is fragile; always provide a product image explicitly.\n2. **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.\n3. **Brand logo** — TRY to find it (Clearbit, logo.dev, brand website). Use if good quality. If not found or low-res, skip it — the variable accepts empty string (bypassed server-side).\n4. **Reference** — Do NOT search for references by default. Only provide when the user explicitly asks to clone a specific ad or says \"find a good ad to clone\".\n\n---\n\n## Auto-Preparation Workflow\n\nWhen the user asks to generate an ad:\n\n```\n1. User provides: product URL + brand name + objective\n\n2. CHECK brand profile exists:\n   → ls ~/clawd/ad-ready/configs/Brands/ | grep -i \"{brand}\"\n   → If not found: run brand-analyzer skill first\n\n3. DOWNLOAD product image:\n   → Visit the product URL or fetch the page\n   → Find and download the main product image\n   → Save to /tmp/ad-ready-product.jpg\n\n4. DOWNLOAD brand logo:\n   → Search \"{brand name} logo PNG\" or fetch from brand website\n   → Download clean logo image\n   → Save to /tmp/ad-ready-logo.png\n\n5. SELECT prompt profile based on objective:\n   → 🎨 Morfeo_Creative: DEFAULT — cinematic, narrative-rich, slightly surreal. Best visuals.\n   → Awareness: brand discovery, dynamic scenes, world-building, scroll-stoppers\n   → Interest: sustained attention, micro-world hinting at use-case\n   → Consideration: feature communication, proof cues, informative\n   → Evaluation: trust, authority, reviews, certifications\n   → Conversion: ⚠️ MINIMAL by design — clean, CTA-dominant, white backgrounds\n   → Retention: post-purchase confidence, onboarding\n   → Loyalty: editorial, lifestyle, emotional bond\n   → Advocacy: share-worthy, community, belonging\n\n   DEFAULT SELECTION LOGIC:\n   - Generic \"generate an ad\" → Morfeo_Creative (09)\n   - \"awareness\" / \"brand discovery\" → Awareness (01)\n   - \"conversion\" / \"buy now\" / CTA-focused → Conversion (05)\n   - \"creative\" / \"original\" / \"surreal\" → Morfeo_Creative (09)\n   - \"lifestyle\" / \"editorial\" → Loyalty (07)\n   - When in doubt → Morfeo_Creative (09), NOT Conversion\n\n5b. SELECT MODEL (optional):\n   → If user wants a person in the ad: pick from ~/clawd/models-catalog/catalog/images/model_XX.jpg (114 available)\n   → If user wants product-only ad (no person): leave --model empty\n   → If user doesn't specify: ASK if they want a model or product-only\n   → Catalog preview: catalog.json at ~/clawd/models-catalog/catalog/catalog.json\n\n6. RUN the generation with ALL inputs filled\n```\n\n---\n\n## Usage\n\n### Full command (recommended):\n```bash\nCOMFY_DEPLOY_API_KEY=\"$KEY\" uv run {baseDir}/scripts/generate.py \\\n  --product-url \"https://shop.example.com/product\" \\\n  --product-image \"/tmp/product-photo.jpg\" \\\n  --logo \"/tmp/brand-logo.png\" \\\n  --model \"models-catalog/catalog/images/model_15.jpg\" \\\n  --brand-profile \"Nike\" \\\n  --prompt-profile \"Master_prompt_05_Conversion\" \\\n  --aspect-ratio \"4:5\" \\\n  --output \"ad-output.png\"\n```\n\n### With reference (only when explicitly requested):\n```bash\nCOMFY_DEPLOY_API_KEY=\"$KEY\" uv run {baseDir}/scripts/generate.py \\\n  --product-url \"https://shop.example.com/product\" \\\n  --product-image \"/tmp/product-photo.jpg\" \\\n  --reference \"/tmp/reference-ad.jpg\" \\\n  --brand-profile \"Nike\" \\\n  --prompt-profile \"Master_prompt_01_Awareness\" \\\n  --output \"ad-output.png\"\n```\n\n### Auto-fetch mode (downloads product image and logo automatically):\n```bash\nCOMFY_DEPLOY_API_KEY=\"$KEY\" uv run {baseDir}/scripts/generate.py \\\n  --product-url \"https://shop.example.com/product\" \\\n  --brand-profile \"Nike\" \\\n  --prompt-profile \"Master_prompt_05_Conversion\" \\\n  --auto-fetch \\\n  --output \"ad-output.png\"\n```\n\n### List available brands:\n```bash\nuv run {baseDir}/scripts/generate.py --list-brands\n```\n\n---\n\n## API Details\n\n**Endpoint:** `https://api.comfydeploy.com/api/run/deployment/queue`\n**Deployment ID:** `e37318e6-ef21-4aab-bc90-8fb29624cd15`\n\n### ComfyDeploy Input Variables\n\n| Variable | Type | Description |\n|----------|------|-------------|\n| `product_url` | string | Product page URL to scrape |\n| `producto` | image URL | Product image (uploaded to ComfyDeploy) |\n| `model` | image URL | Model/talent face reference. **OPTIONAL** — empty = product-only ad without a person. When used, select from models catalog (`~/clawd/models-catalog/catalog/images/model_XX.jpg`, 114 available) |\n| `referencia` | image URL | Style reference ad — OPTIONAL, empty = bypassed. Only when user asks to clone a reference |\n| `marca` | image URL | Brand logo — OPTIONAL, empty = bypassed. Use if found easily in good quality |\n| `brand_profile` | enum | Brand name from catalog (70+ brands) |\n| `prompt_profile` | enum | Funnel stage master prompt |\n| `aspect_ratio` | enum | Output format (1:1, 4:5, 5:4, 9:16, etc.) |\n| `language` | string | **ON-DEMAND ONLY.** Output language for ad copy/CTA. Default: `es`. Only send when the user explicitly requests a different language. Otherwise, DO NOT include this parameter — let the pipeline use its default. |\n| `creative_brief` | string | **ON-DEMAND ONLY.** Free-text creative direction override. Only use when the user explicitly asks for a specific creative direction, scene, mood, or concept. Otherwise, DO NOT include this parameter — let the pipeline generate its own brief from the Brand Identity profile automatically. |\n\n---\n\n## Funnel Stages — Strategic Detail\n\n### 01 — Awareness\n**Goal:** Scroll-stop, curiosity, brand introduction\n**Reject:** Generic \"product on table\" concepts\n**Strategy:** Dynamic camera angles, world-building environments, high-concept creativity\n**CTA:** Soft or optional\n**Visual Hierarchy:** Talent → Product → Optional CTA\n\n### 02 — Interest\n**Goal:** Sustained attention, introduce value proposition\n**Reject:** Abstract visuals that hide the product\n**Strategy:** One clear visual idea, believable micro-world hinting at use-case\n**CTA:** Learn More, Discover, See Details\n**Visual Hierarchy:** Talent → Product → Headline → CTA\n\n### 03 — Consideration\n**Goal:** Informed evaluation, reduce uncertainty\n**Reject:** Pure mood storytelling, vague emotional content\n**Strategy:** Communicate WHAT product does, ONE primary differentiator, ONE proof cue\n**CTA:** Compare, See Details, Explore\n**Visual Hierarchy:** Talent → Product → Key Benefit → Proof Cue → CTA\n**New:** Adds Brand Identity Manifest to Blueprint JSON\n\n### 04 — Evaluation\n**Goal:** Validate purchase decision, proof & trust\n**Reject:** Pure mood, unsupportable claims, visual clutter\n**Strategy:** One trust anchor (quality/legitimacy/authority), one proof cue (reviews/certification)\n**CTA:** See Reviews, Verified Quality, Learn More\n**Visual Hierarchy:** Trust Anchor → Proof Cue → Product → Talent → CTA\n\n### 05 — Conversion\n**Goal:** Trigger decisive action, remove friction\n**Reject:** New hesitation-inducing info, complex compositions\n**Strategy:** One hero (product), one action, optional micro-reassurance\n**CTA:** Buy Now, Get Yours, Complete Order (PRIMARY visual element)\n**Visual Hierarchy:** Product → CTA → Optional Reassurance → Brand → Talent\n\n### 06 — Retention\n**Goal:** Post-purchase confidence, reduce churn\n**Reject:** Hard-sell, urgency, price talk\n**Strategy:** \"You made the right choice\" + \"Here is the next step\"\n**CTA:** Start, Set Up, Learn, Track (guidance, not purchase)\n**Visual Hierarchy:** Confirmation → Next Step → Product → Talent\n\n### 07 — Loyalty\n**Goal:** Strengthen emotional bond over time\n**Reject:** Sales layouts, instructional tone, aggressive CTAs\n**Strategy:** \"This brand is part of who you are\" — habitual engagement\n**CTA:** Optional: Explore, Be Part Of, Continue\n**Visual Hierarchy:** Brand World/Mood → Talent (identity mirror) → Product → Brand\n\n### 08 — Advocacy\n**Goal:** Turn customers into voluntary brand ambassadors\n**Reject:** Sales language, instructional tone, forced testimonials\n**Strategy:** Signal belonging, create share-worthy imagery, enable organic sharing\n**CTA:** Optional or absent: Join the Movement, Part of Us\n**Visual Hierarchy:** Mood → Talent (identity proxy) → Product (symbol) → Brand\n\n### 09 — Morfeo Creative 🎨 (DEFAULT)\n**Goal:** Maximum visual impact, narrative-rich, cinematic quality\n**Reject:** White backgrounds, studio shots, \"product on table\", generic poses, sterile compositions\n**Strategy:** Build immersive WORLDS, not backgrounds. Talent is a CHARACTER with emotion and action. Subtle surreal/magical elements elevate the mundane. Think movie stills + magical realism + high fashion.\n**CTA:** Present but integrated into scene aesthetics\n**Visual Hierarchy:** Scene → Talent (as character) → Product (organic in scene) → CTA\n**Creative Philosophy:**\n- NEVER a white background or studio\n- Every image has depth (foreground/midground/background layers)\n- Lighting is narrative (golden hour, practicals, colored atmosphere)\n- One subtle surreal element per scene (impossible beauty, dream-logic detail)\n- Wardrobe is costume design, not \"simple clothes\"\n- Camera has personality (specific film stocks, intentional imperfections)\n\n---\n\n## Creating New Ad Types\n\nTo create a new funnel stage or specialized ad type:\n\n1. **Copy** the closest existing Master Prompt from `{baseDir}/configs/Product_to_Ads/`\n2. **Redefine ROUND 1** with the new strategic objective\n3. **Adjust ROUND 2** UI hierarchy accordingly\n4. **Shift** talent/product narrative roles\n5. **Modify** CTA philosophy and copy voice\n6. **Keep** the JSON output structure identical for pipeline compatibility\n7. **Maintain** the Fidelity Lock (ROUND 0) — product and talent are always immutable\n8. **Save** as `Master_prompt_XX_NewStage.json` — the node auto-discovers new profiles\n\n### Key Evolution Pattern Across Stages:\n\n| Aspect | Early (01-02) | Mid (03-05) | Late (06-08) | Morfeo (09) |\n|--------|--------------|-------------|--------------|-------------|\n| Talent role | Attention anchor | Credibility anchor | Identity mirror | Character in story |\n| Product role | Secondary hero | Evaluation hero | Familiar symbol | Organic in world |\n| CTA | Soft/exploratory | Proof-led → Decisive | Guidance → Optional | Integrated/aesthetic |\n| Copy voice | Intriguing | Clarity, proof, action | Supportive → Proud | Evocative/poetic |\n| Visual density | High-concept | Structured, scannable | Editorial, spacious | Cinematic/layered |\n| Environment | World-building | Context-rich | Lifestyle | Immersive + surreal |\n| Environment | World-building | Context-rich | Lifestyle, intimate |\n\n---\n\n## Image Input Types\n\n### Binding Images (strict fidelity — immutable)\n- **talent**: Face/body locked, no deviation in facial structure, ethnicity, proportions\n- **product_1-4**: Shape, label text, material, proportions preserved 1:1\n- **brand_logo**: UI/button style derived from logo geometry\n\n### Soft References (optional, off by default)\nReference image input (`referencia`) is optional. When provided, it's analyzed for:\n- **POSE_REF** → Body position, limbs, weight, gaze, micro-gestures\n- **PHOTO_STYLE_REF** → Camera, lens, lighting, grading, grain\n- **LOCATION_REF** → Setting, materials, colors, mood\n\nWhen empty (default), creative direction comes from Brand Identity + Campaign Brief alone.\n\n---\n\n## Brand Profiles\n\n### Catalog (70+ brands):\n```bash\nls ~/clawd/ad-ready/configs/Brands/*.json | sed 's/.*\\///' | sed 's/\\.json//'\n```\n\n### Creating new brand profiles:\nUse the `brand-analyzer` skill:\n```bash\nGEMINI_API_KEY=\"$KEY\" uv run ~/.clawdbot/skills/brand-analyzer/scripts/analyze.py \\\n  --brand \"Brand Name\" --auto-save\n```\n\nThe Brand Analyzer uses a 3-phase methodology:\n1. **Phase 1:** Official research via Google Search (canonical data: name, founding, positioning, vision, mission, tagline)\n2. **Phase 1.1:** Independent campaign research (10+ distinct campaigns via Google Images/Pinterest)\n3. **Phase 2-3:** Visual analysis → JSON profile following the standard template\n\nOutput covers: brand_info, brand_values, target_audience, tone_of_voice, visual_identity, photography, campaign_guidelines, brand_behavior, channel_expression, compliance.\n\n---\n\n## Aspect Ratios\n\n| Ratio | Use Case |\n|-------|----------|\n| `4:5` | **Default.** Instagram feed, Facebook |\n| `9:16` | Stories, Reels, TikTok |\n| `1:1` | Square posts |\n| `16:9` | YouTube, landscape banners |\n| `5:4` | Alternative landscape |\n| `2:3` | Pinterest |\n| `3:4` | Portrait |\n\n---\n\n## Config Files Reference\n\nThe skill includes reference copies of all pipeline configuration files:\n\n```\n{baseDir}/configs/\n├── Brief_Generator/\n│   └── brief_prompt.json              # 10-point campaign brief framework\n├── Product_to_Ads/\n│   ├── Master_prompt_01_Awareness.json\n│   ├── Master_prompt_02_Interest.json\n│   ├── Master_prompt_03_Consideration.json\n│   ├── Master_prompt_04_Evaluation.json\n│   ├── Master_prompt_05_Conversion.json\n│   ├── Master_prompt_06_Retention.json\n│   ├── Master_prompt_07_Loyalty.json\n│   ├── Master_prompt_08_Advocacy.json\n│   └── Master_prompt_09_Morfeo_Creative.json  # 🎨 DEFAULT — cinematic, surreal, narrative\n└── Reference_Analyzer/\n    └── reference_analysis_prompt.txt   # Pose/style/location analysis prompt\n```\n\nThese configs are the canonical reference for the pipeline's behavior. The actual live configs are stored in the ComfyUI deployment at `ads_SV/configs/`.\n\n---\n\n## Known Limitations\n\n1. **Product image scraping is fragile** — always provide product images manually\n2. **Some websites block scraping** — provide product data manually when scraping fails\n3. **Gemini hallucinations** — occasional issues in complex reasoning steps\n4. **No brief editing** — brief is generated automatically; manual override not yet supported\n5. **Logo & reference are optional** — both use server-side bypass; empty string = not used. Logo: use if good quality. Reference: only on explicit request\n\n---\n\n## Ad-Ready vs Morpheus\n\n| Feature | Ad-Ready | Morpheus |\n|---------|----------|----------|\n| Input | Product URL (auto-scrapes) | Manual product image |\n| Brand intelligence | 70+ brand profiles | None |\n| Funnel targeting | 8 funnel stages | None |\n| Brief generation | Auto (10-point creative direction) | None |\n| Creative direction | Objective-driven (brief → blueprint) | Pack-based (camera, lens, lighting) |\n| Best for | Product advertising campaigns | Fashion/lifestyle editorial photography |\n| Control level | High-level (strategy-first) | Granular (every visual parameter) |\n\n---\n\n## API Key\n\nUses ComfyDeploy API key. Set via `COMFY_DEPLOY_API_KEY` environment variable.\n\n## Source Repository\n\n- GitHub: [PauldeLavallaz/ads_SV](https://github.com/PauldeLavallaz/ads_SV)\n- Architecture: ComfyUI custom node package with 3 nodes:\n  - `ProductToAds_Manual` — Full manual control, single format\n  - `ProductToAds_Auto` — Auto-downloads images, generates 4 formats\n  - `BrandIdentityAnalyzer` — Analyzes brands via Gemini + Google Search\n","tags":{"latest":"1.4.0"},"stats":{"comments":0,"downloads":2026,"installsAllTime":1,"installsCurrent":1,"stars":1,"versions":5},"createdAt":1770273222703,"updatedAt":1778486025837},"latestVersion":{"version":"1.4.0","createdAt":1770276551974,"changelog":"fix: language injection only fires for non-default languages (was causing Gemini Flash JSON truncation); model/talent now optional; creative_brief and language are on-demand only; brand profiles must be pushed to GitHub after creation","license":null},"metadata":null,"owner":{"handle":"pauldelavallaz","userId":"s17es8yqc61443cxz7kbvr73rs884ggf","displayName":"Paul de Lavallaz","image":"https://avatars.githubusercontent.com/u/51497690?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779949150481}}