Communitygithub.com

gooseworks-ai/goose-skills

Analyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.

¿Qué es goose-skills?

goose-skills is a Claude Code agent skill that analyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gooseworks-ai/goose-skills/tree/HEAD/skills/ads/composites/ad-to-landing-page-auditor

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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 IDPlatformHeadlineBody/DescriptionCTALanding Page URLConv 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

ElementFound?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:

DimensionScore (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

ScoreRatingMeaning
50-60ExcellentStrong match — LP delivers on every ad promise
40-49GoodMinor disconnects but overall coherent
30-39Needs workNoticeable gaps — visitor has to hunt for relevance
20-29PoorAd and LP feel like different products
Below 20CriticalComplete mismatch — fix immediately

Phase 3: Conversion Friction Analysis

Beyond message match, assess landing page conversion friction:

Friction TypeCheckStatus
Load timeDoes the page feel heavy/slow? (Asset count proxy)[Fast/Slow/Unknown]
Form lengthHow many fields before conversion?[N fields] — [Appropriate/Too many]
CTA clarityIs there one clear CTA or competing actions?[Clear/Cluttered]
Above-fold conversionCan someone convert without scrolling?[Yes/No]
Social proof placementIs proof near the CTA?[Yes/No]
Navigation distractionDoes the LP have full site nav? (Should be minimal)[Minimal/Full nav]
Mobile experienceAny 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

ComponentCost
Landing page fetchingFree
AnalysisFree (LLM reasoning)
TotalFree

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"

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

gooseworks-ai/goose-skills

Burned-in captions for a finished vertical video, three kinds. transcribe.py gets word timings from the video's own audio through the GooseWorks proxy (fal Whisper, bills the Ads agent, cents); captions.py burns one to three words at a time with Pillow + ffmpeg (no libass needed), either pinned to a split-screen seam (plate 25% above / 75% below) or at a fixed height, in a plate, outline or one-word serif style, with an optional red hook card; plates.py burns per-beat caption blocks (black, one union silhouette, placed in the emptiest band) for formats with no voice. The last caption (the CTA) holds to the final frame. Use as the last step of any video ad.

gooseworks-ai/goose-skills

Assemble a cartoon / animated / hand-crafted music-video ad from a config — a sung song carries the whole narrative while N per-bar i2v clips (one recurring animated character, one look pack) are each cut to their BAR window from librosa beat-tracking and hard-concatenated on the bar, VEED-whisper white bold-sans captions in the BOTTOM third (Alignment 2, above the logo bug, no pill) burned from the song's word timings re-spelled against the locked lyrics, a persistent brand logo bug held over the body (suppressed on the end card), and closed on a solid-brand-color PIL end card with the song still playing under it — never AI-rendered text. This is the FREE deterministic assembly stage (cut-to-bar + hard concat + logo bug + captions + end card + song mux); the song, character, keyframes, and clips come from create-music-elevenlabs / create-image-fal / create-video-fal. Use for the cartoon-music-video format.

gooseworks-ai/goose-skills

Assemble a cinematic live-action-style music-video ad from a config — an original sung anthem carries the whole narrative while N 35mm-film-look i2v clips are each cut to their lyric window and hard-concatenated on the beat as a 3-act arc, the anthem muxed at loudnorm I=-14, cinematic lower-third serif captions built from the song's OWN word timings (never Whisper) with the hook line landing on the chorus drop, and closed on a brand end card composited from the real asset — never AI-rendered text. This is the FREE deterministic assembly stage (cut-to-window + hard concat + anthem mux + captions + end card); the anthem, keyframes, and clips come from create-music-elevenlabs / create-image-gpt-image-fal / create-video-fal. Use for the cinematic-music-video format.

gooseworks-ai/goose-skills

Assemble an editorial-motion podcast-clip ad from a config — a real clipped podcast MP3 carries the narrative while N flat limited-palette editorial-illustration keyframes (one look pack) are animated NOT by generative i2v but by DETERMINISTIC ffmpeg ken-burns (zoompan) + hard cuts (no crossfades, which expose geometric drift), each beat snapped to its spoken line, the real audio muxed, Whisper-driven captions burned only mid-sentence, and closed on a PIL brand end card — never AI-rendered text. This is the FREE deterministic assembly stage (ffmpeg ken-burns + hard concat + audio mux + captions + end card); the real audio is clipped from source and the keyframes come from create-image-fal. Use for the editorial-motion-podcast format.

gooseworks-ai/goose-skills

Generate a single 4-15s vertical video clip with ByteDance Seedance 2.0 reference-to-video via fal.ai. Multi-image reference (avatar + product + setting), native lip-synced VO + ambient audio (generate-audio on by default), internal multi-cut handling within one render. Routes through the GooseWorks FAL proxy (bills the Ads agent). The default clip atom for AI-creator UGC ads built on the NB2 + Seedance architecture. Validated on beauty-by-earth/video-01.

gooseworks-ai/goose-skills

Mandatory pre-publish review gate for a UGC video render. Transcribes the finished render's AUDIO with Whisper and word-diffs it against the approved spoken script, then gates set_final_render — blocking a render whose generated audio mis-voices a word (e.g. the approved "human-vetted" spoken as "human witted"), drops an approved phrase, or comes back silent. Runnable, gating counterpart to content-goose's review-transcript-integrity atom. Every ugc-video-formats recipe runs this after render and BEFORE set_final_render.

gooseworks-ai/goose-skills

Render pixel-accurate Apple Notes (iPhone, light mode) screenshot mockups from a JSON note spec. Outputs HTML + PNG at the iPhone 16/15 Pro native 1180×2556. Supports paragraphs, images, checklists, dividers, autocorrect underline, smart quotes, and an optional iOS keyboard chrome overlay used by the parent video-ad molecule.

gooseworks-ai/goose-skills

Extract competitor and customer intelligence from any company's landing page HTML. Discovers tech stack, analytics tools, ad pixels, customer logos, SEO metadata, CTAs, hidden elements, and more. No API keys required.

gooseworks-ai/goose-skills

Find speakers, hosts, and guest profiles at conferences and events on Luma. Two modes - free direct scrape for hosts, or Apify-powered search for full guest profiles with LinkedIn/Twitter/bio.

Skills relacionados