# Ads

> Use when the user asks for ad copy, ad creative, paid campaign strategy, audience targeting, retargeting, or budget and testing plans for Google, Meta, LinkedIn, or similar platforms.

- Skill: `marcus-at-localhost/ads` (Agent Skill)
- Install (CLI): `npx skillmds@latest add marcus-at-localhost/ads`
- Raw SKILL.md: https://api.skillmd.com/api/skills/marcus-at-localhost/ads/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: marcus-at-localhost (https://skillmd.com/u/marcus-at-localhost)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/marcus-at-localhost/ads

---


# Ad Creative & Copy Generation

You are the advertising engine for `/marketkit:ads <url>`. You generate complete ad campaigns across platforms with full copy variations, audience targeting strategies, budget recommendations, and creative specifications. Every ad is ready for production or handoff to a media buyer.

## When This Skill Is Invoked

The user runs `/marketkit:ads <url>`. Fetch the target site to understand the business, product, audience, and value propositions. Generate complete campaign structures across relevant platforms. Output everything to AD-CAMPAIGNS.md.

---

## Phase 0: Grounding and Business Context

1. Read `${CLAUDE_PLUGIN_ROOT}/references/grounding.md` and load any `_grounding/` folder it finds. Claim rules bind ad copy especially hard — ad platforms reject unsupported superlatives, and regulated industries police them.
2. Read `${CLAUDE_PLUGIN_ROOT}/references/business-context.md`, resolve the business type, and load the single matching example pack. It supplies the retargeting creative angles and the channels worth funding.
3. Read `${CLAUDE_PLUGIN_ROOT}/references/output-location.md`. Normalize the target URL to its exact non-`www` domain and resolve today's output path now:

   ```
   python "${CLAUDE_PLUGIN_ROOT}/scripts/resolve_audit_output.py" --purpose AD-CAMPAIGNS --scope <domain> --extension md
   ```

   Use `python3` on macOS/Linux. Retain `audit_dir` for the Cross-Skill Integration lookups below, and the exact `output_path` for the final write.

Then resolve optional report metadata from the same working directory:

```
python "${CLAUDE_PLUGIN_ROOT}/scripts/resolve_report_metadata.py" --toolkit "Market Context Kit" --host <exact active host> --provider <exact active LLM provider> --model <exact active model id>
```

Never guess a runtime value. Handle the three outcomes exactly as `${CLAUDE_PLUGIN_ROOT}/references/output-location.md` specifies: `null` means write no metadata block at all, a JSON object means reproduce its fields verbatim as YAML front matter at the very top of the report, and an error means stop rather than invent or drop attribution.

Read `${CLAUDE_PLUGIN_ROOT}/references/webfetch-artifacts.md` before quoting page copy or asserting anything about a page's structure, staleness, or absence. Page text used as evidence must come from `scripts/analyze_page.py` or another real parser — never an ad-hoc regex HTML-to-text script — and must be text a visitor actually sees, not commented-out, hidden, or attribute-only markup.

Write ad copy in the language of the market being targeted, and price every recommendation in that market's currency.

---

## Phase 1: Campaign Foundation

### 1.1 Business and Offer Analysis

Before writing any ads, establish:

| Context Element | Source | Purpose |
| --- | --- | --- |
| **Product/Service** | URL analysis | Core of all ad messaging |
| **Commercial model** | Pricing, RFQ, contact, catalog, distributor, or enrollment path | Determines funnel depth, CTA, and ad strategy |
| **Target audience** | Site copy, user input | Audience targeting parameters |
| **Unique selling proposition** | Homepage, features | Primary ad differentiation |
| **Conversion action** | CTAs on site | What the ad should drive toward |
| **Social proof** | Testimonials, numbers | Trust elements for ad copy |
| **Objections** | FAQ, competitor analysis | Objection-handling ad angles |
| **Competitors** | Industry knowledge | Competitive positioning angles |

### 1.2 Campaign Objective Mapping

Map the business goal to the right campaign objective:

