create-image-fal
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
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.
$ npx -y skills add gooseworks-ai/goose-skills --skill ad-to-landing-page-auditor --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ad-to-landing-page-auditorContext preview
The summary Claude sees to decide when to auto-load this skill.
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.
name: ad-to-landing-page-auditor description: > 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. tags: [ads]
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.
1. **Ad copy** — For each ad, provide:
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.
Parse the provided ads into:
| Ad ID | Platform | Headline | Body/Description | CTA | Landing Page URL | Conv Rate (if known) | |-------|----------|----------|-----------------|-----|-----------------|---------------------|
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:
| 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] |
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]**
| 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 |
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] |
# 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]
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Repo: gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.