Claude Ads: paid-media audits that refuse to guess
Claude-first paid-media operations skill for Claude Code across 12 ad platforms (Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, Apple, Amazon, Reddit, Pinterest, Snapchat, X): source-grounded audits, deterministic scoring, versioned JSON reports, and capability-gated account changes.
At a glance
- What is it?
- AgriciDaniel/claude-ads is an MIT licensed Claude Code skill covering twelve advertising platforms, turning account exports into source-grounded audits, plans and reports. It is read-only by default, gating any live change behind approval, idempotency, verification, audit and rollback, and it grades evidence coverage separately from account health.
- Who is it for?
- Adopt Claude Ads if you run paid media across several of the twelve supported platforms and want audits that state their own evidence coverage, with account changes kept behind approval, idempotency, verification, audit and rollback gates rather than applied on a schedule. It suits agencies producing recurring client reports, since the canonical output is versioned JSON with Markdown, HTML and PDF rendered from the same bundle.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What it does and for whom
Claude Ads is a Claude-first paid-media operations skill for agencies, consultants and in-house performance teams. The README says it turns authorized exports or account reads into source-grounded audits, plans, creative workflows, experiments, monitoring and reports.
Twelve platforms are covered as first-class surfaces. The search, video and social segment holds Google Ads, Meta Ads, YouTube Ads, LinkedIn Ads, TikTok Ads, Microsoft Advertising, Reddit Ads, Snapchat Ads and X Ads. The commerce and retail media segment holds Apple Ads, Amazon Ads and Pinterest Ads.
The README says each platform has a focused skill, audit worker, control reference, capability declaration and testable routing surface, with a capability manifest in the repository as the authoritative record for live reads and writes.
The audience is someone running several of these platforms at once and tired of reconciling nine exports by hand. A single-platform advertiser with one Google Ads account gets less from the breadth.
Read-only by default, and what gating means
The design decision worth the most attention is the write posture. The README states the tool is read-only by default, and that live changes stay disabled until the exact platform and operation pass approval, idempotency, verification, audit and rollback gates.
Five gates is a lot, and each one addresses a specific way automated account changes go wrong. Approval means a person said yes to this operation. Idempotency means running it twice does not double the change. Verification means the change was confirmed after the fact. Audit means it was recorded. Rollback means it can be undone.
The commands reflect it. Both the launch and optimize paths carry a --draft flag, so the default action is to produce a mutation plan rather than to mutate anything.
That is the right default for anything touching an ad spend, and it is also a limitation: if you want automation that applies changes unsupervised, this is deliberately not built to do it.
The command surface
The README documents twelve commands plus platform shortcuts. Setup builds a client, account, KPI, privacy and guardrail profile. Audit runs a complete or scoped evidence-backed check. Plan builds channel, campaign, budget, competitor and measurement plans. Create produces copy, image, video or product-photo assets. Monitor reviews pacing, delivery, tracking, fatigue, policy and performance. Report renders a validated JSON run bundle. Research refresh updates platform, policy, API, benchmark and ecosystem evidence. Validate checks contracts, runs, capabilities, maturity or release readiness. Status and next show where you are and the highest priority blocker.
Platform shortcuts such as /ads google, /ads meta, /ads amazon and /ads reddit route to the matching platform audit.
Two details matter operationally. The command is /ads for standalone installs and /claude-ads:ads when installed as a Claude Code plugin, with both loading the same skill contract. And research refresh existing as a first-class command tells you that the platform knowledge inside the skill goes stale and is expected to be refreshed deliberately.
Installing it
For Claude Code, the README gives the native plugin flow:
/plugin marketplace add agricidaniel/claude-ads
/plugin install claude-ads@ai-marketing-hub-claude-adsThere is a trap here the README calls out: marketplaces added before v2.0.0 are still held under the stale local alias agricidaniel-claude-ads, which must be removed before re-adding and installing.
Installing from a clone of the public repository is the other documented route:
git clone https://github.com/AgriciDaniel/claude-ads.git
cd claude-ads
bash install.sh --source=localOther hosts are selected explicitly, and the README names Codex, Gemini, Cursor, Windsurf and Goose as able to consume the same skill files where their runtime supports them:
bash install.sh --target=codex --source=localManaged dependencies support CPython 3.11 and 3.12, and the README says unsupported interpreters fail before the destination changes, so a newer Python will not silently produce a broken install. Use --no-deps for a skill-only install. Uninstalling removes only manifest-owned files via uninstall.sh or uninstall.ps1.
The README also warns never to pipe a remote installer directly to a shell, and recommends a host plugin flow or a tagged release archive with a verified SHA-256 checksum.
Conductor, workers and the canonical bundle
The architecture is described as one conductor owning scope, policy, aggregation and final artifacts, with workers that analyze bounded slices and return schema-valid findings.
The sentence that matters most is about failure: required-worker failure makes the run partial, and it is never silently presented as a complete audit.
That is unusual and correct. Most reporting tools aggregate whatever came back and present a number, so a platform that failed to export looks like a platform with no problems. Here a partial run is labelled partial.
The canonical result is versioned JSON, and Markdown, HTML and PDF are renderings of that same validated bundle. Reports are therefore reproducible from the JSON and diffable between runs, which is what you want when a client asks what changed since last month.
Two optional capabilities need host dependencies the README lists separately: browser capture requires an operator-installed Playwright browser payload, and PDF rendering requires the host's WeasyPrint and Pango system libraries.
Evidence coverage is graded separately from health
The scoring model is the part that shows the most thought, and it is worth understanding before reading a report.
Controls are recorded as pass, fail, unknown or not_applicable. Health, evidence coverage, regulatory exposure and opportunities are kept separate rather than collapsed into one number. Unknown controls reduce evidence coverage without changing known health, so a gap in the data does not look like a problem in the account or the reverse.
Coverage thresholds are stated: 80% or more is graded, 60 to 79% is provisional, and below 60% is insufficient evidence.
That is the honest way to score an audit built on exports, because the exports are always incomplete. A report that says provisional at 65% coverage is telling you how much to trust it, which is more useful than a confident score built on partial data.
The release notes show this being enforced in practice: v2.0.2 stops failed landing-page analyses from producing misleading grades, and validates generated image output before treating it as a successful artifact.
Alternatives
The first alternative is doing it directly: pull from each platform's API or reports into a warehouse and write your own checks. That gives you full control over definitions and evidence, and it costs you the twelve platform connectors, the scoring model and the report bundle, which is months of work to approximate.
The second is a commercial PPC audit platform, which gives you a health score and a list of recommendations per account, usually priced per account or per spend band. Those tools are mature and their rules are fixed, so you get consistency and you cannot change what they check or how they weigh it, and they generally will not tell you how much of your account they actually saw.
Claude Ads sits between them: closer to the custom route in flexibility, closer to the commercial route in coverage, and distinct in that evidence coverage is a graded, reported quantity rather than an implied one.
The catch is that it needs Claude Code or another Agent Skills host, Python 3.11 or 3.12, and optionally Playwright and WeasyPrint. That is more setup than signing up for a hosted audit tool.
Licence, the two homes, and upkeep
Claude Ads is MIT licensed. The README states plainly that it ships from two homes: the public release at AgriciDaniel/claude-ads, MIT with no membership required, and a community mirror at AI-Marketing-Hub/claude-ads where members of a paid community get early access and direct collaboration.
That arrangement means the public repository is current but not necessarily first. If you want to contribute upstream or see what is coming, the community is where that happens.
Version 2.0.2 was published on 2026-09-10 and 2.0.1 on 2026-07-13, with the last push on 2026-09-11. The v2.0.2 notes are a good indication of what maintaining this costs: Google Search and DSA overlap and duplicate-keyword checks, Meta cold-start distinctions between account, Pixel and conversion, a corrected Microsoft conversion mapping to ConversionsQualified, escaping untrusted PDF report text, and refreshed platform evidence.
Escaping untrusted report text is the one to notice. Reports are generated from data that comes out of ad platforms and PDFs, so treating that text as untrusted is the right instinct, and it was added in a patch rather than being there from the start.
Editorial conclusion
Adopt Claude Ads if you run paid media across several of the twelve supported platforms and want audits that state their own evidence coverage, with account changes kept behind approval, idempotency, verification, audit and rollback gates rather than applied on a schedule. It suits agencies producing recurring client reports, since the canonical output is versioned JSON with Markdown, HTML and PDF rendered from the same bundle. Do not adopt it if you want unsupervised automation, if you are not on Claude Code or another Agent Skills host, or if your Python is newer than 3.12. Check the install alias first if you added the marketplace before v2.0.0, remove the stale one, and prefer a tagged release archive with a verified checksum over a remote installer. Refresh platform evidence with /ads research refresh before trusting an audit, because the platform knowledge inside the skill is expected to go stale.
Frequently asked questions
Which ad platforms does Claude Ads support?
Twelve: Google Ads, Meta Ads, YouTube Ads, LinkedIn Ads, TikTok Ads, Microsoft Advertising, Reddit Ads, Snapchat Ads and X Ads for search, video and social, plus Apple Ads, Amazon Ads and Pinterest Ads for commerce and retail media.
Can Claude Ads change my ad accounts?
It is read-only by default. Live changes stay disabled until the exact platform and operation pass approval, idempotency, verification, audit and rollback gates, and both the launch and optimize commands carry a --draft flag.
How do I install Claude Ads?
For Claude Code the README gives /plugin marketplace add agricidaniel/claude-ads followed by /plugin install. From a clone, use bash install.sh --source=local, or the PowerShell equivalent, with CPython 3.11 and 3.12 supported.
What does a Claude Ads report contain?
The canonical output is versioned JSON, with Markdown, HTML and optional PDF rendered from that same validated run bundle. Health, evidence coverage, regulatory exposure and opportunities are reported separately.
What does provisional grading mean in Claude Ads?
It refers to evidence coverage: 80% or more is graded, 60 to 79% is provisional and below 60% is insufficient evidence. Unknown controls reduce coverage without changing known health.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/agricidaniel-claude-ads)