| Business Goal | Campaign Objective | Primary Platform | Ad Format |
| --- | --- | --- | --- |
| Brand awareness | Reach / Impressions | Meta, YouTube, TikTok | Video, Display |
| Lead generation | Lead Gen / Conversions | Meta, LinkedIn, Google | Lead forms, Landing pages |
| Trial signups | Conversions | Google, Meta, LinkedIn | Search, Landing pages |
| E-commerce sales | Sales / ROAS | Google Shopping, Meta, TikTok | Shopping, Carousel |
| App installs | App Install | Meta, Google, TikTok | App install ads |
| Event registration | Conversions | Meta, LinkedIn | Event ads, Landing pages |
| Content promotion | Engagement / Traffic | Meta, Twitter, LinkedIn | Boosted posts, Video |
| RFQ / technical inquiry | Lead Gen / Conversions | Google Search, LinkedIn | Search, Lead forms, Landing pages |
| Distributor or catalog demand | Search / Conversions | Google Search, Microsoft Ads | Search, Call, Landing pages |
| Regulated buyer education | Lead Gen / Traffic | LinkedIn, Google Search, trade media | Document ads, Search, Sponsored content |
| Course enrollment | Conversions / Lead Gen | Google, LinkedIn, Meta | Search, Event ads, Landing pages |

---

## Phase 2: Platform-Specific Ad Generation

These are platform mechanics — formats, character limits, specs — for every platform the suite covers. Generate ads only for the platforms the business should actually be on. The budget allocation table in Phase 4.1 sets that: it puts consumer-video platforms at 0% for industrial, distributor and regulated businesses, whose spend belongs on search, LinkedIn and trade media instead.

Creative angles and voice come from the example pack loaded in Phase 0, not from the sample copy in this section.

### 2.1 Google Ads

**Search Ads (Responsive Search Ads):**

Character limits:

- Headlines: Up to 15 headlines, 30 characters each
- Descriptions: Up to 4 descriptions, 90 characters each
- Display URL path: 2 fields, 15 characters each

Generate at least:

- 10 headlines covering these angles:
  - Brand name + value prop
  - Pain point + solution
  - Specific benefit + number
  - Social proof headline
  - Urgency / offer headline
  - Question headline
  - How-to headline
  - Comparison headline
  - Feature-focused headline
  - Action-oriented headline
- 4 descriptions covering:
  - Value proposition + CTA
  - Features + benefits
  - Social proof + trust
  - Urgency + offer details

**Keyword Strategy:**

- 10-15 high-intent keywords per ad group
- Match types: mix of exact, phrase, and broad match modified
- Negative keywords list (10-20 irrelevant terms to exclude)
- Organize into 3-5 ad groups by theme

**Performance Max Campaigns:**

- Asset groups organized by audience segment
- Headline variations (15 short + 5 long)
- Description variations (5)
- Image specs: 1200x1200 (square), 1200x628 (landscape), 960x1200 (portrait)
- Video assets: 10-30 seconds recommended
- Audience signals: custom segments, in-market, affinity

### 2.2 Meta Ads (Facebook + Instagram)

**Ad Formats and Specs:**

| Format | Placement | Image Spec | Video Spec | Text Limits |
| --- | --- | --- | --- | --- |
| Single Image | Feed, Stories, Reels | 1080x1080 (feed), 1080x1920 (stories) | N/A | Primary: 125 chars, Headline: 40, Description: 30 |
| Video | Feed, Stories, Reels | N/A | 1080x1080 or 1080x1920, <240 min | Same as image |
| Carousel | Feed, Stories | 1080x1080 per card, 2-10 cards | 1080x1080, <240 min | Same as image |
| Collection | Feed | 1200x628 cover | 1200x628 cover | Same as image |

**Generate for each ad concept:**

- Primary text (3 variations: short, medium, long)
- Headline (5 variations)
- Description (3 variations)
- CTA button (select from: Learn More, Sign Up, Shop Now, Get Offer, Book Now, Download, Contact Us)

**Ad Copy Angles (generate 5-10 per campaign):**

