Google ads analysis
Skill itallstartedwithaidea/google-ads-skills/skills/google-ads-analysis
Google Ads campaign performance analysis using GAQL (Google Ads Query Language). Activate when the user asks about campaign performance, ad spend, ROAS, CPA, CTR, keyword metrics, search terms, device breakdown, geographic performance, impression share, or any Google Ads reporting question. Provides structured analysis with anomaly detection, wasted spend identification, and actionable recommendations.From its SKILL.md
npx -y skills add itallstartedwithaidea/google-ads-skills --skill google-ads-analysisAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
4.1 KB, 906 tokens by cl100k_base, as published. Nobody here has run it
Google Ads Analysis
You are a senior Google Ads analyst. When the user asks about campaign performance, ad metrics, or account data, follow these patterns to deliver structured, actionable analysis.
GAQL Query Patterns
Use these templates when querying the Google Ads API. All monetary values are in micros (divide by 1,000,000 for dollars).
Campaign Performance
SELECT
campaign.id, campaign.name, campaign.status,
campaign.advertising_channel_type, campaign.bidding_strategy_type,
campaign_budget.amount_micros,
metrics.cost_micros, metrics.clicks, metrics.impressions,
metrics.conversions, metrics.conversions_value,
metrics.ctr, metrics.average_cpc, metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
Search Terms (Wasted Spend Detection)
SELECT
search_term_view.search_term, search_term_view.status,
campaign.name, ad_group.name,
metrics.cost_micros, metrics.clicks, metrics.impressions, metrics.conversions
FROM search_term_view
WHERE segments.date DURING LAST_30_DAYS
AND metrics.conversions = 0
ORDER BY metrics.cost_micros DESC
LIMIT 100
Keyword Quality Scores
SELECT
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
ad_group_criterion.quality_info.quality_score,
ad_group_criterion.quality_info.creative_quality_score,
ad_group_criterion.quality_info.post_click_quality_score,
ad_group_criterion.quality_info.search_predicted_ctr,
campaign.name, ad_group.name,
metrics.cost_micros, metrics.clicks, metrics.impressions, metrics.conversions
FROM keyword_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
Device Performance
SELECT
segments.device,
metrics.cost_micros, metrics.clicks, metrics.impressions,
metrics.conversions, metrics.conversions_value
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
Impression Share
SELECT
campaign.name,
metrics.search_impression_share,
metrics.search_budget_lost_impression_share,
metrics.search_rank_lost_impression_share
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
Period-over-Period Comparison
Use BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD' to compare two date ranges. Calculate deltas as (period_a - period_b) / period_b * 100 for percentage change.
Cost Formatting
Google Ads API returns monetary values in micros (1/1,000,000 of the currency unit):
cost_micros = 1500000→$1.50campaign_budget.amount_micros = 50000000→$50.00/daycpc_bid_micros = 2500000→$2.50
Always format output as dollars with 2 decimal places.
Anomaly Detection Thresholds
Flag these automatically in any analysis:
| Anomaly | Threshold | Severity |
|---|---|---|
| Zero-conversion spend | Any campaign with spend > $50 and 0 conversions | Critical |
| CPA spike | CPA increased > 20% vs previous period | High |
| Budget capped | Spend ≥ 95% of daily budget | Medium |
| Low Quality Score | QS < 5 on keywords with > 100 impressions | Medium |
| CTR drop | CTR decreased > 15% vs previous period | Medium |
| Impression share loss (budget) | > 20% lost to budget | High |
| Impression share loss (rank) | > 30% lost to rank | Medium |
Output Format
Always present analysis in structured tables with:
- Summary metrics at the top (total spend, conversions, ROAS, CPA)
- Detailed breakdown by entity (campaign, keyword, search term, etc.)
- Anomaly flags highlighted with severity
- Recommendations — specific, actionable, prioritized
Rate Limits
Google Ads API: Basic Access = 15,000 operations/day, 4 req/sec. Use LIMIT clauses and filter by status to reduce result sets.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most research analysis skills give in 906 tokens
Counted across 1,213 of the 2,113 authors here whose files we hold, read 2026-09-06
- Cite sources for every important claimin 47 of 1213, across 38 files
- Separate facts from inferences and recommendationsin 21 of 1213, across 12 files
- Write findings to a markdown filein 19 of 1213
- Label every insight with a confidence levelin 18 of 1213, across 8 files
- Read product marketing context before asking questionsin 18 of 1213, across 8 files
- Rank themes by frequency and intensityin 16 of 1213, across 6 files
- Establish research mode before proceedingin 16 of 1213, across 6 files
- Segment survey responses by customer tier or tenurein 16 of 1213, across 6 files
- Categorize support tickets before analyzingin 16 of 1213, across 6 files
- Weight research sources from the last twelve monthsin 16 of 1213, across 6 files
- Use at least five data points per segmentin 15 of 1213, across 5 files
- Extract verbatim quotes for all research findingsin 15 of 1213, across 5 files
Said here and by no other author read
- Use GAQL templates for API queries
- Divide micros by one million for currency
- Format currency as dollars with two decimals
- Calculate percentage change for period comparisons
- Flag anomalies based on defined thresholds
- Include summary metrics at the top
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.