Back to skills
SkillHub ClubShip Full StackFull Stack

meta-ads-analyser

Analyze extracted Meta ad creatives and generate a professional strategy report. Use after /meta_ads_extractor to produce a clean, organized analysis document with inline videos/images grouped by funnel/landing page.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
2,991
Hot score
99
Updated
March 20, 2026
Overall rating
C4.6
Composite score
4.6
Best-practice grade
C67.9

Install command

npx @skill-hub/cli install openclaw-skills-meta-ads-analyser

Repository

openclaw/skills

Skill path: skills/bluerockerr/meta-ads-analyser

Analyze extracted Meta ad creatives and generate a professional strategy report. Use after /meta_ads_extractor to produce a clean, organized analysis document with inline videos/images grouped by funnel/landing page.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: openclaw.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install meta-ads-analyser into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/openclaw/skills before adding meta-ads-analyser to shared team environments
  • Use meta-ads-analyser for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: meta-ads-analyser
description: Analyze extracted Meta ad creatives and generate a professional strategy report. Use after /meta_ads_extractor to produce a clean, organized analysis document with inline videos/images grouped by funnel/landing page.
---

# Meta Ads Analyser

Generate a professional ad strategy analysis report from extracted Meta ad creatives.

## Prerequisites

- Extracted ad assets from `/meta_ads_extractor` (images, videos, landing page screenshots)
- Ad creative analysis (hooks, scripts, emotions, CTAs, strengths/weaknesses)
- Landing page analysis (headlines, strategies, conversion flows)

## Input

Assets folder from extraction, typically at:
```
~/clawd/output/meta-ads/{advertiser-slug}/
├── {slug}-video-01.mp4
├── {slug}-video-02.mp4
├── {slug}-image-01.jpg
├── {slug}-image-02.jpg
├── landing-{page-name}.jpg
└── ...
```

## Analysis Process

### 1. Analyze Each Creative

For each ad creative, identify:
- **Aspect Ratio** — Dimensions and ratio (1:1, 4:5, 9:16, 16:9)
- **Duration** — For videos, length in seconds
- **Hook** — Opening line/visual that stops the scroll
- **Script/Copy** — Key messaging and value proposition
- **Visual Flow** — Sequence of scenes/elements (for video)
- **Emotion** — Primary emotional trigger (curiosity, fear, aspiration, etc.)
- **CTA** — Call to action and friction level
- **Strengths** — What works well
- **Weaknesses/Gaps** — What could be improved

Use vision model for images, Gemini for video analysis.

**Get dimensions with:**
```bash
# Images (macOS)
sips -g pixelWidth -g pixelHeight image.jpg

# Videos
ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 video.mp4
```

**Common aspect ratios:**
| Ratio | Use Case |
|-------|----------|
| 1:1 | Feed (universal) |
| 4:5 | Feed (recommended) |
| 9:16 | Stories/Reels |
| 16:9 | Landscape video |

### 2. Analyze Landing Pages

For each landing page, identify:
- **Headline** — Primary value proposition
- **Strategy** — Key conversion elements (social proof, urgency, etc.)
- **Conversion Flow** — Path from landing to purchase/signup
- **Strengths** — What converts well
- **Gaps** — Missing elements or friction points

### 3. Map Funnels

Group ads by their destination landing page. Each funnel = landing page + all ads driving to it.

Typical funnel types:
- **TOFU (Top of Funnel)** — Awareness, lead magnets, quizzes, free content
- **BOFU (Bottom of Funnel)** — Direct offer, application, purchase

### 4. Identify Strategy Patterns

