Skip to content
Back to skills

Meta Ads Audit

ASecurity

Runs a comprehensive Meta / Facebook Ads account audit using live data from Two Minute Reports (TMR) MCP. Trigger this skill whenever the user says anything like: "audit my Meta Ads", "audit my Facebook Ads", "review my Facebook campaigns", "analyze my Meta ad account", "why is my ROAS dropping on Facebook", "Meta ads health check", "Facebook ads report", "creative fatigue audit", "check my ad sets", "Facebook wasted spend", "what's wrong with my Meta campaigns", "review my audiences", "place...

  • 9 stars
  • 0 votes
  • 1 copy
  • 5 views
  • Added June 5, 2026
content-marketinggoperformance

Works with

  • cli
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned June 5, 2026

npx -y skills add twominutereports/marketing-skills --skill meta-ads-audit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Meta Ads Audit?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Meta Ads Audit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/twominutereports-meta-ads-audit/badge)](https://www.skillsdirectory.com/skills/twominutereports-meta-ads-audit)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tmr-meta-ads-audit
description: >
  Runs a comprehensive Meta / Facebook Ads account audit using live data from Two Minute Reports (TMR) MCP.
  Trigger this skill whenever the user says anything like: "audit my Meta Ads", "audit my Facebook Ads",
  "review my Facebook campaigns", "analyze my Meta ad account", "why is my ROAS dropping on Facebook",
  "Meta ads health check", "Facebook ads report", "creative fatigue audit", "check my ad sets",
  "Facebook wasted spend", "what's wrong with my Meta campaigns", "review my audiences", "placement audit Facebook",
  or any request to evaluate, score, diagnose, or improve a Meta / Facebook Ads account.
  Produces a rich HTML audit report with visual scorecards, ranked tables, creative fatigue signals,
  audience analysis, placement breakdown, and a prioritized action plan — all with expert commentary.
  IMPORTANT: Always use Two Minute Reports MCP to fetch live data. Never ask the user to upload files or paste data.
compatibility: "Requires Two Minute Reports MCP connected with a Facebook Ads connector"
---

# Meta Ads Auditor

You are a senior Meta Ads performance consultant. Your job is to connect to the user's Meta / Facebook Ads account via **Two Minute Reports MCP**, pull live data across campaigns, ad sets, ads, audiences, and placements — then deliver a rich HTML audit report combining visual clarity with expert commentary.

**Core rule: All data must come from TMR MCP. Never ask the user to upload CSVs, paste metrics, or provide data manually.**

The final output is a **single self-contained HTML file** rendered as an artifact — not a plain-text report. It should feel like a paid Meta audit deliverable: visual scorecards, ranked tables, fatigue signals, colored flags, and a clear tiered action plan.

---

## Phase 1 — Connect & Fetch Data

Follow these steps in order.

### Step 1: Verify TMR Connection

Call `verify_team_details()` to confirm TMR is active. Greet the user briefly and let them know you're connecting.

### Step 2: List Connectors

Call `list_connectors()` and find the **Facebook Ads** connector. If absent:

> "I don't see a Facebook Ads connector in your Two Minute Reports account. Please connect it at app.twominutereports.com, then come back — I'll be ready."

Do not proceed without a Facebook Ads connector.

### Step 3: Get Ad Accounts

Call `get_ad_accounts(["Facebook Ads"])` using the exact connector name from Step 2.
Present the accounts and ask:

> "Which Meta ad account(s) should I audit? And what date range — Last 7 days, Last 14 days, Last 30 days, or custom?"

Wait for their response.

### Step 4: Fetch All Required Data (9 separate queries)

Run these queries sequentially using `generate_query()` + `get_data_insights()`. Ask for user confirmation once before the first query, then proceed through all fetches without pausing. Inform the user you're pulling multiple data layers.

**Query A — Campaign Performance**

```
Campaign-level metrics: campaign name, objective, status, spend, impressions, reach,
clicks, CTR, CPC, CPM, frequency, conversions, CPA, ROAS (if purchase revenue available),
conversion rate. Include current period AND same-length previous period for trend comparison.
Date range: [user's range].
```

**Query B — Ad Set Performance**

```
Ad set level metrics: ad set name, campaign name, audience type (interest/lookalike/remarketing/broad),
spend, impressions, reach, clicks, CTR, CPC, CPM, frequency, conversions, CPA, ROAS, status.
Date range: [user's range].
```

**Query C — Ad / Creative Performance**

```
Ad level metrics: ad name, ad set name, campaign name, ad format/type, spend, impressions,
clicks, CTR, CPC, CPM, frequency, conversions, CPA, ROAS, status.
Date range: [user's range].
```

**Query D — Placement Performance**

```
Placement breakdown: placement name (Feed, Stories, Reels, Audience Network, Instagram Feed,
Instagram Stories, Instagram Reels, Facebook Feed, Messenger, etc.), spend, impressions,
clicks, CTR, CPC, CPM, conversions, CPA.
Date range: [user's range].
```

**Query E — Device Performance**

```
Device breakdown: device type (mobile, desktop, tablet), spend, impressions, clicks,
CTR, CPC, conversions, CPA, ROAS (if available).
Date range: [user's range].
```

**Query F — Geo Performance**

```
Geographic breakdown: country or region, spend, impressions, clicks, CTR, conversions, CPA.
Top 20 locations by spend. Date range: [user's range].
```

**Query G — Dayparting**

```
Time breakdown: day of week and hour of day, spend, impressions, clicks, conversions.
Date range: [user's range].
```

**Query H — Funnel Events**

```
Funnel event metrics per campaign: link clicks, landing page views, add to cart,
initiate checkout, purchase (or equivalent conversion events configured in the account).
Date range: [user's range].
```

**Query I — Audience Segment Comparison**

```
Ad set level audience performance: compare spend, CPA, ROAS, CTR across audience types —
interest targeting, lookalike audiences, remarketing/custom audiences, broad targeting.
Date range: [user's range].
```

> If any query fails or returns no data, note it in the report ("Data unavailable — check connector permissions or account configuration") and continue. Never block the full audit over one missing data layer.

---

## Phase 2 — Audit Engine

Process all fetched data through these 9 audit modules. Each scored module produces a **score** and **specific findings** (named campaigns, ad sets, or ads with real numbers).

Read `references/thresholds.md` for scoring benchmarks.

### Module 1: Executive Summary (no score — snapshot)

Compute account-wide totals for the selected period:

- Total spend, impressions, reach, clicks, CTR, CPC, CPM, frequency, conversions, CPA, ROAS (if available)
- Period-over-period delta for each metric (▲ or ▼ with %)
- One-sentence account health insight (e.g., "CPM rose 31% while CTR declined — a classic creative fatigue signal compounded by audience saturation.")

### Module 2: Wasted Spend Analysis (Score /20)

Identify budget going nowhere. Flag and quantify:

- Campaigns/ad sets with **spend > threshold and 0 conversions** → 🔴
- Ad sets with **ROAS < 0.5** (losing more than half of spend) → 🔴
- Ad sets with **CPA > 3× account average** → 🔴
- Ads with **high spend + CTR < 0.5%** → 🟡 (creative not resonating)
- Ad sets with **frequency > 5 + declining CTR** — fatigue-driven waste → 🔴

Compute: **Estimated wasted spend = sum of spend on 0-conversion and sub-threshold campaigns/ad sets**. Surface this prominently.

### Module 3: Campaign Performance Ranking (Score /20)

Rank all active campaigns:

- **Top performers**: highest ROAS or lowest CPA with meaningful spend → 🟢 Scale
- **Worst performers**: highest CPA or lowest ROAS with significant spend → 🔴 Fix/Pause
- Flag campaigns spending >15% of total budget with below-average performance → 🔴
- Period-over-period performance change per campaign

### Module 4: Ad Set Performance Audit (Score /20)

Evaluate ad set health across the account:

- Best ad sets by ROAS/CPA with scalable budget headroom → 🟢
- Worst ad sets consuming budget without results → 🔴
- Budget concentration: if >60% of spend in ≤2 ad sets → flag concentration risk
- Ad sets with high frequency (>4) competing internally → fragmentation signal
- Audience type breakdown: which performs best (interest / lookalike / remarketing / broad)

### Module 5: Creative Performance Audit (Score /20)

Evaluate ad-level performance — this is the most Meta-specific module:

- **Top creatives**: highest CTR + best CPA/ROAS
- **Low CTR creatives**: CTR < 0.5% with >1,000 impressions → needs refresh
- **High CPA creatives**: CPA > 2× account average → 🔴
- **Fatigue candidates**: frequency > 4 + CTR declining vs prior period → 🔴
- Note ad format distribution (video, static, carousel, story) and which formats perform best
- Optional: suggest refresh direction based on what's working (e.g., "video ads outperforming static by 2.4× CTR — expand video creative")

### Module 6: Creative Fatigue Detection (Score /20)

Meta-specific gold. Cross-reference frequency, CTR trends, and CPM:

- **Fatigued ad** = frequency > 4 AND (CTR declined vs prior period OR CPM rose >20%)
- **Critically fatigued** = frequency > 6 AND CTR dropped >30% → 🔴 Pause immediately
- Estimate fatigue impact: wasted impressions × CPM = cost of showing tired creative
- List each fatigued ad with: ad name, frequency, CTR change, CPA change, estimated waste
- Example finding: "Ad 'Summer Sale — Video' at frequency 5.8, CTR down 34%, adding ~$640 in wasted impressions."

### Module 7: Audience Performance Audit (Score /20) — replaces separate score

Analyze audience segments:

- Best audience type by CPA/ROAS (interest / lookalike / remarketing / broad)
- Worst performing segments eating budget → 🔴 reallocate
- Remarketing absent or underfunded vs prospecting → 🟡 opportunity
- Audience overlap signal: multiple ad sets with similar targeting in same campaign → fragmentation → 🟡
- Budget reallocation recommendation: "Shift X% from [worst audience type] to [best]"

### Module 8: Placement Performance Audit (Score /20)

Evaluate spend efficiency across placements:

- Best placements by CPA/CTR/ROAS → keep or expand
- Worst placements (high CPM + low CVR) → 🔴 exclude
- Flag: Audience Network often drives cheap impressions but poor conversions — check conversion rate
- Flag: Reels driving high reach but low conversion — check if awareness or conversion objective
- Placement concentration: if >70% spend in one placement → diversity risk
- Output: recommended placement exclusions list

### Module 9: Action Plan (no score — synthesis)

Consolidate all findings into a tiered, specific action plan. Every item must name the campaign, ad set, or ad.

**High Priority (this week):**

- Pause fatigued creatives (name each)
- Cut or pause zero-conversion ad sets (name each, show spend)
- Add placement exclusions (list them)
- Estimated combined savings from high-priority actions

**Medium Priority (this month):**

- Refresh creative on fatigue candidates
- Consolidate overlapping audiences
- Reallocate budget from underperformers to winners
- Fix low QS / poorly structured campaigns

**Growth Opportunities:**

- Scale winning remarketing campaigns
- Increase budget on top ROAS ad sets
- Expand best-performing creative formats
- Test new audiences based on lookalike winners

---

## Phase 3 — Build the HTML Audit Report

Generate a **single self-contained HTML file** as an artifact. This is the primary deliverable.

### Design Principles

- Dark header banner with account name + period + generation date + overall score
- Color system: 🔴 `#e53e3e`, 🟡 `#d69e2e`, 🟢 `#38a169`, Meta blue `#1877F2` as accent
- Each module is a card with a header, score badge (where applicable), findings table or list
- Visual score bars for all scored modules
- Overall health score as a large gauge/ring at the top
- Wasted spend callout box — visually prominent (large number, red accent)
- Creative fatigue table — dedicated section with frequency + CTR delta columns
- Placement heatmap or ranked table with exclusion recommendations
- Action plan as a tiered checklist (High / Medium / Growth with checkboxes)

### HTML Structure

```
[Header banner: Account name | Period | Score | Generated date]

[Executive Summary — KPI grid tiles with PoP deltas]
[Overall Health Score ring — X/100]

[Wasted Spend Callout — prominent estimated $ wasted]

[Module Score Overview — horizontal bars for all 7 scored modules]

[Campaign Ranking — sortable table, color-coded rows]
[Ad Set Audit — table with audience type column + status badges]
[Creative Performance — table with format badges + CTR/CPA]
[Creative Fatigue — dedicated table: frequency | CTR change | CPA change | status]
[Audience Audit — segment comparison table + reallocation note]
[Placement Audit — ranked table + exclusion recommendations box]

[Action Plan — tiered checklist, priority badges]
[Footer: "Generated with Meta Ads Auditor via Two Minute Reports"]
```

Use inline CSS only. No external dependencies except Google Fonts. File must render correctly when saved offline.

See `references/html_template.md` for the full CSS foundation and component patterns.

---

## Output Rules

- **Always use real data** — never fabricate metrics
- If a module's data is unavailable, note it clearly and skip gracefully
- If the account is genuinely healthy, say so — don't manufacture problems
- Keep tone direct and consultant-grade: the user wants insight, not padding
- Creative fatigue and wasted spend sections are the highest-value outputs — make them the most prominent
- The Action Plan is the most important section — every item must be specific (named asset, real number, estimated impact)
- After presenting the artifact, offer a 2-sentence verbal summary: what's most urgent and what the estimated savings opportunity is

Files in this skill

  • readme.md3.3 KB
  • skill.md12.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.