| name | ad-analyzer |
| description | Analyze competitor ads from Meta Ad Library or descriptions, extract creative patterns, hooks, and offers, and generate variants. No API keys required. |
Ad Analyzer
Analyze competitor advertising creative - hooks, offers, emotional patterns, and CTAs - and generate new variants based on what works.
What this does
Three phases:
- Ad Collection - Pull ads from Meta Ad Library (public, no login) or analyze provided screenshots/descriptions
- Pattern Extraction - Identify hooks, offers, emotional triggers, and CTA patterns
- Variant Generation - Create new ad variations based on extracted patterns
How to use
Pass a competitor brand name or Meta Ad Library URL:
/ad-analyzer Competidor SA
Or with a direct library URL:
/ad-analyzer https://www.facebook.com/ads/library/?search_terms=empresa&country=ES
Or with screenshots or ad copy pasted directly:
/ad-analyzer [paste ad copy or describe the ads you want analyzed]
Phase 1 - Ad Collection
Option A: Meta Ad Library (public, no login)
The Meta Ad Library is public. Access pattern:
https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=ES&search_terms=[brand]&media_type=all
from scripts.ad_library import scrape_meta_ads
ads = scrape_meta_ads(brand_name=brand, country="ES", limit=20)
Focus on:
- Active ads (currently running = currently working or being tested)
- Ads running over 30 days (survived, likely performing)
- Ads with social proof signals in the copy
Option B: User-provided ad copy
If the user pastes ad copy or describes ads, skip collection and go directly to Phase 2.
Accept:
- Pasted ad copy (text)
- Description of ads seen ("they show a video of X with text saying Y")
- Screenshot descriptions
Phase 2 - Pattern Extraction
For each ad or batch of ads, extract:
Hook analysis
The hook is the first 1-2 sentences or the headline. It determines whether someone stops scrolling.
Hook types:
- Question hook - "Are you still using X?"
- Statistic hook - "83% of [target] struggle with X"
- Negative hook - "Stop doing X" / "The real reason your X isn't working"
- Story hook - "I used to spend 5 hours a week on X until I found..."
- Curiosity hook - "The one thing most [target] get wrong about X"
- Social proof hook - "10,000 [target] switched to X because..."
- Problem statement hook - "[Specific pain] is costing you [specific cost]"
- Before/after hook - "From [before state] to [after state] in [timeframe]"
Identify which hook type is used and whether it is specific or generic.
Offer analysis
What is the ad actually selling or offering?
- Hard offer: direct purchase, specific price, specific product
- Soft offer: free trial, lead magnet, demo, consultation
- Brand offer: awareness, no explicit CTA
- Content offer: video, guide, article
What is the value proposition in the offer?
- Time saved (quantified or vague)
- Money saved or earned (quantified or vague)
- Pain eliminated (specific or generic)
- Social proof element (specific number or vague)
Emotional trigger analysis
What feeling is the ad trying to create?
- Fear of missing out
- Frustration with current situation
- Desire for status / recognition
- Desire for simplicity / relief
- Trust / safety
- Exclusivity / insider knowledge
CTA analysis
- Button text used
- Urgency present? (limited time, spots, offer)
- Landing page type (if detectable from URL)
Output format
## Ad Analysis: [Brand/Campaign]
Ads analyzed: [n]
Active ads running: [n]
Oldest ad in set: [days running]
### Pattern Summary
Most common hook type: [type]
Most common offer type: [type]
Primary emotional trigger: [trigger]
CTA buttons used: [list]
### Individual Ads
**Ad 1:**
Hook: "[first line]"
Hook type: [type]
Offer: [what they're selling/giving]
Emotional trigger: [trigger]
CTA: [button text]
Days running: [n] (longer = more likely performing)
Why it works / why it does not: [1-2 sentences]
**Ad 2:**
[same structure]
Phase 3 - Variant Generation
Based on the patterns found, generate new ad variants.
Rules for variant generation:
- Keep what is working (hook type, offer structure, emotional trigger)
- Change one element at a time
- Generate at least one variant per working pattern
- Each variant needs a hypothesis: "If we change X, we expect Y because Z"
Variant types
Hook swap - Same offer, different hook type
Original: "Are you still doing X manually?"
Variant A (statistic): "Teams using X spend 8 hours/week on [task]. Here's how to cut that to 30 minutes."
Variant B (story): "I tracked every hour I spent on X for a month. The number shocked me."
Offer reframe - Same product, different angle
Original: "Try [Product] free for 14 days"
Variant: "See [specific result] in your first session - or your money back"
ICP shift - Same message, different target audience signal
Original: "Perfect for marketing teams"
Variant A: "Built for solo founders who hate spreadsheets"
Variant B: "The tool 500+ CMOs switched to last year"
Urgency variant - Add or test urgency
Original: "Start your free trial"
Variant: "Spots filling up - [n] teams joined this week"
Variant output format
## Variants to Test
**Variant 1: [Variant type]**
Hypothesis: Changing [X] to [Y] will increase [click-through / sign-ups] because [reason]
Ad copy:
[full ad copy variant]
CTA: [button text]
Landing page: [type of page this should go to]
Test duration: [minimum days before deciding]
References
references/hook-patterns.md - 15 hook formulas with examples
references/creative-formulas.md - ad frameworks (PAS, AIDA, BAB, 4Ps)
Output principles
- Patterns must come from actual ads analyzed - not invented
- Variants must change one element at a time (for testability)
- Every variant needs a hypothesis - no "try this" without a reason
- Hook analysis must identify type + rate specificity (specific beats generic)
- Never recommend copying a competitor ad - derive the pattern, not the words