```
Angle 1: PAIN POINT
  "Tired of [specific frustration]? [Product] eliminates [pain] so you can
   focus on [desired outcome]."

Angle 2: SOCIAL PROOF
  "[Number] [audience] already use [product] to [benefit].
   See why [specific customer] calls it '[quote].'"

Angle 3: BEFORE/AFTER
  "Before [product]: [painful state]
   After [product]: [desired state]
   The difference? [Unique mechanism]."

Angle 4: OBJECTION HANDLING
  "Think [product type] is [common objection]? [Counter with evidence].
   Try it free for [trial period] — no [risk]."
  For RFQ/industrial: "Need [standard/application] proof before you specify? [Brand] provides [certification/test/data] and direct expert review."

Angle 5: URGENCY/SCARCITY
  "[Limited offer detail]. [Number] spots left this month.
   [Product] helps you [benefit] — lock in [offer] before [deadline]."

Angle 6: CURIOSITY
  "The [industry] secret that [specific result] (most [audience] miss this)."

Angle 7: DIRECT BENEFIT
  "Get [specific outcome] in [timeframe] with [product].
   No [common objection]. Just [benefit]."

Angle 8: COMPARISON
  "Still using [competitor/old way]? [Product] gives you [advantage]
   at [fraction/price benefit]."

Angle 9: TESTIMONIAL
  "'[Specific quote from customer about specific result]'
   — [Customer name], [title/company]"

Angle 10: HOW-TO
  "How to [achieve desired outcome] in 3 steps:
   1. [Step using product]  2. [Step]  3. [Result]"
```

### 2.3 LinkedIn Ads

**Ad Formats:**

- Sponsored Content (single image, video, carousel)
- Message Ads (InMail)
- Text Ads
- Conversation Ads
- Document Ads (PDF carousel)

**Character Limits:**

- Sponsored Content: Intro text 600 chars, Headline 200 chars
- Message Ads: Subject 60 chars, Body 1,500 chars
- Text Ads: Headline 25 chars, Description 75 chars

**LinkedIn-Specific Copy Angles:**

- Professional development: "Level up your [skill]"
- Industry insight: "[Industry] is changing. Here's how to stay ahead."
- ROI-focused: "Companies using [product] see [X]% improvement in [metric]"
- Peer comparison: "Your competitors are already using [approach]. Are you?"
- Thought leadership: "[Report/whitepaper] reveals [surprising finding]"

**Targeting Options to Recommend:**

- Job title targeting (decision makers)
- Company size
- Industry
- Seniority level
- Skills and interests
- Matched audiences (website retargeting, email lists)
- Lookalike audiences

### 2.4 TikTok Ads

**Ad Formats:**

- In-Feed Ads (video)
- TopView (full-screen takeover)
- Branded Hashtag Challenge
- Spark Ads (boosted organic content)

**Specs:**

- Video: 9:16 vertical, 5-60 seconds (9-15 seconds optimal)
- Resolution: 720x1280 minimum
- File size: Up to 500 MB
- Ad text: 100 characters
- CTA buttons: Learn More, Shop Now, Sign Up, Download, Contact Us

**TikTok Creative Principles:**

- First 3 seconds determine watch rate (hook immediately)
- Native aesthetic outperforms polished ads (look organic)
- Use trending sounds and music
- Text overlays for sound-off viewing
- Face-to-camera content outperforms product-only
- Keep it fast-paced with jump cuts

**TikTok Script Template:**

```
[0-3 sec] HOOK: "Wait — you're still doing [old way]?"
[3-10 sec] PROBLEM: Show the frustration / pain point visually
[10-20 sec] SOLUTION: Introduce product with quick demo
[20-25 sec] PROOF: Flash testimonial, number, or result
[25-30 sec] CTA: the next step, in the platform's own idiom
```

### 2.5 Twitter/X Ads

**Ad Formats:**

- Promoted Tweets (text, image, video, carousel)
- Follower Ads
- Amplify (video pre-roll)

**Character Limits:**

- Tweet text: 280 characters (but 100-150 performs best)
- Image: 1200x675 or 1080x1080
- Video: up to 2:20, but 6-15 seconds optimal

**Twitter Ad Copy Style:**

- Conversational, not corporate
- Hot take + solution format
- Thread-style ads (first tweet is the hook, rest is the story)
- Engage in trending conversations with brand angle

---

## Phase 3: Retargeting Sequences

### 3.1 Three-Stage Retargeting Funnel

```
STAGE 1: AWARENESS (Cold Audience)
  Audience: Lookalikes, interest-based, broad targeting
  Goal: Introduce the brand and value proposition
  Ad Type: Educational content, how-to videos, thought leadership
  Budget: 40% of total ad spend
  Metrics: CPM, reach, video view rate, landing page views

STAGE 2: CONSIDERATION (Warm Audience)
  Audience: Website visitors (7-30 days), video viewers (50%+),
            social engagers, email list
  Goal: Build trust and handle objections
  Ad Type: Case studies, testimonials, demos, comparison content
  Budget: 35% of total ad spend
  Metrics: CPC, CTR, landing page conversion rate

STAGE 3: CONVERSION (Hot Audience)
  Audience: Cart abandoners, pricing/RFQ/contact page visitors, trial users,
            datasheet downloaders, course schedule viewers, high-intent page visitors
  Goal: Drive the final conversion action
  Ad Type: Direct offer, RFQ CTA, expert consultation, enrollment reminder, authentic urgency, guarantee, limited-time discount
  Budget: 25% of total ad spend
  Metrics: CPA, ROAS, conversion rate
```

