Query, audit, and optimize Google Ads campaigns. Use an attached browser or the Google Ads API for campaign, keyword, budget, conversion-tracking, and wasted-spend analysis, or when the user explicitly requests a reviewed account change. Defaults to read-only reporting; account mutations require a bounded preview and action-time approval.
71
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Medium
Suggest reviewing before use
Analyze Google Ads safely. Stay read-only unless the user explicitly requests an account change and approves the exact proposed diff at action time.
Browser mode requires a user-attached, logged-in Google Ads session. API mode requires Python plus locally configured Google Ads credentials. Neither mode is a universal activation requirement.
Choose from capabilities that are actually available; do not make either mode a universal prerequisite.
Safe API readiness checks inspect presence and behavior only:
python3 -c "from google.ads.googleads.client import GoogleAdsClient; print('google-ads client available')"
test -r "$HOME/.google-ads.yaml" && echo "Google Ads config file is readable"Do not display the file or environment values. A browser-only workflow does not require Python or API credentials.
references/api-setup.md completely.references/browser-workflows.md completely.references/mutation-workflow.md completely after gathering the current state.Never recommend a pause, budget change, or bid change from one metric alone. Interpret performance using the user's goal and, where relevant:
Optimization score is a Google recommendation signal, not an automatic action threshold. A zero-conversion or high-CPA entity is an investigation candidate until the relevant context is checked.
| Question | Minimum evidence |
|---|---|
| Campaign performance | Spend, conversions or key business outcome, value when available, date range, comparison period |
| Wasted-spend candidates | Search terms or keywords, spend, clicks, conversion lag, negatives, match type, campaign goal |
| Budget constraints | Lost impression share, budget status, marginal return, campaign priority, recent changes |
| Conversion health | Primary actions, recording status, last activity, attribution, tag/import diagnostics |
| Policy or delivery issues | Entity status, policy details, dates, affected scope, recent edits |
Use a compact evidence table:
| Entity | Observation | Goal context | Evidence period | Uncertainty | Recommendation |
|---|
Then list proposed account changes separately as not executed. Each proposal must include the exact entity identifiers and current and proposed values so it can enter the mutation workflow if the user chooses.
The initial request establishes intent, not approval for an unseen diff. For any pause, enable, bid, budget, targeting, conversion, label, or other account mutation:
references/mutation-workflow.md.If identity, scope, validation, approval, or readback cannot be completed, stop without changing the account.
These instructions use version-neutral service and field concepts and were reviewed on 2026-08-29 against the then-current Google Ads API v25.1 documentation and Python client patterns. Before changing API code or publishing a new skill version, re-check the official release notes, upgrade guide, client library guide, and limits. Do not force an API version in a client call unless the tested client requires it.
439cd3a
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.