Preview

What it is.
It authenticates against the Google Ads API and queries campaign, keyword, quality score and conversion data, so a spend question gets answered from the account instead of a pasted screenshot.
Setup is the whole job: an OAuth client, a developer token you apply for through a manager account, the customer ID without dashes, and the login customer ID when a manager account sits in the chain.
Once the credentials are in a dotenv file the questions get cheap. Wasted spend by match type, quality score by keyword, conversion counts by campaign, all in one sentence each.
What you get.
- Campaign, keyword and conversion data queried live from the account
- Quality score and cost per click reporting without opening the interface
- An OAuth flow documented step by step, including the adwords scope
- Credentials read from .env, .env.local or ~/.claude/.env.global
- Output you can pass into another skill, because it arrives as data
How to set it up.
Install with npx openclaudia install google-ads-report.
Apply for a developer token through a Google Ads manager account. This is the step with a waiting period, so start it first.
Create an OAuth client and set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET.
Set GOOGLE_ADS_CUSTOMER_ID without dashes. The account ID is displayed as XXX-XXX-XXXX and the API wants the digits only.
Add GOOGLE_ADS_LOGIN_CUSTOMER_ID when you access the account through a manager account, or the calls come back empty.
Run the OAuth exchange once with the adwords scope and store the refresh token alongside the rest.
Pricing Plans
Free. MIT license.
The Google Ads API is free to query at normal volumes. Checked against the skill file in July 2026.
Use cases
A spend question, answered live
Someone asks what a campaign spent last month and you don't want to open a report builder. Ask in plain language with a date range and the answer comes straight off the account.
Quality score without the interface
You want quality score by keyword across the account. One query returns it alongside cost per click and conversions, with no export step in the way.
Data for other skills
Iterate mode in ad-creative and a waste audit both want performance data. The output arrives as data, so no screenshot to retype, so it passes straight into the next skill.
Best for
Answering a spend question fast
The account is the source, so there is no export step and no stale screenshot in the conversation.
Wasted spend audits
Keyword-level cost and conversion data in the same query is what a negative keyword decision needs.
Feeding ad-creative with performance data
Iterate mode in ad-creative wants CSV or pasted performance data, and this is where it comes from.