### 3.2 Retargeting Ad Sequences

For each stage, generate 3-5 ad variations. The creative angles per stage are in the loaded example pack — `Ads — retargeting creative` in either pack.

The stage logic is shared; the angles are not. Discount, trial and countdown angles convert one audience and disqualify the advertiser with the other, where the equivalent closing angles are specification response time, documentation availability, sample dispatch and stock.

---

## Phase 4: Budget and Performance

### 4.1 Budget Allocation Recommendations

**By Platform (adjust based on business type):**

| Business Type | Google | Meta | LinkedIn | TikTok | Other |
| --- | --- | --- | --- | --- | --- |
| SaaS (B2B) | 30% | 25% | 30% | 5% | 10% |
| SaaS (B2C) | 25% | 40% | 5% | 20% | 10% |
| E-commerce | 30% | 40% | 0% | 20% | 10% |
| Agency | 20% | 30% | 35% | 5% | 10% |
| Local Business | 50% | 35% | 0% | 5% | 10% |
| Creator/Course | 10% | 40% | 10% | 30% | 10% |
| B2B Industrial / Manufacturing | 45% | 5% | 35% | 0% | 15% (trade media/directories) |
| Technical Supplier / Distributor | 55% | 10% | 20% | 0% | 15% (Microsoft/search partners) |
| Regulated / Compliance B2B | 35% | 5% | 45% | 0% | 15% (trade media/webinars) |
| Training / Academy | 30% | 20% | 30% | 5% | 15% (industry associations) |

**By Funnel Stage:**

- Awareness: 40% (audience building)
- Consideration: 35% (retargeting warm leads)
- Conversion: 25% (driving purchases/signups)

### 4.2 ROAS Benchmarks by Industry

| Industry                | Acceptable ROAS      | Good ROAS | Excellent ROAS |
| ----------------------- | -------------------- | --------- | -------------- |
| E-commerce              | 2:1                  | 4:1       | 8:1+           |
| SaaS                    | 3:1                  | 5:1       | 10:1+          |
| Lead Gen                | 2:1 (by lead value)  | 4:1       | 7:1+           |
| Courses                 | 3:1                  | 6:1       | 10:1+          |
| Local Services          | 2:1                  | 3:1       | 5:1+           |
| Industrial B2B Lead Gen | 2:1 (pipeline value) | 4:1       | 6:1+           |
| Regulated B2B           | 2:1 (pipeline value) | 3:1       | 5:1+           |

**CPA Benchmarks — US market, USD, approximate:**

| Platform | B2B Lead | B2C Lead | E-commerce Purchase | SaaS Trial |
| --- | --- | --- | --- | --- |
| Google Search | $30-80 | $10-30 | $15-40 | $20-60 |
| Meta | $20-60 | $5-20 | $10-30 | $15-45 |
| LinkedIn | $50-150 | N/A | N/A | $40-100 |
| TikTok | $15-40 | $3-15 | $8-25 | $10-35 |
| Trade Media / Directories | $80-250 | N/A | N/A | N/A |

Convert and caveat before quoting these:

- **Market.** Auction density differs by country. German-language B2B search in narrow industrial verticals often runs lower CPC than the US equivalent but with a fraction of the volume; broad EU consumer auctions frequently run cheaper than US ones. Never present a US figure as the client's expected cost.
- **Currency.** Quote in the client's currency and say which market the source figure came from.
- **Buying model.** Trade media, industry portals and directories are usually sold per insertion, per issue or per period, not per click. A CPA figure for those is derived after the fact, not bid.
- **Lead value.** High CPA is not automatically bad. A €400 industrial lead that closes a five-year supply relationship outperforms a €15 consumer lead. Judge against lead value and pipeline, and say so instead of scoring the number alone.

### 4.3 Landing Page Alignment

For each ad campaign, verify landing page alignment:

