agentsclimarketplace

Ad analyzer

Skill veyralabsgroup/veyraskills/skills/marketing-suite/ad-analyzer

Analyze competitor ads from Meta Ad Library or descriptions, extract creative patterns, hooks, and offers, and generate variants. No API keys required.From its SKILL.md

Install
npx -y skills add veyralabsgroup/veyraskills --skill ad-analyzer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • fetches URLsInstructs the agent to fetch 1 URL, including https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=ES&search_terms=[brand]&media_type=all.

SKILL.md

6.1 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

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:

  1. Ad Collection - Pull ads from Meta Ad Library (public, no login) or analyze provided screenshots/descriptions
  2. Pattern Extraction - Identify hooks, offers, emotional triggers, and CTA patterns
  3. 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)
# Returns: list of ads with body text, CTA button, media type, start date

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

  1. Patterns must come from actual ads analyzed - not invented
  2. Variants must change one element at a time (for testability)
  3. Every variant needs a hypothesis - no "try this" without a reason
  4. Hook analysis must identify type + rate specificity (specific beats generic)
  5. Never recommend copying a competitor ad - derive the pattern, not the words

What ships with it: 3 files

21.0 KB alongside SKILL.md, 1 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.