$npx -y skills add gooseworks-ai/goose-skills --skill competitor-ad-intelligenceScrape competitor ads from Meta Ad Library and Google Ads Transparency Center, analyze creative patterns (hooks, formats, CTAs), reverse-engineer landing page funnels, and produce a strategic teardown with vulnerability analysis and counter-play recommendations. Use when you need
| 1 | # Competitor Ad Intelligence |
| 2 | |
| 3 | Scrape competitor ads from Meta and Google, analyze creative patterns, reverse-engineer landing page funnels, and produce a full strategic teardown — hooks, formats, positioning bets, vulnerabilities, and counter-plays. |
| 4 | |
| 5 | **Core principle:** A competitor's ad portfolio is a window into their growth strategy. Long-running ads reveal what converts. New ads reveal what they're testing. Landing pages reveal their positioning bets. The best ad creative teams start with evidence from what's already working, then differentiate. |
| 6 | |
| 7 | ## When to Use |
| 8 | |
| 9 | - "What ads are my competitors running?" |
| 10 | - "Tear down [competitor]'s ad strategy" |
| 11 | - "Find new creative angles for our paid campaigns" |
| 12 | - "Reverse-engineer [competitor]'s paid funnel" |
| 13 | - "What hooks are working in [our space]?" |
| 14 | - "Audit the ad landscape before we launch" |
| 15 | - "Find weaknesses in [competitor]'s ad strategy" |
| 16 | - "What format — video, image, carousel — is dominant in our category?" |
| 17 | |
| 18 | ## Phase 0: Intake |
| 19 | |
| 20 | Gather from the user: |
| 21 | |
| 22 | 1. **Competitor names + domains** (e.g., `apollo.io`, `clay.run`) |
| 23 | 2. **Your product/domain** — for comparison framing |
| 24 | 3. **Channels:** Meta only, Google only, or both? (default: both) |
| 25 | 4. **Depth level:** |
| 26 | - **Standard:** Ad scrape + creative analysis + landing page analysis |
| 27 | - **Deep:** Standard + historical comparison + funnel reconstruction + counter-plays |
| 28 | 5. **Product category** — helps frame analysis |
| 29 | 6. **Known competitor landing pages?** — any URLs already spotted in their ads |
| 30 | |
| 31 | ## Phase 1: Scrape Meta Ads |
| 32 | |
| 33 | For each competitor domain, scrape ads from Meta Ad Library. |
| 34 | |
| 35 | Use `web_search` to find competitor ads in the Meta Ad Library (publicly accessible, no API key needed): |
| 36 | |
| 37 | ``` |
| 38 | web_search: site:facebook.com/ads/library "[competitor_name]" |
| 39 | web_search: "[competitor_name]" Meta Ad Library active ads |
| 40 | web_search: "[competitor_name]" facebook ads examples |
| 41 | ``` |
| 42 | |
| 43 | You can also visit the Meta Ad Library directly: `https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=<competitor_name>` |
| 44 | |
| 45 | Use `fetch_webpage` on the Ad Library URL to extract ad details if your agent supports it. |
| 46 | |
| 47 | > **Note:** Apify actors for Meta Ad Library scraping exist but are unreliable as of April 2026 due to Meta's anti-scraping measures. Use `web_search` as the primary method. |
| 48 | |
| 49 | **Collect per ad:** |
| 50 | - Ad copy (headline + primary text) |
| 51 | - Visual type (image / video / carousel) |
| 52 | - CTA button text |
| 53 | - Landing page URL |
| 54 | - Active duration (first seen, still running or stopped) |
| 55 | - Platforms (Facebook, Instagram, Audience Network) |
| 56 | - Ad variations (A/B tests — same landing page, different creative) |
| 57 | |
| 58 | ## Phase 2: Scrape Google Ads |
| 59 | |
| 60 | For each competitor domain, scrape ads from Google Ads Transparency Center. |
| 61 | |
| 62 | Use `web_search` to find competitor ads in Google Ads Transparency Center (publicly accessible): |
| 63 | |
| 64 | ``` |
| 65 | web_search: site:adstransparency.google.com "[competitor_name]" |
| 66 | web_search: "[competitor_name]" Google Ads transparency |
| 67 | web_search: "[competitor_name]" google search ads examples |
| 68 | ``` |
| 69 | |
| 70 | You can also visit directly: `https://adstransparency.google.com/?search_text=<competitor_name>` |
| 71 | |
| 72 | Use `fetch_webpage` on the Transparency Center URL to extract ad details if your agent supports it. |
| 73 | |
| 74 | **Collect per ad:** |
| 75 | - Headline variants (up to 3) |
| 76 | - Description lines |
| 77 | - Ad type (Search / Display / YouTube / Shopping) |
| 78 | - Landing page URL |
| 79 | - Geographic targeting (if visible) |
| 80 | |
| 81 | ## Phase 3: Analyze Creative Patterns |
| 82 | |
| 83 | After collecting all ads, perform structured analysis. |
| 84 | |
| 85 | ### Hook Pattern Clustering |
| 86 | |
| 87 | Group all ad headlines/openers by hook type: |
| 88 | |
| 89 | | Hook Type | Pattern | Example | |
| 90 | |-----------|---------|---------| |
| 91 | | **Fear/Loss** | Risk of missing out or falling behind | "Your competitors are already using AI SDRs" | |
| 92 | | **Outcome** | Direct result promise | "10x your pipeline in 30 days" | |
| 93 | | **Question** | Challenges current assumption | "Still doing outbound manually?" | |
| 94 | | **Social proof** | Names customers or numbers | "Join 500+ B2B teams using [product]" | |
| 95 | | **Contrarian** | Challenges conventional wisdom | "Cold email isn't dead. Your copy is." | |
| 96 | | **Empathy** | Validates their pain | "We know SDR ramp time is brutal" | |
| 97 | | **Product-led** | Feature as hook | "[Feature] is live — see what's new" | |
| 98 | |
| 99 | Count how many ads per competitor use each hook type. This reveals their primary messaging strategy. |
| 100 | |
| 101 | ### Format Distribution |
| 102 | |
| 103 | | Format | Meta | Google | |
| 104 | |--------|------|--------| |
| 105 | | Static image | [N] | N/A | |
| 106 | | Video | [N] | [N] | |
| 107 | | Carousel | [N] | N/A | |
| 108 | | Search text | N/A | [N] | |
| 109 | | Disp |