**Alignment Checklist:**

- Does the landing page headline match the ad headline?
- Does the landing page deliver on the ad's promise?
- Is the CTA on the landing page consistent with the ad's CTA?
- Is the visual style consistent between ad and page?
- Is the landing page mobile-optimized (critical for social ads)?
- Does the landing page load in under 3 seconds?
- Is there one clear conversion action (not multiple competing CTAs)?

**Message Match Score:** Rate the alignment between each ad and its destination page 1-10. Flag any score below 7.

---

## Phase 5: Ad Variations and Testing

### 5.1 Variation Generation

For each ad concept, generate:

- 5 headline variations (different angles, lengths, emotions)
- 3 primary text variations (short: 1-2 sentences, medium: 3-4 sentences, long: 5-7 sentences)
- 3 CTA variations
- 3 visual concept descriptions (for designer handoff)

### 5.2 Testing Framework

**Test Priority Order:**

1. Audience (who you target matters most)
2. Offer (what you offer: free trial vs demo vs discount vs RFQ vs datasheet vs expert review vs enrollment)
3. Creative concept (the big idea and visual approach)
4. Headline (specific wording of the hook)
5. Body copy (supporting text)
6. CTA (button text and color)

**Testing Rules:**

- Test one variable at a time
- Run tests for at least 3-5 days or 1,000 impressions per variant
- Statistical significance threshold: 95%
- Kill underperformers at 2x the CPA target
- Scale winners by 20% budget increments (not 2x overnight)

---

## Output Format: MARKETKIT - AD-CAMPAIGNS - <domain>.md

Write the full output to the exact `output_path` resolved in Phase 0:

```markdown
[YAML front matter from the Phase 0 metadata resolver — exact shape in references/output-location.md. Omit the whole block when the resolver returned null.]

# Ad Campaigns: [Business Name]

**URL:** [url] \
**Date:** [current date] \
**Business Type:** [type] \
**Primary Objective:** [objective] \
**Recommended Platforms:** [platforms]

---

## Campaign Strategy Overview

[2-3 paragraph overview of the ad strategy]

## Audience Targeting

[Detailed audience definitions for each platform]

## Campaign 1: [Platform Name]

### Ad Group 1: [Theme]

**Targeting:** [audience parameters] \
**Budget:** [recommended daily/monthly] \
**Objective:** [campaign objective]

#### Ad Variation 1

- **Headline:** [text]
- **Primary Text:** [text]
- **Description:** [text]
- **CTA:** [button text]
- **Visual:** [creative description]
- **Landing Page:** [URL/page]

[Repeat for each variation]

[Repeat for each ad group and platform]

## Retargeting Strategy

[Three-stage funnel with ad variations]

## Budget Allocation

[Platform and funnel stage breakdown]

## Testing Plan

[Prioritized A/B tests]

## Performance Benchmarks

[ROAS and CPA targets by platform]

## Landing Page Alignment

[Message match assessment and recommendations]

## Creative Brief for Designers

[Visual specifications, brand guidelines, image/video requirements]
```

---

## Terminal Output

```
=== AD CAMPAIGNS GENERATED ===

Business: [name]
Platforms: [list]
Total Ad Variations: [count]

Campaign Structure:
  Google Ads: [X] ad groups, [X] variations
  Meta Ads: [X] ad sets, [X] variations
  LinkedIn: [X] campaigns, [X] variations

Budget Recommendation: [X,XXX]/month
Expected CPA: [XX]-[XX]
Target ROAS: [X]:1

Full campaigns saved to: [resolved output_path, e.g. Audit/MARKETKIT - AD-CAMPAIGNS - example.com.md]
```

---

## Cross-Skill Integration

Look only inside the Phase 0 `audit_dir`, for the exact same domain scope. Never search older audit folders.

- If `MARKETKIT - COPY-SUGGESTIONS - <domain>.md` exists, reuse value propositions and messaging angles
- If `MARKETKIT - COMPETITOR-REPORT - <domain>.md` exists, use competitor positioning for comparison ads
- If `MARKETKIT - FUNNEL-ANALYSIS - <domain>.md` exists, align ad funnel stages to conversion path
- If `MARKETKIT - SOCIAL-CALENDAR - <domain>.md` exists, promote top organic content as Spark/boosted ads
- Suggest follow-up: `/marketkit:funnel` for conversion path, `/marketkit:landing` for page optimization

