mrkeyoor.com_
Tue 01 Sept 17:44 UTC
Automationevaluationupdated 26 Aug 2026

claude-ads review

Claude Ads is a Claude Code skill and Python toolkit for auditing, planning, monitoring, and reporting paid advertising across 12 platforms. It turns authorized exports or account reads into evidence-backed findings and drafts changes behind approval, rollback, and verification gates.

+151stars / 7d
Verdict

Our Claude Ads run installed 60 packages, passed its build, and reported 506 passing tests, but pip-audit still found 3 known vulnerabilities. Use it when a Claude Code based media team wants conservative, evidence-labeled work across several platforms and accepts that humans remain responsible for every mutation. Keep independent checks around data capture and client-facing reports, especially until issue 61's false-success path is resolved in the version you run.

We ran it

Lab card: what happened when we ran claude-adsScreenshot of claude-ads (claude-ads.md)
Install✓ · 33s60 packages · 341 MB
Build✓ · 10s
Tests✓ · 56s506 passed · 0 failed · 23 skipped of 506 (pytest)
Known vulns3(pip-audit)
Repo339 files~21,586 lines of source · 5.4 MB · 2 CI workflows · tests dir

Answers from our run

Does claude-ads build from source?

Dependencies installed in 33 seconds (60 packages), and the build succeeded in 10 seconds. We cloned commit 669c760 into a clean Debian container with 3 CPUs and no project-specific setup.

Do claude-ads's tests pass?

Yes: 506 of 506 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does claude-ads have known vulnerabilities in its dependencies?

pip-audit flagged 3 known advisories in the dependency tree at the time of our run.

Who should not use claude-ads?

Buyers who need identical behavior in every coding agent: the README calls Claude Code the canonical runtime and says other hosts work only where their skill runtime supports the files.

What are the alternatives to claude-ads?

Google Ads Python Client, Meta Business SDK, Robyn. Our Claude Ads run installed 60 packages, passed its build, and reported 506 passing tests, but pip-audit still found 3 known vulnerabilities.

Setup3/533-second install; browser, PDF, and platform access add setup
Docs5/5Commands, evidence, scoring, privacy, and write gates are explicit
Community4/58,515 stars with active August issue and pull request work
Maturity3/5Large passing suite, offset by 3 advisories and a false-success bug

Who it’s for

Agencies and in-house performance teams already using Claude Code for paid-media work.
Consultants who need dated evidence, confidence labels, and repeatable JSON reports.
Operators managing several ad platforms who want one audit and planning vocabulary.
Teams willing to configure privacy rules, account IDs, spending ceilings, approvals, and platform credentials.

Who it’s NOT for

Buyers who need identical behavior in every coding agent: the README calls Claude Code the canonical runtime and says other hosts work only where their skill runtime supports the files.
Teams expecting autonomous account changes: writes require an enabled operation, object IDs, a diff, owner approval, idempotency, rollback, and post-change verification; permanent deletion is unsupported in v2.
Analysts who cannot validate fetch failures independently: issue 61 reports the landing-page analyzer exiting 0 and emitting plausible all-fail grades when no page was fetched.
Organizations unwilling to expose ad account data or creative material to an agent and configured platform APIs, even with the documented privacy controls.
Teams requiring a vulnerability-free dependency audit: our pip-audit found 3 known vulnerabilities in the installed environment.

Setup reality

Our sandbox installed 60 Python packages in 33 seconds and used 341 MB on disk. The build succeeded in 10 seconds. Tests succeeded in 56 seconds; pytest reported 506 passed, 0 failed, and 23 skipped of 506. Pip-audit found 3 known vulnerabilities.

Managed installation supports CPython 3.11 and 3.12. Claude Code uses the native plugin flow; local installers can target Codex or Gemini. Platform reads need authorized exports or account credentials, while browser capture requires Playwright and PDF output requires WeasyPrint plus Pango.

The default operation is read-only. Live changes need capability, account, approval, idempotency, audit, verification, and rollback configuration. Credentials must remain in environment variables, an OS keychain, or a secret manager.

Twelve ad platforms use one evidence contract

Claude Ads covers Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, Reddit, Snapchat, X, Apple, Amazon, and Pinterest advertising. Commands set up account rules, audit platforms, plan campaigns, create briefs and assets, monitor delivery, design experiments, and render reports. A central conductor splits work among bounded workers and collects versioned JSON. Markdown, HTML, and optional PDF are generated from that same validated bundle.

The shared model is useful for an agency that otherwise maintains 12 platform checklists. Each platform has its own skill, audit worker, capability declaration, and control reference. A failed required worker makes the overall run partial rather than complete. That rule is more valuable than a broad platform logo grid because it prevents one unavailable account from disappearing inside a portfolio score.

Scores separate account health from missing evidence

