00Competitive Intelligence via LinkedIn Ad Library API
This report executes all 10 LinkedIn Ad Library MCP tools registered on the Windfield IO MCP server to gather competitive intelligence for the 8630 N Green Hills Road medical office campaign. The tools operate as a 5-phase pipeline: Search, Discover, Extract, Analyze, Synthesize.
Target intelligence domains: CRE brokerage ad strategies, medical franchise expansion signals, healthcare investor messaging, creative format trends, targeting pattern analysis, and competitive positioning gaps.
1
Phase 1 — Search
Tools 1–3: Broad keyword/advertiser/country search with targeting facets and impression filters.
2
Phase 2 — Discover
Tool 4: Brand partnerships and paid endorsement searches.
3
Phase 3 — Extract
Tools 5–6: Playwright browser automation captures screenshots and DOM data.
4
Phase 4 — Analyze
Tools 7–8: Claude Vision creative analysis across 10 dimensions.
5
Phase 5 — Synthesize
Tools 9–10: AI-generated competitive positioning brief and market sweep.
018630 N Green Hills Road \u2014 Campaign Foundation
Property ContextProperty ID: 1616772
| Field | Value |
|---|
| Property Name | 8630 N Green Hills Road Office Building |
| Location | 8630 N Green Hills Road, Kansas City, MO 64154 |
| Submarket | KC Northland — Tiffany Hills / Coves North |
| Building | 10,500 SF, Class-A, Single-story, Built 2020 |
| Zoning | B3-3 (all medical uses permitted) |
| Availability | For Sale — Call for Pricing |
| Trade Area HHI | $107,000 avg (2-mile radius) |
| Adjacent Medical | Northland Eye Specialists (0.1 mi), Magnolia Family Chiropractic (0.1 mi) |
| Campaign Budget | $5,000/mo across 7 stages |
| Target Audience | Medical practice owners, franchise developers, healthcare REITs |
Intelligence Objective
Understand how competitors are advertising medical office space and healthcare franchise opportunities on LinkedIn. Identify creative gaps, messaging patterns, and targeting strategies to position 8630 N Green Hills as the definitive Class-A medical office opportunity in KC Northland.
Tool InventoryMCP Server: windfield-mcp-server
| # | Tool Name | Phase | Function |
|---|
| 1 | ad_library__search | Search | Broad keyword/advertiser/country search with targeting facets and impression filters |
| 2 | ad_library__search_competitor | Search | Deep-dive on named competitor. Paginates and stores to linkedin_competitor_ads |
| 3 | ad_library__search_keyword | Search | Keyword search with targeting facet filters (JOB, COMPANY, LOCATION, etc.) |
| 4 | ad_library__brand_partnerships | Discover | Search paid endorsement/influencer posts by keyword and date range |
| 5 | ad_library__extract_creative | Extract | Playwright scrape of ad detail page: screenshot + DOM extraction + Supabase storage |
| 6 | ad_library__batch_extract | Extract | Batch process all pending creatives with rate-limiting (5-10s delays) |
| 7 | ad_library__analyze_creative | Analyze | Claude Vision analysis: headline, body, CTA, visual description, brand colors, copy tone, themes |
| 8 | ad_library__batch_analyze | Analyze | Batch Claude Vision analysis of all extracted unanalyzed screenshots |
| 9 | ad_library__competitive_brief | Synthesize | AI-generated competitive positioning brief for property using all scraped data |
| 10 | ad_library__market_sweep | Synthesize | Full competitor watch list sweep with diff against last run, logged to io_events |
03Phase 1 \u2014 Search
Tool 1 \u2014 Broad Market Scan6 keyword searches
| # | Keyword | Countries | Days Back | Intelligence Target |
|---|
| 1 | medical office space | US | 30 | Medical office positioning patterns |
| 2 | commercial real estate Kansas City | US | 30 | Local CRE competitive landscape |
| 3 | Class-A office building | US | 30 | Premium office messaging patterns |
| 4 | urgent care expansion | US | 30 | Healthcare chain expansion signals |
| 5 | med spa franchise | US | 30 | Highest demand gap category (POP 02) |
| 6 | healthcare real estate investment | US | 30 | Healthcare REIT investor messaging |
Tool 2 \u2014 Named Competitor Deep-Dive14 competitors
| Category | Advertiser | Days Back | Max Results | Why |
|---|
| CRE Brokerage | CBRE | 90 | 50 | Largest CRE broker — sets market creative standards |
| CRE Brokerage | JLL | 90 | 50 | Major KC presence, institutional messaging |
| CRE Brokerage | Cushman & Wakefield | 90 | 50 | Healthcare practice group competitor |
| CRE Brokerage | Colliers | 90 | 50 | KC market active, medical office listings |
| CRE Brokerage | Marcus & Millichap | 90 | 50 | Investment sales competitor |
| CRE Brokerage | Lee & Associates | 90 | 50 | Owner-occupant focused marketing |
| CRE Brokerage | Block Real Estate Services | 90 | 50 | Dominant KC local brokerage |
| Medical Franchise | Ideal Image | 90 | 50 | National med spa chain — KC expansion target |
| Medical Franchise | LaserAway | 90 | 50 | 100+ locations, recent KC market research |
| Medical Franchise | CareNow | 90 | 50 | Urgent care expansion — KC Northland gap |
| Medical Franchise | NextCare | 90 | 50 | Existing CRM contact (Phil Lesnik, Gregory Valladao) |
| Medical Franchise | Total Access Urgent Care | 90 | 50 | Existing CRM contact (Joe Godfrey) |
| Medical Franchise | Aspen Dental | 90 | 50 | Dental franchise — aggressive expansion |
| Medical Franchise | Heartland Dental | 90 | 50 | Largest dental DSO — site selection team |
04Phase 2 \u2014 Discover
Tool 4 \u2014 Brand Partnerships4 keyword searches
| Keyword | Date Range | Intelligence Target |
|---|
| medical office | PAST_MONTH | Medical KOL endorsement activity |
| commercial real estate | PAST_MONTH | CRE influencer partnerships |
| healthcare franchise | PAST_MONTH | Franchise brand ambassador programs |
| med spa | PAST_MONTH | Aesthetic medicine influencer landscape |
05Phase 3 \u2014 Extract
Playwright browser automation scrapes LinkedIn Ad Library detail pages. Captures full-page screenshot, extracts headline/body/CTA from DOM, stores to Supabase Storage. Priority targets include any CBRE or JLL medical office ad, med spa franchise expansion ads, urgent care location acquisition ads, healthcare REIT investor-facing ads, and any KC-specific CRE ad.
After priority extractions, batch process all remaining ads with scrape_status='pending', limit 25. Rate-limited with 5-10 second delays between requests to avoid throttling.
06Phase 4 \u2014 Analyze
Claude Vision transforms raw ad screenshots into structured creative analysis. Each analysis extracts 10 dimensions: headline text & positioning, body copy & value prop, CTA type & urgency language, visual layout description, brand colors & design system, photography style, copy tone, detected themes, asset class, and competitive positioning angle.
Downstream Impact
Analysis output feeds directly into the 9 LinkedIn React template components (LiSquareDarkHero, LiSquareImageTop, LiSquareLight, LiSquareStats, LiCarouselSlide, LiBannerProfile, LiSponsoredAd, IoLiInsight, PepLiLight). Winning creative patterns from competitors inform which templates lead in our 7-stage campaign.
07Phase 5 \u2014 Synthesize
Tool 9 generates a full competitive positioning brief for property ID 1616772. Cross-references all stored competitor ads from Phases 1-3, synthesizes via Claude into actionable intelligence. Output stored in io_memory with key linkedin_competitive_brief:1616772.
Tool 10 executes the full 7-advertiser watch list through the Ad Library API. Diffs against last sweep to identify new ads. Establishes the baseline for the weekly linkedin_competitor_sweep cron (Monday 3am).
Ongoing Automation
After this initial sweep, the linkedin_competitor_sweep cron fires every Monday at 3am CT. Each subsequent sweep diffs against the previous run, logging only new ads. The competitive brief auto-regenerates when new competitor data arrives.
08Report Deliverables After Execution
Intelligence Products7 deliverables
| # | Deliverable | Source Tools | Feeds Into |
|---|
| 1 | Market Ad Landscape Map | Tools 1–3 | Campaign strategy, budget allocation |
| 2 | Competitor Creative Analysis | Tools 7–8 | Template selection, creative briefs |
| 3 | Targeting Intelligence Report | Tool 3 | Audience segments A/B/C (POP 06) |
| 4 | Brand Partnership Landscape | Tool 4 | Stage 7 Loyalty campaign (POP 15) |
| 5 | Content Gap Analysis | Tool 9 | 7-stage campaign copy, content ops |
| 6 | Creative Format Recommendations | Tools 7–9 | Template Library, visual builder |
| 7 | Competitive Positioning Brief | Tools 9–10 | All campaigns, Reports IO, AI-OPS |
09Sequential Tool Execution Order
Execution Timeline40\u201365 min total
| Step | Tool | Dependency | Est. Duration | Output |
|---|
| 1 | ad_library__search (x6) | None — can start immediately | 2–3 min | Broad market ad records |
| 2 | ad_library__search_competitor (x14) | None — parallel with Step 1 | 5–8 min | Named competitor ad records |
| 3 | ad_library__search_keyword (x4) | None — parallel with Steps 1-2 | 1–2 min | Facet-filtered ad records |
| 4 | ad_library__brand_partnerships (x4) | None — parallel with Steps 1-3 | 1–2 min | Brand partnership records |
| 5 | ad_library__extract_creative (x10) | Requires Step 1-2 results | 5–10 min | Priority screenshots + DOM data |
| 6 | ad_library__batch_extract (limit: 25) | Requires Step 5 completion | 10–15 min | Remaining screenshots |
| 7 | ad_library__analyze_creative (x5) | Requires Step 5 results | 3–5 min | Priority creative analysis |
| 8 | ad_library__batch_analyze (limit: 20) | Requires Step 6 completion | 8–12 min | Batch creative analysis |
| 9 | ad_library__competitive_brief | Requires Steps 1-8 | 2–3 min | Competitive positioning brief JSON |
| 10 | ad_library__market_sweep | Requires Step 9 | 3–5 min | Watch list baseline + io_events log |
10How Intelligence Feeds the 7-Stage Campaign
Campaign Integration$5,000/mo total
| Campaign Stage | Budget/mo | Intelligence Input | How It Changes Strategy |
|---|
| 1. Unaware | $1,000 (20%) | Market ad landscape, format trends | Thumbnail style, opening hook format, video length based on competitor VCR data |
| 2. Problem Aware | $1,000 (20%) | Competitor copy patterns, lead magnet types | Lead magnet title and format based on what competitors offer (or don’t) |
| 3. Solution Aware | $750 (15%) | Owner-occupancy messaging gaps | If no competitor runs ownership vs. leasing content, this becomes our differentiation |
| 4. Product Aware | $750 (15%) | Creative format analysis, CTA patterns | Property tour video style, floor plan presentation format |
| 5. Conversion | $1,000 (20%) | Competitor CTA urgency language, form fields | CTA copy, scarcity framing, lead gen form field optimization |
| 6. Nurturing | $250 (5%) | Competitor nurture content types | Buildout timeline vs. case study content format |
| 7. Loyalty | $250 (5%) | Brand partnership landscape | Co-marketing partner identification, referral program structure |
11MCP Tool Signatures & Supabase Schema
Tables written by Ad Library toolsschema
linkedin_competitor_ads
id, advertiser_name, ad_id, headline, body, cta,
ad_url, screenshot_url, countries, impression_range,
scrape_status, analysis_status, created_at
linkedin_competitor_ad_targeting
id, competitor_ad_id, facet_category, facet_values,
included, created_at
io_memory
key: "linkedin_competitive_brief:1616772"
value: { competitors[], trendingSummary, positioningRecommendation }
io_events
type: "linkedin_competitor_sweep"
data: { advertisers_scanned, new_ads_found, sweep_date }
io_memory
key: "linkedin_competitor_watch_list"
value: ["CBRE", "JLL", "Cushman & Wakefield", "Colliers",
"Marcus & Millichap", "Lee & Associates", "Block Real Estate Services"]Cron automationconfig
linkedin_competitor_sweep: "0 3 * * 1" // Monday 3am CT
- Runs ad_library__market_sweep
- Diffs against previous sweep
- Logs new ads to linkedin_competitor_ads
- Regenerates competitive brief if new data
// OAuth scopes required
r_ads // Read ad library data
rw_ads // Create/manage campaigns from insights
r_ads_reporting // Pull performance data for benchmarking
// Token status
Expires: "2026-07-05"
Scopes: "openid, profile, w_member_social, r_ads, rw_ads, r_ads_reporting"