Ad to landing page auditor

Analyze the message match between your ads and landing pages.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/ads/composites/ad-to-landing-page-auditor#main ~/.claude/skills/ad-to-landing-page-auditor

For one project only, change the path to .claude/skills/ad-to-landing-page-auditor.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text216 lines
ad-to-landing-page-auditor/SKILL.md216 lines6.7 KBpushed 96d agoRawView on GitHub

Ad-to-Landing Page Auditor

The #1 reason ads get clicks but not conversions: the landing page doesn't deliver on the ad's promise. This skill audits the full click path — from ad copy to landing page experience — and flags every disconnect.

Core principle: A great ad with a mismatched landing page is worse than a mediocre ad with a matched one. Message match is the single biggest conversion lever most startups ignore.

When to Use

  • "Why are my ads getting clicks but no conversions?"
  • "Audit my ad-to-landing page flow"
  • "Check message match on our campaigns"
  • "My conversion rate is low — help me figure out why"
  • "Review our landing pages for our ad campaigns"

Phase 0: Intake

  1. Ad copy — For each ad, provide:
    • Headline(s)
    • Body / description text
    • CTA text
    • Platform (Google Search / Meta / LinkedIn)
  2. Landing page URLs — The URL each ad points to
  3. Conversion goal — What should happen after someone clicks? (Demo / Trial / Purchase / Download)
  4. Known conversion rates? — Current click → conversion rate per ad/LP (if available)

If the user has a CSV export from their ad platform, parse that instead.

Phase 1: Ad Inventory

Parse the provided ads into:

Ad ID Platform Headline Body/Description CTA Landing Page URL Conv Rate (if known)

Phase 2: Landing Page Audit

For each unique landing page URL, fetch the page content:

fetch_webpage: [landing_page_url]

If fetch_webpage is not available, use curl to retrieve the page HTML.

Extract and score:

2A: Content Elements

Element Found? Content
Hero headline [Y/N] "[Text]"
Subheadline [Y/N] "[Text]"
Primary CTA [Y/N] "[Button text]"
CTA above fold [Y/N]
Social proof [Y/N] [Logos / testimonials / metrics]
Benefit list [Y/N] [Key benefits listed]
Form / Sign-up [Y/N] [Field count: N]
Video [Y/N]
Trust signals [Y/N] [Security badges, guarantees]

2B: Message Match Scoring

For each ad → landing page pair, score on:

Dimension Score (1-10) Criteria
Promise continuity [X] Does the LP headline deliver on the ad's promise?
Language match [X] Does the LP use the same words/phrases as the ad?
Visual continuity [X] Does the LP feel like a continuation of the ad? (Not assessable for search)
CTA alignment [X] Does the LP's ask match what the ad implied?
Specificity match [X] If the ad was specific ("for sales teams"), is the LP specific too?
Emotional match [X] If the ad used fear/urgency, does the LP carry that forward?

Message Match Score: [Average/60]

Scoring Guide

Score Rating Meaning
50-60 Excellent Strong match — LP delivers on every ad promise
40-49 Good Minor disconnects but overall coherent
30-39 Needs work Noticeable gaps — visitor has to hunt for relevance
20-29 Poor Ad and LP feel like different products
Below 20 Critical Complete mismatch — fix immediately

Phase 3: Conversion Friction Analysis

Beyond message match, assess landing page conversion friction:

Friction Type Check Status
Load time Does the page feel heavy/slow? (Asset count proxy) [Fast/Slow/Unknown]
Form length How many fields before conversion? [N fields] — [Appropriate/Too many]
CTA clarity Is there one clear CTA or competing actions? [Clear/Cluttered]
Above-fold conversion Can someone convert without scrolling? [Yes/No]
Social proof placement Is proof near the CTA? [Yes/No]
Navigation distraction Does the LP have full site nav? (Should be minimal) [Minimal/Full nav]
Mobile experience Any mobile-unfriendly elements? [Good/Issues]

Phase 4: Output Format

# Ad-to-Landing Page Audit — [Product/Client] — [DATE]

Ads audited: [N]
Unique landing pages: [N]
Platform(s): [Google / Meta / LinkedIn]
Overall message match: [Score/60] — [Rating]

---

## Executive Summary

[3-4 sentences: Overall finding, biggest disconnect, top recommendation, estimated conversion impact]

---

## Audit Results by Ad → Landing Page Pair

### Ad 1: "[Ad headline excerpt]"
**Platform:** [Google Search / Meta / LinkedIn]
**Ad copy:**
> Headline: "[text]"
> Body: "[text]"
> CTA: "[text]"

**Landing page:** [URL]
> LP headline: "[text]"
> LP subhead: "[text]"
> LP CTA: "[button text]"

**Message Match Score: [X/60] — [Rating]**

