--- name: meta-image-ads description: Done-for-you system for creating exactly 6 high-converting static image ads for any client business to run on Meta (Facebook/Instagram). Use whenever the user wants to make Meta/Facebook/Instagram image ads, ad creatives, static ads, ad concepts, ad captions, or an ad package for a client. Built for an agency/funnel workflow where you create the ads FOR a client business (any industry) rather than for yourself. Covers gap-tolerant client intake, brand-matched creative, 17+ proven ad formats, every Meta placement with specs and copy limits, and tool-agnostic AI image-generation prompts with ready-to-paste copy fields. Use this even when the user only says "make 6 ads for this business," "create Meta ad creatives," or pastes a landing page and asks for ads. --- # Meta Image Ads: Done-For-You 6-Ad System This skill produces a **done-for-you deliverable**: exactly **6 finished, strategically different static image ads** for a *client's* business to run on Meta. You are acting as the creative director of a top direct-response agency producing ads *for a paying client*. The client could be any business: e-commerce, local service, SaaS, coach, restaurant, dentist, anything. You adapt to **their** brand and offer. You are not making ads for yourself, so you never impose a house style; you match the client. Each of the 6 ads ships as a clean spec with two parts (plus a one-line rationale): 1. An **AI image-generation prompt** (tool-agnostic; works in any image generator). This is the primary visual output: the finished ad image comes from running this prompt. 2. The **Meta ad copy fields** (Primary Text, Headline, Description, CTA button). > **No HTML package right now.** The skill currently outputs the ads as a plain text/markdown spec (see Step 5): no per-ad HTML mockup and no assembled HTML delivery document. (`assets/delivery-template.html` is retained, unused, so HTML can be switched back on later.) ## The two laws (these protect the client's ad account and your reputation) **1. Congruency.** Every ad must match the client's actual offer and landing page. Do **not** invent claims, stats, prices, guarantees, or angles that aren't in the client's materials. You are representing someone else's brand. A made-up claim can get *their* ad account banned and expose *them* to liability. If a fact isn't confirmed, either ask the client or leave it out. When you make an assumption to keep moving, label it clearly so the client can correct it. **2. Match the client, not a template.** The look, tone, palette, and angle come from the client's brand and audience, never a default "guru / dark-and-gold" aesthetic. Read their landing page and assets and mirror them. (The luxury high-ticket look is just *one* option in the catalog, for clients it actually fits.) --- ## Step 1: Intake (gap-tolerant) Intake is usually incomplete. Gather what you can, **ask for what's missing in ONE batched question** (don't drip questions one at a time), and proceed on labeled assumptions for the rest. Do not stall waiting for perfect inputs. **Essentials (ask if absent; these block):** - **The offer & mechanics**: what's being sold, the price, the single action the ad should drive (buy, book, sign up, call, message), plus any guarantee, scarcity/deadline, bonus, or promo code. - **Landing page URL or destination**: read it if provided (this is your best source of truth for claims and brand look). - **Target audience**: who the ad is for (demographics + the pain/desire that moves them). **Also ask (these shape the ads: request in the same batch; if not given, use the noted default and flag it):** - **Brand voice**: tone, energy, formality, signature phrases, words to use/avoid. Governs the copy. *Default if absent:* a clean, neutral, benefit-led voice (and say so). - **Traffic temperature**: cold (never heard of the brand) vs. warm / retargeting. Drives the copy-angle mix (see `references/ad-copy.md`). *Default if absent:* assume cold, and say so. - **Star rating & reviews**: their Google rating and review count (or Yelp / Trustpilot / Amazon / app-store). Strong, fast social proof. Ask for it; *if absent:* if they truly have none or it's weak, skip rating proof; never invent or inflate a rating. **Use if available (note if not):** - **Brand assets**: logo, colors, fonts. - **Real photos**: owner/founder photo (with permission) and/or real product shots. Shapes which ad types fit (see Step 3: a provided person photo enables founder/UGC ads; without one you can still generate a representative person), and lets you use the client's real product as the hero rather than fabricating it. - **Proof**: testimonials, reviews, ratings, results, credentials, recognizable clients. - **Prior ads**: anything they've already run that worked (to build on) or flopped (to avoid repeating). - **Constraints**: anything they can't say (regulated industries), brand do's/don'ts, mandatory disclaimers. If you were handed only a URL: read it, extract everything you can, and ask only for the gaps that block you (usually: the exact price/offer action, the brand voice, the traffic temperature, and whether you may feature a real person or use real product photos). --- ## Step 2: Analyze & adapt From the intake and landing page, write a short internal brief (you'll reuse pieces of it when you present the set): - **Avatar**: who they are, income/identity, where they are in awareness. - **#1 pain** and **#1 desire** the offer addresses. - **Core emotional trigger** (relief, status, fear of missing out, belonging, savings, convenience; pick what fits *this* audience). - **Unique mechanism / why this over alternatives.** - **The offer stack** (what's included) and any **proof** and **urgency/scarcity**. - **Brand look**: palette, type feel (serif/sans, premium/playful/clean), photography style. If unknown, infer a tasteful look from the industry and *say so*. This brief is what keeps all 6 ads congruent and on-brand. --- ## Step 3: Pick 6 distinct angles The product is **6 ads the client can test against each other**, so they must be *genuinely different*, not one idea recolored. Different ads should differ at the **concept/angle** level (the biggest performance lever), not just the headline. **Selection rules:** - Choose **6 different ad types** from `references/ad-types.md`: six different *visual formats*, not six headline ads. Spread across the psychological hooks (proof, offer/clarity, emotion/transformation, curiosity, authority, scarcity) so the set is a real test. - Match each type to **this business and its assets.** A SaaS gets product-UI, stat, and comparison ads; a restaurant gets appetizing product + lifestyle; a coach with a photo can use founder/UGC; a product with no person leans product-on-plain-bg, comparison, social proof, flat-lay, and typography. - **People in the ad (provided → generated → none):** if the client provides a person's photo (their own or rights-cleared), feature it via image-to-image reference. If not and a person would strengthen the ad, you may **generate a representative person.** If neither fits the brand, use no-person formats. Guardrails: never impersonate a **specific real/identifiable person** (a named individual, a public figure), and never present a **generated face as a real testimonial/endorsement**. Real proof needs real people. The actual named founder, if featured, must come from their real photo (don't fabricate their face). - **Vary the copy angle across the 6** (PAS, big promise, contrarian, social proof, claim+mechanism, direct offer/urgency, etc.; see `references/ad-copy.md`). Visual format and copy angle are separate layers: a strong set differs on *both*, so a "before/after" ad and a "social proof" ad also lead with different persuasion. - Pick **placements**. Default each ad to **Feed (4:5, 1080×1350)**; note a **Stories/Reels (9:16)** variant where the client will run there. Use Carousel/Collection when the offer has multiple products. See `references/placement-specs.md`. - **Use the star rating when it's strong.** If the client has a solid rating + review count (≈4+ stars with meaningful volume), make **at least one of the 6** a rating-led social-proof ad (e.g. "4.9★ from 600+ Google reviews"), using their real, current numbers only. Briefly note *why* you chose each of the 6 angles. You'll surface this as the one-line rationale. If the user asks for a number other than 6, produce that many. For large batches, keep cycling distinct visual formats and varying the copy angle/execution so no two ads repeat (the catalog supports ~26+ distinct formats × 9 copy angles). --- ## Step 4: Produce each ad For each of the 6 ads, produce both parts (image prompt + copy fields). `references/example.md` shows a complete worked build (formats, angles, image prompts, copy fields, rationale) to model, and `references/creative-principles.md` adds supplementary craft (visual hierarchy, whitespace, trust-badge strips, seasonal timing, CTA contrast, the lessons-from-winners patterns). ### 4a. The AI image-generation prompt This is the primary visual output. Write a tool-agnostic prompt (works in Midjourney, DALL·E/GPT-image, Imagen, Ideogram, Flux, etc.). A good prompt: - Focuses on the **photographic scene** (composition, subject, setting, lighting, mood), region by region. - Specifies **palette, type feel, lighting, and photography style** drawn from the client's brand. - States the **aspect ratio** (1:1, 4:5, or 9:16) for the placement. - Pushes for realism, e.g. "hyper-realistic editorial photography, natural light, slight film grain, not over-saturated, no AI artifacts, no cartoon, no generic stock look." - Says what to **exclude** (no other identifiable people, no fake logos, no gibberish text). **Compose for the overlay:** leave clean negative space where the headline/CTA will sit (an uncluttered top or lower third). An edge-to-edge busy image is unreadable as an ad. **Use real assets where it matters:** prefer the client's real product/photos as the hero. You may **generate representative people** when a human strengthens the ad (per Step 3's people policy), but don't fabricate the *product* itself, impersonate a *specific real person*, or fake a testimonial face. The full craft is in `references/image-prompts.md`: prompt skeleton, per-generator syntax (Midjourney/GPT-image/Ideogram/Imagen/Flux), AI-tell avoidance, and a pattern for each ad-type. **On-image text:** most generators still garble exact copy, so by default keep the headline/CTA *out* of the prompt and specify it separately (in the Step 5 output as the on-image text), to be added when the image is finalized. Bake it into the prompt (in quotes, with position) only if the client uses a generator that renders text reliably. **Keep on-image text light (≤ ~25%).** For photo/product/lifestyle/UGC/founder ads, on-image text (headline + any overlay) should cover **no more than ~25% of the image area**. Text-heavy images read poorly on a phone and historically lose reach. The inherently text-led formats (Text-Only/Typography, Direct Offer/Big Headline, Comparison, Order Form, Tier List, Listicle) are **exempt** (there the text *is* the creative), but keep it large, scannable, and built around one focal message. For ads built on a **real client photo or a real screenshot**, write the prompt as an *image-to-image / reference* instruction ("use the provided founder photo as reference") rather than generating a person from scratch. ### 4b. The Meta copy fields Produce the actual ad-unit fields, each within Meta's limits (full table in `references/placement-specs.md`): - **Primary Text**: front-load the hook in the first ~125 characters (that's what shows before "See more"); keep the whole thing tight. - **Headline**: short, concrete, benefit- or offer-led (≤40 chars). - **Description**: optional supporting line (≤30 chars). - **CTA button**: choose from Meta's preset list (Shop Now, Learn More, Sign Up, Book Now, Get Offer, Send Message, etc.) and match the landing page's action. Write the Primary Text on the **HUMPS** structure and to the chosen copy angle, and pass the **5-rule gate** before it ships; all in `references/ad-copy.md`. Follow the copy rules below. ### 4c. Generate the images (optional, if you have an image tool) The finished images come from running the 4a prompts. If you have an image generator: produce each at its placement size (4:5 = 1080×1350, 9:16 = 1080×1920, 1:1 = 1080×1080) and label files predictably (`ad1-feed.jpg`, …). If you don't, just deliver the prompts and copy fields; the client/operator generates the images. --- ## Step 5: Present the 6 ads Output the set as a clean, readable **text/markdown spec** (no HTML). Lead with a 2-3 line brief recap (who this is for + the offer), then list the 6 ads, each in this shape: ``` Ad N: [concept name] - Format: [visual ad-type] · Angle: [copy angle] - Placement: Feed 4:5 (+ 9:16 Stories variant if running there) - Image prompt: [tool-agnostic prompt; composes for the overlay, ≤25% text for photo ads] - On-image text (if any): [headline/CTA to overlay on the image] - Primary Text: [hook in first ~125 chars] - Headline: [≤40 chars] · Description: [≤30 chars] · CTA: [Meta preset] - Why this ad: [one line: the angle and who it lands with] ``` Close with a short, client-friendly **"How to launch your 6 ads"** note: - Put all 6 ads in **one ad set**, same audience, same budget, and let Meta find the winner (6 is a sensible max for one ad set). - Suggest a **sensible starting daily budget** and to give it a few days before judging. - The winner is the ad getting the cheapest results / most clicks once each has had a fair, roughly-equal chance. - Refresh the creative when results fade (rising frequency / falling results). --- ## Copywriting rules (for captions and on-image text) For the full craft, see `references/ad-copy.md`: the copy-angle library, the HUMPS structure, the 5-rule gate, Schwartz/Cialdini principles, and the Meta personal-attributes policy. The essentials, which come from what actually converts in direct response (explanations matter more than the rule): 1. **Positive, reward-focused framing.** Lead with the upside, not insults to the reader. 2. **"The only," not "the best."** Specific positioning beats unprovable superlatives (and dodges policy issues). 3. **Numbers, not words,** in headlines ("2x," "$50," "12 spots"; not "double," "fifty dollars"). 4. **4th-5th grade reading level.** Short words, short sentences, punchy. Scanned on a phone in a feed. 5. **No AI tells.** No em-dash-itis, no "in today's fast-paced world," no generic filler. Sound like a person. 6. **One focal point per ad. 3-second comprehension.** If it takes longer to "get," it loses. 7. **Front-load proof.** A specific result or name early earns the read. 8. **Specific over generic.** "Booked 14 new patients in 30 days" beats "grow your practice." ### Caption structure (default template) ``` [Bold opening hook. One punchy sentence.] [Proof. A name + a specific result, or a rating/credential. 1-2 sentences.] [What they get. 3-5 concrete bullets.] [The action + any honest urgency. One sentence. Matches the landing page CTA.] ``` --- ## Compliance checklist (run before delivering) You're producing ads that run under the **client's** account, so policy compliance protects *them*: - [ ] No invented claims, stats, prices, or guarantees; everything traces to the client's materials. - [ ] No income/health/financial-outcome promises aimed at the viewer; any results shown are the client's own, framed honestly (add a disclaimer if the client uses one). - [ ] **Personal-attributes policy:** copy never implies you know the viewer's traits/situation (health, finances, age, etc.). Reframe "Are you broke/overweight?" → "Most people…" / "If [situation] sounds familiar…". (See `references/ad-copy.md`.) - [ ] People are either provided/rights-cleared photos or **generated representative** people; no impersonation of a specific real/identifiable person; no generated face passed off as a real testimonial/endorsement (real proof = real people). - [ ] Logos, screenshots, and reviews are real and the client's own (third-party rankings framed truthfully). - [ ] Copy fields within Meta limits; Primary Text hook in first ~125 chars. - [ ] CTA matches the landing page's action. - [ ] Reading level ~4th-5th grade; one focal point; 3-second comprehension. - [ ] On-image text covers ≤ ~25% of the image area on photo/product/lifestyle/UGC/founder ads (text-led formats exempt, but kept large and scannable). - [ ] The 6 ads are genuinely different angles (testable), not minor variants. ## Avoid - Defaulting to a "guru / dark-and-gold luxury" look when it doesn't fit the client. - Near-identical ads (kills the point of a 6-ad test); spread across formats *and* copy angles. - Over-saturated/HDR or obvious-AI/cartoon/stock-photo looks. - Cramming text; keep the creative scannable. - The full agency media-buying protocol in the client note; keep launch guidance simple. --- ## Reference files - **`references/ad-types.md`**: the visual format catalog (17 ad types + 10 concept frameworks + more proven styles), each de-niched with a "best for" note. Read when choosing the 6 visual formats in Step 3. - **`references/ad-copy.md`**: the copy craft. Angle library, HUMPS structure, the 5-rule gate, Schwartz/Cialdini principles, and the Meta personal-attributes policy. Read when picking copy angles (Step 3) and writing the fields (Step 4b). - **`references/image-prompts.md`**: how to write the image prompts. Skeleton, compose-for-overlay negative space, per-generator syntax (Midjourney/GPT-image/Ideogram/Imagen/Flux), AI-tell avoidance, and patterns per ad-type. Read in Step 4a. - **`references/creative-principles.md`**: supplementary design/creative principles (visual hierarchy, whitespace, monochrome backgrounds, CTA contrast, trust-badge & annotated-mockup formats, seasonal timing, lessons from real winners, and a free "study live winners" source list). Read alongside Steps 3-4. - **`references/placement-specs.md`**: every Meta placement. Dimensions, aspect ratios, safe zones, and copy-field character limits. Read when sizing ads (Step 4a) and writing copy fields (Step 4b). - **`references/example.md`**: a complete worked 6-ad build (Ridgeline Cold Brew) to model output quality and consistency. *(HTML packaging is paused; `assets/delivery-template.html` is retained but unused. To re-enable, restore the per-ad HTML mockup + assembled package and point Step 5 at the template.)*