A two-phase competitive ad intelligence skill for marketing companies and ecommerce owners to research how competitors run ads across Meta, Google, and LinkedIn.
FieldMeta (FB/IG)Google TransparencyLinkedInAd copy / headline✅ Both phases✅ Both phases✅ Both phasesCreative (image/video URL)✅ Both phases✅ Both phases✅ Both phasesAd format type✅ Both phases✅ Both phases✅ Both phasesDate first/last shown✅ Both phases✅ Both phases✅ Both phasesPlatform / placements✅ Both phases✅ (Google Search, YT, Display, etc.)✅ Both phasesActive / inactive status✅ Both phases✅ Both phases✅ Both phasesCTA button✅ Phase 1 scrape❌✅ Both phasesDestination / landing URL✅ Both phases✅ Both phases✅ Both phasesTotal ads running✅ Phase 2✅ Phase 2✅ Phase 2Impression range✅ Phase 2 (EU/political only)❌✅ Phase 2 (some scrapers)Spend range✅ Phase 2 (EU/political only)❌❌Demographic breakdown✅ Phase 2 (EU only)❌❌Targeting info❌❌✅ Phase 2 (partial — language, location)Advertiser ID✅ Phase 2✅ Phase 2✅ Phase 2
⚠️ No platform exposes: exact spend, CTR, conversion rates, ROAS, or detailed audience targeting.
Gather from the user (ask if not provided):
If the user hasn't said which phase they want, ask. If they're just exploring, start with Phase 1.
Read the platform reference files for code, endpoints, and examples:
references/meta.mdreferences/google.mdreferences/linkedin.mdEach reference contains:
Always deliver both:
text
## Ad Intelligence Report: [Company Name]
**Platforms Searched:** Meta, Google, LinkedIn
**Date:** [today]
**Phase:** 1 (Scrape) / 2 (API)
**Country:** [region]
### 📊 Overview
- Total ads found: X
- Active ads: X | Inactive: X
- Formats: X% image, X% video, X% carousel
### 🎯 Platform Breakdown
[Per platform: count, date range, notable trends]
### ✍️ Creative Themes & Messaging Patterns
[Summarize recurring hooks, CTAs, offers, tone]
### 📅 Recency & Cadence
[How often they post new ads, seasonal patterns]
### ⚠️ Data Limitations
[Note what wasn't available and why]
Return normalized JSON with this schema for each ad:
json
{
"platform": "meta|google|linkedin",
"ad_id": "string",
"advertiser_name": "string",
"advertiser_page_url": "string",
"status": "active|inactive",
"format": "image|video|carousel|text|document",
"headline": "string|null",
"body_text": "string|null",
"cta_text": "string|null",
"destination_url": "string|null",
"creative_url": "string|null",
"platforms_served": ["facebook", "instagram", "messenger"],
"date_first_shown": "YYYY-MM-DD|null",
"date_last_shown": "YYYY-MM-DD|null",
"country": "string|null",
"spend_range": "string|null",
"impression_range": "string|null",
"targeting_summary": "string|null",
"source_phase": 1
}
After presenting results, always suggest:
SituationRecommended PhaseQuick competitive overviewPhase 1No API keys availablePhase 1Need date-range filteringPhase 2EU market + want spend/impressionsPhase 2 (official Meta API)Need 500+ ads at scalePhase 2 (paid third-party API)B2B competitor research on LinkedInPhase 2Need creative image/video downloadsPhase 2
references/meta.md — Meta (Facebook/Instagram) scraping + API codereferences/google.md — Google Ads Transparency scraping + SerpAPI/SearchAPIreferences/linkedin.md — LinkedIn Ad Library scraping + third-party APIs