Look for:
- Credibility stacking (logos, credentials, social proof)
- Price anchoring
- Native creative (ads that don't look like ads)
- Identity-driven copy
- Testing patterns (variants of same creative)

## Output Format

Generate a self-contained HTML report using the template structure below.

### Report Structure

```
1. Header
   - Advertiser name
   - Stats (# ads, # funnels, date)

2. Strategy Overview (TOP)
   - High-level acquisition strategy
   - Funnel flow visualization
   - Creative testing patterns
   - Key takeaways (actionable insights)

3. Funnel Sections (one per landing page)
   - Funnel header (name, URL)
   - Landing page card (screenshot + analysis)
   - Ad cards grid (media + analysis for each)
   
4. Footer
   - Source attribution
   - Date generated
```

### Styling Guidelines

- **Clean, doc-like design** — white background, simple typography
- **No dark gradients or heavy styling** — should feel like a PDF/Notion doc
- **Inline media** — videos and images embedded and playable
- **Mobile-friendly** — responsive grid for ad cards
- **Badges for quick scanning** — TOFU/BOFU, Video/Image, Variant, Top performer, Aspect ratio (1:1, 4:5, 9:16)

### Ad Card Format

Each ad card should display:
```
[Media: video/image]
[Badges: Type | Funnel Stage | Aspect Ratio | Duration (if video)]
[Title]
[Analysis fields: Hook, Script, Emotion, Strengths, Gaps]
```

**Include aspect ratio badge** on every ad card so patterns are visible at a glance (e.g., "all TOFU ads are 4:5, BOFU ads are 1:1").

See `templates/report-template.html` for the full HTML/CSS template.

## Delivery

1. Generate HTML file in the assets folder:
   ```
   ~/clawd/output/meta-ads/{advertiser-slug}/{slug}-analysis.html
   ```

2. Zip the entire folder (HTML + all media assets)

3. Send via Telegram with caption explaining contents

**Important:** The HTML uses relative paths to media files. Always deliver as a zip so the recipient can open it locally with all assets.

## Example Workflow

```
User: Analyze the EricPartaker ads we extracted

1. Read assets folder: ~/clawd/output/meta-ads/ericpartaker/
2. Analyze each video with Gemini / image with vision
3. Analyze landing page screenshots
4. Map ads to landing pages (identify 3 funnels)
5. Identify strategy patterns
6. Generate HTML report
7. Zip folder
8. Send to user
```

## Integration

This skill is designed to follow `/meta_ads_extractor`:

```
/meta_ads_extractor → downloads assets
/meta_ads_analyser → generates strategy report
```

Can also integrate with:
- **ad-creative-analysis** — detailed individual ad breakdowns
- **landing-page-analysis** — deeper landing page audits


---

## Referenced Files

> The following files are referenced in this skill and included for context.

### templates/report-template.html

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ADVERTISER}} — Ad Strategy Analysis</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { 
  background: #fff; 
  color: #1a1a1a; 
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; 
  line-height: 1.7;
  font-size: 15px;
}
.container { max-width: 900px; margin: 0 auto; padding: 40px 24px; }
h1 { font-size: 2rem; color: #111; margin-bottom: 8px; font-weight: 700; }
h2 { font-size: 1.4rem; color: #111; margin: 32px 0 16px; font-weight: 600; border-bottom: 2px solid #eee; padding-bottom: 8px; }
h3 { font-size: 1.1rem; color: #333; margin: 20px 0 12px; font-weight: 600; }
p { margin-bottom: 12px; color: #333; }
.header { margin-bottom: 40px; padding-bottom: 24px; border-bottom: 1px solid #e5e5e5; }
.header .subtitle { color: #666; font-size: 1rem; margin-top: 4px; }
.header .date { color: #999; font-size: 0.85rem; margin-top: 8px; }

/* Strategy Section */
.strategy-box { 
  background: #f8f9fa; 
  border: 1px solid #e5e5e5; 
  border-radius: 8px; 
  padding: 24px; 
  margin: 24px 0;
}
.strategy-box h3 { margin-top: 0; color: #111; }
.funnel-flow {
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 6px;
  padding: 16px;
  margin: 16px 0;
  text-align: center;
  font-size: 0.95rem;
  color: #555;
}
.takeaway { 
  background: #fffbeb; 
  border-left: 4px solid #f59e0b; 
  padding: 16px; 
  margin: 16px 0;
  border-radius: 0 6px 6px 0;
}
.takeaway-title { font-weight: 600; color: #92400e; margin-bottom: 8px; }
ul { margin: 12px 0; padding-left: 24px; }
li { margin-bottom: 8px; color: #444; }

/* Funnel Sections */
.funnel-section {
  margin: 48px 0;
  padding: 24px;
  background: #fafafa;
  border-radius: 12px;
  border: 1px solid #e5e5e5;
}
.funnel-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
}
.funnel-number {
  background: #111;
  color: #fff;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 0.9rem;
}
.funnel-title { font-size: 1.3rem; font-weight: 600; color: #111; }
.funnel-url { color: #666; font-size: 0.9rem; margin-top: 2px; }

/* Landing Page Card */
.landing-card {
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 8px;
  padding: 20px;
  margin-bottom: 24px;
}
.landing-card img {
  max-width: 100%;
  border-radius: 6px;
  border: 1px solid #eee;
  margin-bottom: 16px;
}
.landing-meta { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; }
.landing-meta-item { font-size: 0.9rem; }
.landing-meta-item strong { color: #111; }

/* Ad Cards */
.ads-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
  margin-top: 24px;
}
.ad-card {
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 8px;
  overflow: hidden;
}
.ad-card video, .ad-card img {
  width: 100%;
  display: block;
}
.ad-card-body {
  padding: 16px;
}
.ad-card-title {
  font-weight: 600;
  font-size: 0.95rem;
  margin-bottom: 8px;
  color: #111;
}
.ad-badges {
  display: flex;
  gap: 6px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
}
.badge-video { background: #e0e7ff; color: #3730a3; }
.badge-image { background: #cffafe; color: #0e7490; }
.badge-tofu { background: #dcfce7; color: #166534; }
.badge-bofu { background: #fee2e2; color: #991b1b; }
.badge-top { background: #fef3c7; color: #92400e; }
.badge-variant { background: #f3f4f6; color: #6b7280; }
.badge-new { background: #fef3c7; color: #92400e; }

.ad-detail { margin-bottom: 10px; }
.ad-label { 
  font-weight: 600; 
  font-size: 0.8rem; 
  color: #666; 
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.ad-text { font-size: 0.9rem; color: #333; margin-top: 2px; }
.ad-strength { color: #166534; }
.ad-weakness { color: #991b1b; }

/* Variant Note */
.variant-note {
  background: #f9fafb;
  border-left: 3px solid #9ca3af;
  padding: 12px;
  margin: 8px 0;
  font-size: 0.85rem;
  color: #6b7280;
}

footer {
  margin-top: 48px;
  padding-top: 24px;
  border-top: 1px solid #e5e5e5;
  color: #999;
  font-size: 0.85rem;
  text-align: center;
}
</style>
</head>
<body>
<div class="container">

<div class="header">
  <h1>🔍 {{ADVERTISER}} — Ad Strategy Analysis</h1>
  <p class="subtitle">{{NUM_ADS}} active ads · {{NUM_FUNNELS}} funnels · Complete strategy breakdown</p>
  <p class="date">Generated {{DATE}} · Source: Meta Ad Library</p>
</div>

<!-- ═══════════ STRATEGY SECTION ═══════════ -->
<h2>📊 Strategy Overview</h2>

<div class="strategy-box">
  <h3>{{STRATEGY_TITLE}}</h3>
  <p>{{STRATEGY_DESCRIPTION}}</p>
  <ul>
    {{STRATEGY_BULLETS}}
  </ul>
</div>

<div class="funnel-flow">
  {{FUNNEL_FLOW_VISUALIZATION}}
</div>

<div class="strategy-box">
  <h3>Creative Testing Strategy</h3>
  <p>{{TESTING_STRATEGY}}</p>
</div>

<div class="takeaway">
  <div class="takeaway-title">💡 Key Takeaways</div>
  <ul>
    {{KEY_TAKEAWAYS}}
  </ul>
</div>

<!-- ═══════════ FUNNEL SECTIONS ═══════════ -->
<!-- Repeat this block for each funnel -->

<div class="funnel-section">
  <div class="funnel-header">
    <div class="funnel-number">{{FUNNEL_NUM}}</div>
    <div>
      <div class="funnel-title">{{FUNNEL_NAME}}</div>
      <div class="funnel-url">{{FUNNEL_URL}}</div>
    </div>
  </div>
  
  <div class="landing-card">
    <img src="{{LANDING_SCREENSHOT}}" alt="{{FUNNEL_NAME}} Landing Page">
    <h3>Landing Page Analysis</h3>
    <p><strong>Headline:</strong> {{LANDING_HEADLINE}}</p>
    <p><strong>Strategy:</strong> {{LANDING_STRATEGY}}</p>
    <p><strong>Flow:</strong> {{LANDING_FLOW}}</p>
    <div class="landing-meta">
      <div class="landing-meta-item"><strong>✅ Strengths:</strong> {{LANDING_STRENGTHS}}</div>
      <div class="landing-meta-item"><strong>⚠️ Gaps:</strong> {{LANDING_GAPS}}</div>
    </div>
  </div>
  
  <h3>Ads Driving to This Funnel</h3>
  <div class="ads-grid">
    
    <!-- Video Ad Card -->
    <div class="ad-card">
      <video controls preload="metadata">
        <source src="{{VIDEO_FILE}}" type="video/mp4">
      </video>
      <div class="ad-card-body">
        <div class="ad-badges">
          <span class="badge badge-video">Video</span>
          <span class="badge badge-tofu">TOFU</span>
        </div>
        <div class="ad-card-title">{{AD_TITLE}}</div>
        <div class="ad-detail">
          <div class="ad-label">🪝 Hook</div>
          <div class="ad-text">{{AD_HOOK}}</div>
        </div>
        <div class="ad-detail">
          <div class="ad-label">📝 Script</div>
          <div class="ad-text">{{AD_SCRIPT}}</div>
        </div>
        <div class="ad-detail">
          <div class="ad-label">💭 Emotion</div>
          <div class="ad-text">{{AD_EMOTION}}</div>
        </div>
        <div class="ad-detail">
          <div class="ad-label ad-strength">✅ Strengths</div>
          <div class="ad-text">{{AD_STRENGTHS}}</div>
        </div>
        <div class="ad-detail">
          <div class="ad-label ad-weakness">⚠️ Gaps</div>
          <div class="ad-text">{{AD_GAPS}}</div>
        </div>
      </div>
    </div>
    
    <!-- Image Ad Card -->
    <div class="ad-card">
      <img src="{{IMAGE_FILE}}" alt="{{AD_TITLE}}">
      <div class="ad-card-body">
        <div class="ad-badges">
          <span class="badge badge-image">Image</span>
          <span class="badge badge-tofu">TOFU</span>
        </div>
        <div class="ad-card-title">{{AD_TITLE}}</div>
        <div class="ad-detail">
          <div class="ad-label">🎨 Design</div>
          <div class="ad-text">{{AD_DESIGN}}</div>
        </div>
        <div class="ad-detail">
          <div class="ad-label">🪝 Hook</div>
          <div class="ad-text">{{AD_HOOK}}</div>
        </div>
        <div class="ad-detail">
          <div class="ad-label ad-strength">✅ Strengths</div>
          <div class="ad-text">{{AD_STRENGTHS}}</div>
        </div>
        <div class="ad-detail">
          <div class="ad-label ad-weakness">⚠️ Gaps</div>
          <div class="ad-text">{{AD_GAPS}}</div>
        </div>
      </div>
    </div>
    
    <!-- Variant Ad Card -->
    <div class="ad-card">
      <img src="{{VARIANT_FILE}}" alt="Variant">
      <div class="ad-card-body">
        <div class="ad-badges">
          <span class="badge badge-variant">Variant</span>
          <span class="badge badge-image">Image</span>
        </div>
        <div class="ad-card-title">{{VARIANT_TITLE}}</div>
        <div class="variant-note">
          {{VARIANT_NOTE}}
        </div>
      </div>
    </div>
    
  </div>
</div>

<!-- End funnel section -->

<footer>
  Generated {{DATE}} · Source: Meta Ad Library<br>
  {{ADVERTISER_URLS}}
</footer>

</div>
</body>
</html>

```



---

## Skill Companion Files

> Additional files collected from the skill directory layout.

### _meta.json

```json
{
  "owner": "bluerockerr",
  "slug": "meta-ads-analyser",
  "displayName": "Ads Analyzer",
  "latest": {
    "version": "1.0.0",
    "publishedAt": 1771791206910,
    "commit": "https://github.com/openclaw/skills/commit/5c8bf84c65c2ff435ba0b57f66170ee7afe5f5ed"
  },
  "history": []
}

```

meta-ads-analyser | SkillHub