Free, open-source AI skills for Google Ads practitioners. Drop them into Claude Code and they work immediately.
Each skill is a structured set of rules, frameworks, or workflows that make AI smarter about PPC. Some are executable tools with Python scripts. Others are pure knowledge — diagnostic frameworks, safety protocols, reporting standards — that work with any AI setup.
Several skills in this repo include code that mutates live Google Ads accounts (e.g., uploading negative keywords, disabling automation, editing RSAs). Test any mutation script against a sandbox or non-production account before running it against live data. The author assumes no liability for ad spend impact, account changes, or business consequences resulting from use of these skills. See LICENSE for the full warranty disclaimer.
New to this? These five skills give you the most value with the least setup. Install them first.
| # | Skill | Why Start Here |
|---|---|---|
| 1 | Mutation Safety | Install this before anything else. Prevents AI from making changes to live accounts without your explicit approval. Two-step dry-run → approve → execute. |
| 2 | Ad Copy Verification Standard | Stops AI from hallucinating ad copy. Forces every claim to be sourced from the actual business website. Core principle: Empty > Inaccurate. |
| 3 | Investigation Methodology | Hypothesis-driven framework for diagnosing performance issues. Teaches AI to think like a senior PPC analyst instead of guessing. |
| 4 | Non-Serving Keyword Scanner | Quick win — finds keywords with zero impressions over 180 days. Run it once, clean up the dead weight. |
| 5 | Portfolio Health Prioritization | If you manage more than 10 accounts, this answers the daily question: which account do I look at first? |
Here's #1 in action — the two-step gate every mutation goes through:
# Install all five
for skill in mutation-safety ad-copy-verification-standard investigation-methodology non-serving-keyword-scanner portfolio-health-prioritization; do
mkdir -p .claude/skills/$skill
curl -sO --output-dir .claude/skills/$skill \
https://raw.githubusercontent.com/fourteenwm/ppc-ai-skills/main/$skill/SKILL.md
doneThe curl loop fetches each skill's SKILL.md only. Tool-backed skills — like the Non-Serving Keyword Scanner (#4) — also ship a scripts/ folder, so clone instead if you want everything:
# Or clone once and copy skills in, scripts/ folders included
git clone https://github.com/fourteenwm/ppc-ai-skills.git
mkdir -p .claude/skills
for skill in mutation-safety ad-copy-verification-standard investigation-methodology non-serving-keyword-scanner portfolio-health-prioritization; do
cp -r ppc-ai-skills/$skill .claude/skills/$skill
done| Skill | What It Does |
|---|---|
| Mutation Safety | Two-step approval system that prevents accidental changes to live Google Ads accounts |
| Ad Copy Verification Standard | Forces AI to source every ad claim from the business website — no hallucinated copy |
| Fair Housing Compliance | Blocks discriminatory targeting (age, income, zip codes) for property management advertising — Fair Housing Act compliance |
| MCC Hack Audit | Portfolio-wide scan of every manager (MCC) with access to any account in your tree — built after a real-world MCC link-fraud incident |
| Budget Guardian | 2-hour spend tripwire — alerts on 100%/120% monthly budget overruns to catch hijacked accounts, runaway PMax, and fat-fingered budget formulas. Alert-only, never pauses |
| Skill | What It Does |
|---|---|
| Investigation Methodology | Hypothesis-driven framework for diagnosing Google Ads performance issues |
| Impression Share Diagnostics | Decision tree for interpreting Search IS, Budget Lost IS, and Rank Lost IS under smart bidding |
| Underspending Investigation | Six-framework root-cause diagnosis for accounts pacing under tolerance — distinguishes budget-too-low from quality issues, low demand, and smart-bidding ramp-up. Read-only; produces conservative budget recommendations capped at +10% per change |
| Change History Checker | Script + query patterns for answering "what changed?" up to 90 days back via change_status — three times change_event's 30-day window — with the attribution ladder for "who did it" |
| Conversion Tracking Health | Audit conversion tracking across portfolios — catches primary conversion actions that went quiet or never fired on actively spending accounts |
| Lead Quality Pattern Analysis | 5 red-flag detection frameworks for diagnosing bot traffic, form spam, and low-intent leads |
| Lead Quality Recommendation Prioritization | 3-tier action framework for turning lead quality findings into prioritized fixes |
| GA4 Campaign Cross-Reference | Cross-analyze GA4 behavioral data with Google Ads campaign settings to find gaps |
| GA4 Cross-Analysis | GA4 data collection framework for diagnosing lead quality and conversion path issues |
| GA4 Lead Quality Investigation | Cross-analyze GA4 behavioral data with Google Ads settings to diagnose low-quality leads (no-shows, bot traffic, geo mismatches) — 5 red-flag frameworks, hypothesis-driven verification, 3-tier prioritized fixes |
| Account Diagnostic | 42-point account inspection (44 with the local-service preset) — like a mechanic's multi-point inspection: discrete GREEN/YELLOW/RED checks across 14 categories (pacing, conversion tracking, search-term waste, PMAX + Demand Gen ad-level automation, placements, more), scored into one verdict with estimated monthly waste, with triage rules and a per-check rubric. Read-only; console + CSV + optional color-coded Sheet (supersedes the old Account Audit) |
| Ads Checker | Creative-compliance audit — 10 checks (DKI, ad disapprovals, broken URLs, auto-applied recommendations, Fair-Housing-risk content, spelling, irrelevance, more) with run-over-run issue-history comparison and chronic-issue detection (3+ occurrences / 90 days). Read-only; severity-ranked Google Sheet output |
| Skill | What It Does |
|---|---|
| SQR Classifier | Paste search terms, get intent classification (high-intent, low-intent, informational, off-brand) |
| Geo Conflict Analyzer | GPT-powered check on whether a query conflicts with your active geo targets before you negative it |
| SQR Pipeline | End-to-end negative-keyword pipeline — pull search terms, classify with 3-run consensus, optional geo conflict check, human review, then two-step upload of approved negatives (supersedes the old SQR 3-Run + SQR Upload skills) |
| Neg Conflict Finder | Google Ads Script that finds every place a negative is silently blocking a positive — across the whole MCC, at every level (ad group, campaign, shared list, MCC shared list) |
| Account-Level Negative Keywords | Bulk-add account-level negatives (Admin → Account Settings) using the 3-step SharedSet pattern most guides miss — idempotent across portfolios, with state categorization (NO_SET / PARTIAL / COMPLIANT) |
| Skill | What It Does |
|---|---|
| Ad Copy Generation Framework | 23-element RSA copywriting framework with distribution formulas and verification checkpoints |
| RSA Refresh | Replace LOW-performing RSA assets with website-verified headlines and descriptions |
| RSA Bulk Edit | Find-and-replace text across RSA ads at scale — dry-run preview and a Google Ads Editor-ready review sheet |
| RSA Single-Account Generator | Generate a full RSA set (15 headlines + 4 descriptions per ad group) for one account from website-verified copy + live SERP competitive analysis + GBP review fallback |
| Skill | What It Does |
|---|---|
| Portfolio Health Prioritization | 5-tier triage framework — answers "which account do I look at first?" |
| Portfolio Pacing Rules | Budget pacing thresholds and tolerance rules for multi-portfolio management |
| Budget Recommendation Calculator | Conservative budget change framework with 5-10% increase caps and performance guardrails |
| Shared Budget Updater | Sheet-driven daily budget pusher — approve changes by adding a row, a GitHub Actions cron pushes them to Google Ads and marks them done. Consolidated Slack alerts on failures; ≤$0 guard; alert-don't-crash design |
| Skill | What It Does |
|---|---|
| PMax Builder | Generate Performance Max campaign CSV files for Google Ads Editor import |
| PMax Asset Automation | Audit and opt out of Google's auto-generated PMax headlines, descriptions, videos, and images |
| DGen Automation Disable | Bulk-disable Demand Gen ad-level asset automation with safety protocol |
| Skill | What It Does |
|---|---|
| Google Ads API Setup | Step-by-step guide to get your Google Ads API connection working |
| GAQL Query Patterns | Ready-to-use query templates for campaign analysis, search terms, and more |
| Google Ads Query | Natural language to GAQL query tool with Python runner script |
| Google Ads Samples | Reference library of official Google Ads API code samples |
| Skill | What It Does |
|---|---|
| Client Communication Standards | Background → Analysis → Conclusions reporting framework with data source attribution |
| Markdown to Sheets Presenter | Transform markdown reports into formatted Google Sheets for client presentation |
| Skill | What It Does |
|---|---|
| Competitor Analysis v2 | Structured competitive intelligence — website teardown across 5 competitors, 22-attribute ad scoring, positioning gaps, client-verified angle briefs |
| YouTube Placement Audit | Scan MCC for bad YouTube placements and aggregate by channel for bulk negation |
| Non-Serving Keyword Scanner | Find keywords with zero impressions over 180 days across accounts |
# macOS/Linux
curl -fsSL https://claude.ai/install.sh | sh
# Windows (PowerShell)
irm https://claude.ai/install.ps1 | iexmkdir -p .claude/skills/mutation-safety
curl -sO --output-dir .claude/skills/mutation-safety \
https://raw.githubusercontent.com/fourteenwm/ppc-ai-skills/main/mutation-safety/SKILL.mdOr clone the repo and copy any skill folder in — required for tool-backed skills, whose scripts/ folder the curl one-liner doesn't fetch:
git clone https://github.com/fourteenwm/ppc-ai-skills.git
mkdir -p .claude/skills
cp -r ppc-ai-skills/mutation-safety .claude/skills/Start Claude Code in your project directory. The skill loads automatically when relevant.
I'm Kurt Henninger. I manage Google Ads portfolios across property management and local services — over 110 accounts total.
I built these skills because AI is fast but not careful. It hallucinates phone numbers, overwrites live campaigns, generates ad copy from assumptions instead of facts. Every skill in this repo exists because something went wrong and I wanted to make sure it didn't happen again.
The philosophy is simple: engineered AI with guardrails beats raw prompting every time.
These 42 public skills are a subset of what I run in production. I use a larger production system of 85+ specialized skills to manage accounts daily. If you're curious about how the full system works or want to build something similar for your agency, I write about it here:
Website: fourteenwebmedia.com X: @KurtHenninger
These skills are the portable layer of a larger private system. The private layer holds everything that can't be shared — client context, account routing, and credentials — while the skills carry the method: frameworks, safety protocols, and query patterns. That separation is deliberate: skills are shareable precisely because they contain method, not data. Point them at your own credentials and account list and they work the same way they do in production.
Found a bug? Have a suggestion? Open an issue or submit a PR.
If you build something useful with these skills, I'd genuinely like to hear about it — drop me a note on X or open a discussion.
MIT License. Use these however you want.