Controls return pass, fail, unknown, or not applicable. Evidence coverage of 80% or more receives a grade, 60% to 79% is provisional, and anything below 60% is insufficient. Unknown controls lower coverage without changing the health calculated from known controls. Disabled, premium, beta, unavailable, and ineligible features remain outside the score.

This separation reduces a common reporting error. Missing access can make an account look artificially clean if absent checks are treated as passes, or unfairly bad if they become failures. Claude Ads keeps those concepts apart and refuses a health score when the platform profile is disabled or unapproved. Teams still need to inspect the underlying controls because a neat percentage cannot repair stale exports or the wrong account scope.

What happened when we ran it

Our sandbox installed 60 Python packages in 33 seconds and used 341 MB. The build completed in 10 seconds. Tests completed successfully in 56 seconds, with pytest reporting 506 passed, 0 failed, and 23 skipped of 506. Pip-audit found 3 known vulnerabilities in the installed dependency set.

We ran commit 669c760 in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets. The checkout contained 339 files, about 21,586 lines of source, occupied 5.4 MB, included a tests directory and 2 CI workflow files, and had no Dockerfile. We did not connect an ad account, fetch a landing page, generate media, or apply a remote change.

Read-only defaults put seven gates before a write

All adapters begin in read-only mode. An account mutation requires an implemented and tested capability, exact account and object IDs, a readable before-and-after diff, owner approval within defined ceilings, an idempotency key, an audit destination, rollback, and a verification window. Remote state must still match the expected precondition. Missing ceilings stop the write, and permanent deletion is unsupported in v2.

That is the right bias for advertising accounts where a duplicated budget or disabled campaign can spend money or stop revenue. It also means /ads launch --draft and /ads optimize --draft should be read literally: the primary output is a proposed plan. Organizations must wire each enabled platform operation, credential, approval role, and audit location before claiming operational automation.

Landing-page failures can look like genuine audit findings

Issue 61 documents a dangerous failure mode in the landing-page analyzer on Windows with Python 3.12. A blocked browser request returned empty measurements, printed fail grades for relevance, schema, call to action, and mobile behavior, then exited with status 0. The actual fetch error appeared only in an error field after the plausible report.

The report gives a direct consequence: a wrapper or agent checking only the process code can treat a failed fetch as a successful audit of a bad page. Until the exact installed version proves otherwise, consumers should reject any landing-page result carrying an error, missing title, absent timing values, or zero words. A successful exit code is insufficient evidence that browser capture occurred.

Claude Code is canonical while other hosts vary

The native installation path adds a Claude Code marketplace and installs the plugin. Standalone skill files can target Codex, Gemini, Cursor, Windsurf, Goose, and compatible hosts where their runtime supports the contract. Managed dependencies support CPython 3.11 and 3.12 on the declared operating-system wheel matrix. Unsupported interpreters fail before changing the destination.

Optional paths add system work. Browser capture needs an operator-installed Playwright browser payload. PDF rendering needs WeasyPrint and Pango libraries. Credentials belong in environment variables, a keychain, or an approved secret manager and must not enter profiles, reports, logs, prompts, or Git history. A skill-only install can omit managed Python dependencies, but then those helpers are unavailable until the operator provides them.

July release code still has active August review work

GitHub reported 8,515 stars, 38 combined issues and pull requests, and a last repository push on July 13, 2026. Release v2.0.1 arrived the same day as a public-mirror documentation patch. Open issues and pull requests were still active in August, including landing-page error handling, installer behavior, and an optional image-provider adapter. Health therefore looks active even though the main branch push date is older than the latest discussion.

Claude Ads is a control system for disciplined operators, not a substitute for media judgment. Its 506 passing tests and explicit partial-run rules make it more credible than a folder of prompts. The 3 audit findings and false-success report keep human review mandatory. Start with exports and read-only audits, compare findings with the platform UI, and enable one reversible write capability only after its verification path works end to end.

Alternatives

ProjectWhat it isPick it when
Google Ads Python ClientGoogle's Python client for direct Google Ads API access.pick this instead when Google Ads is the only platform and you want explicit API code rather than an agent workflow.
Meta Business SDKMeta's Python SDK for Marketing API objects and account operations.pick this instead when Meta is the sole platform and your team will build its own approval and reporting layer.
RobynAn open-source marketing-mix modeling package for budget and channel analysis.pick this instead when causal budget allocation is the main job rather than account audits and campaign operations.

What people are saying

  1. [github-trending] AgriciDaniel/claude-ads

Sources

  1. Claude Ads README
  2. Claude Ads repository
  3. Claude Ads v2.0.1 release
  4. Issue 61: landing-page fetch failure exits successfully

More automation reviews

rclone · lego · OpenCLI · web-access · Karabiner-Elements · WiiUDownloader · the whole board →