| Dimension | Score | Issue |
|-----------|-------|-------|
| Promise continuity | [X/10] | [Specific finding] |
| Language match | [X/10] | [Specific finding] |
| CTA alignment | [X/10] | [Specific finding] |
| Specificity match | [X/10] | [Specific finding] |
| Emotional match | [X/10] | [Specific finding] |

**Disconnect found:** [Specific description of mismatch]
**Recommended fix:** [Specific change to ad or LP]

### Ad 2: ...

---

## Landing Page Friction Report

### [Landing Page URL]
| Friction Point | Status | Impact | Fix |
|---------------|--------|--------|-----|
| [Friction] | [Red/Yellow/Green] | [High/Med/Low] | [Specific fix] |

---

## Priority Fixes

### Critical (Fix This Week)
1. **[Ad/LP pair]:** [Specific mismatch] → [Specific fix]
   - Est. conversion impact: [X% improvement]

### Important (Fix This Month)
2. **[Issue]:** [Fix]

### Nice-to-Have
3. **[Issue]:** [Fix]

---

## Rewrite Suggestions

### For [Ad or LP with worst match]:

**Current ad headline:** "[current]"
**Suggested ad headline:** "[rewrite that matches LP]"

OR

**Current LP headline:** "[current]"
**Suggested LP headline:** "[rewrite that matches ad]"

Save to ad-lp-audit-[YYYY-MM-DD].md in the current working directory (or user-specified path).

Cost

Component Cost
Landing page fetching Free
Analysis Free (LLM reasoning)
Total Free

Tools Required

  • fetch_webpage or curl — for landing page analysis
  • No API keys required

Trigger Phrases

  • "Audit my ad-to-landing page match"
  • "Why is my conversion rate so low?"
  • "Check message match on our campaigns"
  • "Do our landing pages match our ads?"
  • "Run a CRO audit on our ad funnels"
