| name | meta-ads-generator |
| description | One-prompt Meta ad generator. Input a product URL — extract brand voice/colors/imagery, scrape competitors and customer reviews, build a psychology pillar map, then generate 4 on-brand ad creatives. Trigger via `/meta-ads-generator` or when the user says "make meta ads for [product/url]". |
Meta Ads Generator
End-to-end pipeline: product URL → brand guidelines → psychology pillar map → 4 finished ad creatives in the brand's own style.
Backend-agnostic: works with Higgsfield MCP, kie.ai, OpenAI, or any OpenAI-compatible image API the user prefers.
First-run check
Before doing anything, look for a config.json in this skill's directory.
- If it exists, read it and proceed.
- If it does not exist, open
setup.md and run the setup wizard. Do not attempt to generate images until config is written.
Inputs (ask once at start)
- Product URL (required) — the actual landing/product page.
- Ad goal (required, default =
purchase) — purchase, lead, install, demo, etc.
- Primary audience (optional — infer from page if skipped).
- Output folder (optional — default
~/meta-ads-generator-output/<brand-slug>/).
If the user just drops a URL, assume goal = purchase and proceed. Don't interrogate.
Pipeline
Step 1 — Extract brand guidelines
Use WebFetch (or the clone-website / crawl skill if installed) on the product URL. Pull:
- Copy samples — headlines, subheads, CTAs, body voice
- Tone — formal/casual, technical/playful, fear/aspiration
- Color palette — dominant + accent (sample from CSS or screenshots)
- Typography — font families used
- Product imagery — download all hero/product shots to
<output>/assets/product/
- Logo — pull SVG/PNG to
<output>/assets/logo/
Save to <output>/brand-guidelines.md with sections: Voice, Palette (hex), Fonts, Visual motifs, Do/Don't.
Step 2 — Competitor + customer research
Run in parallel:
- Competitors — use
WebSearch for "[product category] facebook ads" and Meta Ad Library lookups. Pull 5-10 active competitor ads in the same category. Note: hooks used, formats, claims, visual patterns. (If the competitive-ads-extractor skill is installed, use it.)
- Customer reviews — scrape Trustpilot / Google reviews / Amazon / G2 / app store reviews via
WebSearch + WebFetch (or tavily-research / crawl if installed). Pull 30-50 reviews minimum. Capture verbatim phrases.
Save raw findings to <output>/research/competitors.md and <output>/research/reviews.md.
Step 3 — Psychology pillar map
Synthesize Step 2 into 4-6 psychology pillars — the emotional/rational drivers behind why this audience buys. Each pillar gets:
- Name (e.g. "Status anxiety", "Time scarcity", "Insider knowledge")
- Trigger — the underlying fear/desire
- Customer phrase — verbatim quote from reviews proving it exists
- Competitor angle — how rivals address it (or miss it)
- Ad angle for us — how this brand should hit it differently
Save to <output>/pillar-map.md.
Step 4 — Generate 4 ad concepts
Pick the top 4 pillars (highest emotional charge × least covered by competitors). For each, draft:
- Hook (3-7 words, on-screen text)
- Headline (the typeset focal line)
- Subhead/proof (one short line)
- CTA
- Visual direction (composition, product placement, palette use, mood)
Save to <output>/ad-concepts.md. Show the user — wait for approval or edits before generating images.
Step 5 — Generate creatives (backend-routed)
Read config.json. Route to the correct backend doc:
backend: "higgsfield" → follow backends/higgsfield.md
backend: "kie" → follow backends/kie.md
backend: "openai" → follow backends/openai.md
backend: "custom" → follow backends/custom.md
Reference ads injection: before calling the backend, list any image files in the user's reference_ads_folder (set during setup). For each backend, pass these as visual reference inputs (Higgsfield: media_upload + media_confirm; OpenAI gpt-image-1: image[] parameter; kie / custom: per their schema). If a backend doesn't support image refs, summarize the references in plain language ("the user's saved reference ads tend to use [X] composition, [Y] color, [Z] type treatment") and prepend that to the prompt.
Universal prompt template (each backend's doc shows how to wrap it in the right request shape):
On-brand Meta ad in {brand} style.
Palette: {hex primary} dominant with {hex accent} accent.
Typography mood: {brand font feeling}.
Composition: {visual direction from concept}.
Headline (typeset prominently): "{headline}"
Subhead (smaller): "{subhead}"
CTA pill: "{cta}"
Product: use the uploaded product image as the hero element.
Logo: small, top-left or bottom-right.
1080×1350 safe zone — keep top 100px and bottom 100px clear of critical text.
Match the design language of the user's reference ads (provided as visual references).
NO purple-on-white gradient. NO Inter / Roboto / Arial. NO AI-generated faces unless the brand uses photography of real people.
Run one image generation call at a time (parallel calls time out on most providers).
Step 6 — Review + save
Save all 4 to <output>/. On macOS run open -a Preview <output>/*.png so the user can scan them. Stage approved ones in <output>/keepers/.
If the user wants to launch directly to Meta, they need the Meta Ads CLI or Meta Ads MCP installed and authenticated separately — this skill stops at creative generation.
Hard rules
- No em dashes in any ad copy.
- One image generation call at a time.
- Always present concepts before generating images. Don't burn API spend on unapproved directions.
- Brand voice over user voice. This skill writes in the client's / product's voice, not the operator's.
- Cite sources in pillar map. Every pillar needs a real customer quote — no fabricated psychology.
- Safe zones — 1080×1350 output, keep 100px top/bottom clear.
- Reference ads matter. If the user has saved reference ads in their
reference_ads_folder, always include them. They're the strongest signal of what the user considers a "good ad."
Built by @tenfoldmarc. Follow for daily AI automation builds — real systems, not theory.