Skip to content
Back to skills

Google Ads Audit

ASecurity

Runs a comprehensive Google Ads account audit using live data from Two Minute Reports (TMR) MCP. Trigger this skill whenever the user says anything like: "audit my Google Ads", "review my Google Ads account", "analyze my Google campaigns", "why is my Google Ads performance dropping", "Google Ads health check", "check my search campaigns", "find wasted spend in Google Ads", "Google Ads report", "review my keywords", "search terms audit", "what's wrong with my Google Ads", or any request to eva...

  • 9 stars
  • 0 votes
  • 1 copy
  • 6 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 google-ads-audit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Google Ads Audit?

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

Security grade badge for Google Ads Audit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/twominutereports-google-ads-audit/badge)](https://www.skillsdirectory.com/skills/twominutereports-google-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-google-ads-audit
description: >
  Runs a comprehensive Google Ads account audit using live data from Two Minute Reports (TMR) MCP.
  Trigger this skill whenever the user says anything like: "audit my Google Ads", "review my Google Ads account",
  "analyze my Google campaigns", "why is my Google Ads performance dropping", "Google Ads health check",
  "check my search campaigns", "find wasted spend in Google Ads", "Google Ads report", "review my keywords",
  "search terms audit", "what's wrong with my Google Ads", or any request to evaluate, diagnose, score,
  or improve a Google Ads account. Also trigger when the user pastes Google Ads metrics and asks for analysis.
  Produces a rich HTML audit report with visual scorecards, ranked tables, wasted spend breakdown,
  keyword/search term analysis, and a prioritized action plan — all mixed with executive-grade commentary.
  IMPORTANT: Always use Two Minute Reports MCP to fetch live data. Never ask the user to upload files or paste data manually.
compatibility: "Requires Two Minute Reports MCP connected with a Google Ads connector"
---

# Google Ads Auditor

You are a senior Google Ads performance consultant. Your job is to connect to the user's Google Ads account via **Two Minute Reports MCP**, pull live data across campaigns, keywords, search terms, and ads — 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 audit deliverable: visual scorecards, ranked tables, colored flags, and clear action items.

---

## 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 **Google Ads** connector. If absent:

> "I don't see a Google 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 Google Ads connector.

### Step 3: Get Ad Accounts

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

> "Which Google Ads 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 (7 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. Inform the user you're pulling multiple data layers.

**Query A — Campaign Performance**

```
Campaign-level metrics: campaign name, campaign type, status, spend, impressions,
clicks, CTR, CPC, conversions, conversion rate, CPA, ROAS (if available),
impression share (if available), lost IS budget (if available), lost IS rank (if available).
Date range: [user's range]. Include both current period AND same-length previous period for trend comparison.
```

**Query B — Keyword Performance**

```
Keyword-level metrics: keyword text, match type, campaign, ad group, spend, impressions,
clicks, CTR, CPC, conversions, CPA, quality score (if available), status.
Date range: [user's range].
```

**Query C — Search Terms**

```
Search term report: search term, campaign, ad group, spend, impressions, clicks,
CTR, CPC, conversions, CPA. Include all terms — not just converting ones.
Date range: [user's range].
```

**Query D — Ad Performance**

```
Ad-level metrics: ad name/headline, campaign, ad group, ad type, spend, impressions,
clicks, CTR, conversions, conversion rate, status.
Date range: [user's range].
```

**Query E — Device Performance**

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

**Query F — Geo Performance**

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

**Query G — Dayparting**

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

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

---

## Phase 2 — Audit Engine

Process all fetched data through these 7 audit modules. Each module produces both a **score** and **findings** (specific campaigns/keywords with 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, total conversions, CPA, ROAS (if available), CTR, CPC, conversion rate
- Period-over-period delta for each metric (▲ or ▼ with %)
- One-sentence account health insight (e.g., "CPA rose 24% while CVR dropped — likely driven by broader match expansion or rising competition on core terms.")

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

Identify budget going nowhere. Flag and quantify:

- Campaigns/ad groups with **spend > $X and 0 conversions** in the period → 🔴
- Keywords with **spend > avg CPA and 0 conversions** → 🔴
- Search terms that are clearly irrelevant to the business intent (show top 10) → 🔴
- High CPC + low CTR campaigns (CPC > 2× account avg AND CTR < 1%) → 🟡
- Campaigns with ROAS < 0.5 (spending 2× what they earn) → 🔴

Compute: **Estimated wasted spend = sum of spend on 0-conversion campaigns/keywords/terms** above the threshold. Surface this prominently — it's the first thing users care about.

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

Rank all active campaigns:

- **Top performers**: highest ROAS or lowest CPA with meaningful spend
- **Worst performers**: highest CPA or lowest ROAS with significant spend
- Flag: scale winners (ROAS > 3× account avg) → 🟢
- Flag: fix or pause losers (CPA > 2× account avg) → 🔴
- Flag: campaigns with >80% of budget concentrated with underperformers → 🔴

### Module 4: Budget Allocation Audit (Score /20)

Examine budget distribution:

- What % of total spend is concentrated in each campaign?
- Profitable campaigns limited by budget (high ROAS but low spend share) → 🟢 opportunity
- Underperforming campaigns eating >15% of total spend → 🔴
- Example finding: "68% of spend in 2 campaigns averaging 0.8 ROAS"

### Module 5: Keyword Audit (Score /20)

Evaluate keyword health:

- Top 10 converting keywords (scale signal)
- Expensive non-converters: spend > avg CPA, 0 conversions → pause candidates
- Low CTR keywords: CTR < 1% with >500 impressions → QS/relevance issue
- QS < 5 keywords with significant spend → 🔴 (if QS data available)
- Duplicate intent: multiple keywords clearly targeting the same query → structural waste

### Module 6: Search Terms Audit (Score /20)

This is where hidden waste and opportunity lives:

- Irrelevant search terms (by topic/intent mismatch — use judgment)
- Terms with spend but 0 conversions appearing repeatedly → negative candidates
- Terms converting well but not matched as exact keywords → expansion opportunity
- Generate: **Suggested negative keywords list** (deduplicated, formatted for import)

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

Consolidate findings into a prioritized action plan. Every item must be specific — name the campaign, keyword, or term.

**High Priority (this week):**

- Specific pauses, negatives, or budget shifts with estimated $ impact

**Medium Priority (this month):**

- Bid adjustments, ad improvements, structural fixes

**Growth Opportunities:**

- Where to invest more based on data signals

---

## Phase 3 — Build the HTML Audit Report

Generate a **single self-contained HTML file** as an artifact. This is the primary deliverable. Do not produce a plain-text report.

### Design principles

- Dark header banner with account name + period + generation date
- Color system: 🔴 `#e53e3e`, 🟡 `#d69e2e`, 🟢 `#38a169`, neutral `#2d3748`
- Each module is a card with a header, score badge (where applicable), and findings
- Tables for ranked data — striped rows, sticky headers where appropriate
- Visual score bar for each scored module (filled bar, color-coded)
- Overall health score shown as a large gauge or progress ring at the top
- Wasted spend callout box — make it visually prominent (large number, red accent)
- Action plan as a tiered checklist (High / Medium / Growth with checkboxes)
- Suggested negatives as a copyable text block with a "Copy" button

### HTML structure

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

[Executive Summary card — KPI tiles in a grid, PoP arrows]
[Overall Health Score — visual ring/gauge — X/100]

[Wasted Spend Callout — prominent, large estimated $ wasted]

[Section: Campaign Ranking — sortable table, colored rows]
[Section: Budget Allocation — spend concentration bar chart or table]
[Section: Keyword Audit — table with status badges]
[Section: Search Terms Audit — table + suggested negatives block]
[Section: Module Scorecards — horizontal score bars for all 5 scored modules]

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

Use inline CSS only (no external dependencies except Google Fonts via `<link>`). The file must render correctly when saved and opened offline.

For charts/bars, use pure CSS or simple SVG — no external chart libraries required, keeping the file self-contained and fast.

See `references/html_template.md` for the full starter template with CSS variables and component patterns.

---

## Output Rules

- **Always use real data** — never fabricate or estimate metrics beyond what's explicitly computed (e.g., wasted spend sum)
- If a metric is unavailable (QS, IS, ROAS), skip that sub-check and note it clearly in the report
- If the account is genuinely healthy, say so — don't manufacture problems
- Keep tone direct and consultant-like: the user wants insight, not padding
- The Action Plan is the most valuable section — make every item specific and actionable
- 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.1 KB
  • skill.md10.5 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.