1---
2name: ad-to-landing-page-auditor
3description: >
4 Analyze the message match between your ads and landing pages. Checks if the promise
5 in the ad copy carries through to the landing page headline, body, and CTA. Flags
6 disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.
7tags: [ads]
8---
9 
10# Ad-to-Landing Page Auditor
11 
12The #1 reason ads get clicks but not conversions: the landing page doesn't deliver on the ad's promise. This skill audits the full click path — from ad copy to landing page experience — and flags every disconnect.
13 
14**Core principle:** A great ad with a mismatched landing page is worse than a mediocre ad with a matched one. Message match is the single biggest conversion lever most startups ignore.
15 
16## When to Use
17 
18- "Why are my ads getting clicks but no conversions?"
19- "Audit my ad-to-landing page flow"
20- "Check message match on our campaigns"
21- "My conversion rate is low — help me figure out why"
22- "Review our landing pages for our ad campaigns"
23 
24## Phase 0: Intake
25 
261. **Ad copy** — For each ad, provide:
27 - Headline(s)
28 - Body / description text
29 - CTA text
30 - Platform (Google Search / Meta / LinkedIn)
312. **Landing page URLs** — The URL each ad points to
323. **Conversion goal** — What should happen after someone clicks? (Demo / Trial / Purchase / Download)
334. **Known conversion rates?** — Current click → conversion rate per ad/LP (if available)
34 
35If the user has a CSV export from their ad platform, parse that instead.
36 
37## Phase 1: Ad Inventory
38 
39Parse the provided ads into:
40 
41| Ad ID | Platform | Headline | Body/Description | CTA | Landing Page URL | Conv Rate (if known) |
42|-------|----------|----------|-----------------|-----|-----------------|---------------------|
43 
44## Phase 2: Landing Page Audit
45 
46For each unique landing page URL, fetch the page content:
47 
48```
49fetch_webpage: [landing_page_url]
50```
51 
52If `fetch_webpage` is not available, use `curl` to retrieve the page HTML.
53 
54Extract and score:
55 
56### 2A: Content Elements
57 
58| Element | Found? | Content |
59|---------|--------|---------|
60| **Hero headline** | [Y/N] | "[Text]" |
61| **Subheadline** | [Y/N] | "[Text]" |
62| **Primary CTA** | [Y/N] | "[Button text]" |
63| **CTA above fold** | [Y/N] | — |
64| **Social proof** | [Y/N] | [Logos / testimonials / metrics] |
65| **Benefit list** | [Y/N] | [Key benefits listed] |
66| **Form / Sign-up** | [Y/N] | [Field count: N] |
67| **Video** | [Y/N] | — |
68| **Trust signals** | [Y/N] | [Security badges, guarantees] |
69 
70### 2B: Message Match Scoring
71 
72For each ad → landing page pair, score on:
73 
74| Dimension | Score (1-10) | Criteria |
75|-----------|-------------|----------|
76| **Promise continuity** | [X] | Does the LP headline deliver on the ad's promise? |
77| **Language match** | [X] | Does the LP use the same words/phrases as the ad? |
78| **Visual continuity** | [X] | Does the LP feel like a continuation of the ad? (Not assessable for search) |
79| **CTA alignment** | [X] | Does the LP's ask match what the ad implied? |
80| **Specificity match** | [X] | If the ad was specific ("for sales teams"), is the LP specific too? |
81| **Emotional match** | [X] | If the ad used fear/urgency, does the LP carry that forward? |
82 
83**Message Match Score: [Average/60]**
84 
85### Scoring Guide
86 
87| Score | Rating | Meaning |
88|-------|--------|---------|
89| 50-60 | Excellent | Strong match — LP delivers on every ad promise |
90| 40-49 | Good | Minor disconnects but overall coherent |
91| 30-39 | Needs work | Noticeable gaps — visitor has to hunt for relevance |
92| 20-29 | Poor | Ad and LP feel like different products |
93| Below 20 | Critical | Complete mismatch — fix immediately |
94 
95## Phase 3: Conversion Friction Analysis
96 
97Beyond message match, assess landing page conversion friction:
98 
99| Friction Type | Check | Status |
100|--------------|-------|--------|
101| **Load time** | Does the page feel heavy/slow? (Asset count proxy) | [Fast/Slow/Unknown] |
102| **Form length** | How many fields before conversion? | [N fields] — [Appropriate/Too many] |
103| **CTA clarity** | Is there one clear CTA or competing actions? | [Clear/Cluttered] |
104| **Above-fold conversion** | Can someone convert without scrolling? | [Yes/No] |
105| **Social proof placement** | Is proof near the CTA? | [Yes/No] |
106| **Navigation distraction** | Does the LP have full site nav? (Should be minimal) | [Minimal/Full nav] |
107| **Mobile experience** | Any mobile-unfriendly elements? | [Good/Issues] |
108 
109## Phase 4: Output Format
110 
111```markdown
112# Ad-to-Landing Page Audit — [Product/Client] — [DATE]
113 
114Ads audited: [N]
115Unique landing pages: [N]
116Platform(s): [Google / Meta / LinkedIn]
117Overall message match: [Score/60] — [Rating]
118 
119---
120 
121## Executive Summary
122 
123[3-4 sentences: Overall finding, biggest disconnect, top recommendation, estimated conversion impact]
124 
125---
126 
127## Audit Results by Ad → Landing Page Pair
128 
129### Ad 1: "[Ad headline excerpt]"
130**Platform:** [Google Search / Meta / LinkedIn]
131**Ad copy:**
132> Headline: "[text]"
133> Body: "[text]"
134> CTA: "[text]"
135 
136**Landing page:** [URL]
137> LP headline: "[text]"
138> LP subhead: "[text]"
139> LP CTA: "[button text]"
140 
141**Message Match Score: [X/60] — [Rating]**
142 
143| Dimension | Score | Issue |
144|-----------|-------|-------|
145| Promise continuity | [X/10] | [Specific finding] |
146| Language match | [X/10] | [Specific finding] |
147| CTA alignment | [X/10] | [Specific finding] |
148| Specificity match | [X/10] | [Specific finding] |
149| Emotional match | [X/10] | [Specific finding] |
150 
151**Disconnect found:** [Specific description of mismatch]
152**Recommended fix:** [Specific change to ad or LP]
153 
154### Ad 2: ...
155 
156---
157 
158## Landing Page Friction Report
159 
160### [Landing Page URL]
161| Friction Point | Status | Impact | Fix |
162|---------------|--------|--------|-----|
163| [Friction] | [Red/Yellow/Green] | [High/Med/Low] | [Specific fix] |
164 
165---
166 
167## Priority Fixes
168 
169### Critical (Fix This Week)
1701. **[Ad/LP pair]:** [Specific mismatch] → [Specific fix]
171 - Est. conversion impact: [X% improvement]
172 
173### Important (Fix This Month)
1742. **[Issue]:** [Fix]
175 
176### Nice-to-Have
1773. **[Issue]:** [Fix]
178 
179---
180 
181## Rewrite Suggestions
182 
183### For [Ad or LP with worst match]:
184 
185**Current ad headline:** "[current]"
186**Suggested ad headline:** "[rewrite that matches LP]"
187 
188OR
189 
190**Current LP headline:** "[current]"
191**Suggested LP headline:** "[rewrite that matches ad]"
192```
193 
194Save to `ad-lp-audit-[YYYY-MM-DD].md` in the current working directory (or user-specified path).
195 
196## Cost
197 
198| Component | Cost |
199|-----------|------|
200| Landing page fetching | Free |
201| Analysis | Free (LLM reasoning) |
202| **Total** | **Free** |
203 
204## Tools Required
205 
206- **fetch_webpage** or **curl** — for landing page analysis
207- No API keys required
208 
209## Trigger Phrases
210 
211- "Audit my ad-to-landing page match"
212- "Why is my conversion rate so low?"
213- "Check message match on our campaigns"
214- "Do our landing pages match our ads?"
215- "Run a CRO audit on our ad funnels"
216 

Discussion

Alternatives

Also in Landing page copy