{"id":"197b73b6-986c-47ca-aa67-8fa1c982eda8","shortId":"ujkY8M","kind":"skill","title":"google-ads-analysis","tagline":"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 reportin","description":"# Google Ads Analysis\n\nYou 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.\n\n## GAQL Query Patterns\n\nUse these templates when querying the Google Ads API. All monetary values are in micros (divide by 1,000,000 for dollars).\n\n### Campaign Performance\n\n```sql\nSELECT\n  campaign.id, campaign.name, campaign.status,\n  campaign.advertising_channel_type, campaign.bidding_strategy_type,\n  campaign_budget.amount_micros,\n  metrics.cost_micros, metrics.clicks, metrics.impressions,\n  metrics.conversions, metrics.conversions_value,\n  metrics.ctr, metrics.average_cpc, metrics.cost_per_conversion\nFROM campaign\nWHERE segments.date DURING LAST_30_DAYS\nORDER BY metrics.cost_micros DESC\n```\n\n### Search Terms (Wasted Spend Detection)\n\n```sql\nSELECT\n  search_term_view.search_term, search_term_view.status,\n  campaign.name, ad_group.name,\n  metrics.cost_micros, metrics.clicks, metrics.impressions, metrics.conversions\nFROM search_term_view\nWHERE segments.date DURING LAST_30_DAYS\n  AND metrics.conversions = 0\nORDER BY metrics.cost_micros DESC\nLIMIT 100\n```\n\n### Keyword Quality Scores\n\n```sql\nSELECT\n  ad_group_criterion.keyword.text,\n  ad_group_criterion.keyword.match_type,\n  ad_group_criterion.quality_info.quality_score,\n  ad_group_criterion.quality_info.creative_quality_score,\n  ad_group_criterion.quality_info.post_click_quality_score,\n  ad_group_criterion.quality_info.search_predicted_ctr,\n  campaign.name, ad_group.name,\n  metrics.cost_micros, metrics.clicks, metrics.impressions, metrics.conversions\nFROM keyword_view\nWHERE segments.date DURING LAST_30_DAYS\nORDER BY metrics.cost_micros DESC\n```\n\n### Device Performance\n\n```sql\nSELECT\n  segments.device,\n  metrics.cost_micros, metrics.clicks, metrics.impressions,\n  metrics.conversions, metrics.conversions_value\nFROM campaign\nWHERE segments.date DURING LAST_30_DAYS\n```\n\n### Impression Share\n\n```sql\nSELECT\n  campaign.name,\n  metrics.search_impression_share,\n  metrics.search_budget_lost_impression_share,\n  metrics.search_rank_lost_impression_share\nFROM campaign\nWHERE segments.date DURING LAST_30_DAYS\n```\n\n### Period-over-Period Comparison\n\nUse `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.\n\n## Cost Formatting\n\nGoogle Ads API returns monetary values in **micros** (1/1,000,000 of the currency unit):\n\n- `cost_micros = 1500000` → `$1.50`\n- `campaign_budget.amount_micros = 50000000` → `$50.00/day`\n- `cpc_bid_micros = 2500000` → `$2.50`\n\nAlways format output as dollars with 2 decimal places.\n\n## Anomaly Detection Thresholds\n\nFlag these automatically in any analysis:\n\n| Anomaly | Threshold | Severity |\n|---|---|---|\n| Zero-conversion spend | Any campaign with spend > $50 and 0 conversions | Critical |\n| CPA spike | CPA increased > 20% vs previous period | High |\n| Budget capped | Spend ≥ 95% of daily budget | Medium |\n| Low Quality Score | QS < 5 on keywords with > 100 impressions | Medium |\n| CTR drop | CTR decreased > 15% vs previous period | Medium |\n| Impression share loss (budget) | > 20% lost to budget | High |\n| Impression share loss (rank) | > 30% lost to rank | Medium |\n\n## Output Format\n\nAlways present analysis in structured tables with:\n\n1. **Summary metrics** at the top (total spend, conversions, ROAS, CPA)\n2. **Detailed breakdown** by entity (campaign, keyword, search term, etc.)\n3. **Anomaly flags** highlighted with severity\n4. **Recommendations** — specific, actionable, prioritized\n\n## Rate Limits\n\nGoogle Ads API: Basic Access = 15,000 operations/day, 4 req/sec. Use `LIMIT` clauses and filter by status to reduce result sets.","tags":["google","ads","analysis","skills","itallstartedwithaidea","advertising-automation","agent-skills","anthropic","claude","claude-code","google-ads","mcp"],"capabilities":["skill","source-itallstartedwithaidea","skill-google-ads-analysis","topic-advertising-automation","topic-agent-skills","topic-anthropic","topic-claude","topic-claude-code","topic-google-ads","topic-mcp","topic-paid-search","topic-ppc","topic-python"],"categories":["google-ads-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/itallstartedwithaidea/google-ads-skills/google-ads-analysis","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add itallstartedwithaidea/google-ads-skills","source_repo":"https://github.com/itallstartedwithaidea/google-ads-skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 9 github stars · SKILL.md body (3,747 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:08:31.622Z","embedding":null,"createdAt":"2026-05-18T13:14:06.665Z","updatedAt":"2026-05-18T19:08:31.622Z","lastSeenAt":"2026-05-18T19:08:31.622Z","tsv":"'/day':323 '0':169,360 '000':95,96,309,310,467 '1':94,427 '1.50':318 '1/1':308 '100':176,294,388 '15':395,466 '1500000':317 '2':335,438 '2.50':328 '20':367,404 '2500000':327 '3':448 '30':133,165,211,236,262,413 '4':454,469 '5':384 '50':358 '50.00':322 '50000000':321 '95':375 'access':465 'account':64 'action':72,457 'activ':16 'ad':3,6,13,24,42,45,52,61,84,301,462 'ad_group.name':151,198 'ad_group_criterion.keyword.match':183 'ad_group_criterion.keyword.text':182 'ad_group_criterion.quality_info.creative':187 'ad_group_criterion.quality_info.post':190 'ad_group_criterion.quality_info.quality':185 'ad_group_criterion.quality_info.search':194 'alway':329,420 'analysi':4,9,46,73,346,422 'analyst':53 'anomali':338,347,449 'api':85,302,463 'ask':20,57 'automat':343 'b':291,293 'basic':464 'bid':325 'breakdown':34,440 'budget':247,372,378,403,407 'calcul':285 'campaign':7,22,59,99,128,231,257,355,443 'campaign.advertising':106 'campaign.bidding':109 'campaign.id':103 'campaign.name':104,150,197,242 'campaign.status':105 'campaign_budget.amount':112,319 'cap':373 'chang':297 'channel':107 'claus':473 'click':191 'compar':281 'comparison':268 'convers':126,352,361,435 'cost':298,315 'cpa':27,363,365,437 'cpc':123,324 'critic':362 'ctr':28,196,391,393 'currenc':313 'daili':377 'data':65 'date':283 'day':134,166,212,237,263 'dd':274,279 'decim':336 'decreas':394 'deliv':70 'delta':286 'desc':139,174,217 'detail':439 'detect':144,339 'devic':33,218 'divid':92 'dollar':98,333 'drop':392 'entiti':442 'etc':447 'filter':475 'flag':341,450 'follow':66 'format':299,330,419 'gaql':11,74 'geograph':35 'googl':2,5,12,41,44,51,83,300,461 'google-ads-analysi':1 'high':371,408 'highlight':451 'impress':37,238,244,249,254,389,400,409 'increas':366 'keyword':29,177,205,386,444 'languag':15 'last':132,164,210,235,261 'limit':175,460,472 'loss':402,411 'lost':248,253,405,414 'low':380 'medium':379,390,399,417 'metric':30,62,429 'metrics.average':122 'metrics.clicks':116,154,201,225 'metrics.conversions':118,119,156,168,203,227,228 'metrics.cost':114,124,137,152,172,199,215,223 'metrics.ctr':121 'metrics.impressions':117,155,202,226 'metrics.search':243,246,251 'micro':91,113,115,138,153,173,200,216,224,307,316,320,326 'mm':273,278 'monetari':87,304 'operations/day':468 'order':135,170,213 'output':331,418 'pattern':68,76 'per':125 'percentag':296 'perform':8,23,36,60,100,219 'period':265,267,288,290,292,370,398 'period-over-period':264 'place':337 'predict':195 'present':421 'previous':369,397 'priorit':458 'qs':383 'qualiti':178,188,192,381 'queri':14,75,81 'rang':284 'rank':252,412,416 'rate':459 'recommend':455 'reduc':479 'reportin':43 'req/sec':470 'result':480 'return':303 'roa':26,436 'score':179,186,189,193,382 'search':31,140,158,445 'search_term_view.search':147 'search_term_view.status':149 'segments.date':130,162,208,233,259 'segments.device':222 'select':102,146,181,221,241 'senior':50 'set':481 'sever':349,453 'share':38,239,245,250,255,401,410 'skill' 'skill-google-ads-analysis' 'source-itallstartedwithaidea' 'specif':456 'spend':25,143,353,357,374,434 'spike':364 'sql':101,145,180,220,240 'status':477 'strategi':110 'structur':71,424 'summari':428 'tabl':425 'templat':79 'term':32,141,148,159,446 'threshold':340,348 'top':432 'topic-advertising-automation' 'topic-agent-skills' 'topic-anthropic' 'topic-claude' 'topic-claude-code' 'topic-google-ads' 'topic-mcp' 'topic-paid-search' 'topic-ppc' 'topic-python' 'total':433 'two':282 'type':108,111,184 'unit':314 'use':10,77,269,471 'user':19,56 'valu':88,120,229,305 'view':160,206 'vs':368,396 'wast':142 'yyyi':272,277 'yyyy-mm-dd':271,276 'zero':351 'zero-convers':350","prices":[{"id":"1bba85a3-0f84-4f30-aae3-da6f6ee19b52","listingId":"197b73b6-986c-47ca-aa67-8fa1c982eda8","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"itallstartedwithaidea","category":"google-ads-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:06.665Z"}],"sources":[{"listingId":"197b73b6-986c-47ca-aa67-8fa1c982eda8","source":"github","sourceId":"itallstartedwithaidea/google-ads-skills/google-ads-analysis","sourceUrl":"https://github.com/itallstartedwithaidea/google-ads-skills/tree/main/skills/google-ads-analysis","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:06.665Z","lastSeenAt":"2026-05-18T19:08:31.622Z"}],"details":{"listingId":"197b73b6-986c-47ca-aa67-8fa1c982eda8","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"itallstartedwithaidea","slug":"google-ads-analysis","github":{"repo":"itallstartedwithaidea/google-ads-skills","stars":9,"topics":["advertising-automation","agent-skills","anthropic","claude","claude-code","google-ads","mcp","paid-search","ppc","python"],"license":"apache-2.0","html_url":"https://github.com/itallstartedwithaidea/google-ads-skills","pushed_at":"2026-04-12T16:14:29Z","description":"Google Ads Agent Skills for Claude — campaign analysis, account auditing, safe write ops, PPC math, and MCP server integration","skill_md_sha":"cf09ba69c03965fa91af3c071a91b688ab632d64","skill_md_path":"skills/google-ads-analysis/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/itallstartedwithaidea/google-ads-skills/tree/main/skills/google-ads-analysis"},"layout":"multi","source":"github","category":"google-ads-skills","frontmatter":{"name":"google-ads-analysis","description":"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."},"skills_sh_url":"https://skills.sh/itallstartedwithaidea/google-ads-skills/google-ads-analysis"},"updatedAt":"2026-05-18T19:08:31.622Z"}}