| name | google-ads |
| description | Manage and optimize Google Ads / Adwords — performance, campaigns, spend, conversions. |
| metadata | {"homepage":"https://developers.google.com/google-ads/api/docs/start","dependencies":{"python3":{"description":"Python 3 runtime","check":"which python3"},"google-ads-sdk":{"description":"Google Ads Python SDK","check":"python3 -c \"from google.ads.googleads.client import GoogleAdsClient\"","install":"pip install google-ads"}}} |
Google Ads Skill
Manage Google Ads accounts via API or shell commands.
Setup Check
python3 -c "from google.ads.googleads.client import GoogleAdsClient; print('OK')"
cat ~/.google-ads.yaml
Common GAQL Queries
Campaign Performance
query = """
SELECT campaign.name, campaign.status,
metrics.cost_micros, metrics.conversions,
metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
"""
Zero-Conversion Keywords (Wasted Spend)
query = """
SELECT ad_group_criterion.keyword.text,
campaign.name, metrics.cost_micros
FROM keyword_view
WHERE metrics.conversions = 0
AND metrics.cost_micros > 500000000
AND segments.date DURING LAST_90_DAYS
ORDER BY metrics.cost_micros DESC
"""
Pause Keywords
operations = []
for keyword_id in keywords_to_pause:
operation = client.get_type("AdGroupCriterionOperation")
operation.update.resource_name = f"customers/{customer_id}/adGroupCriteria/{ad_group_id}~{keyword_id}"
operation.update.status = client.enums.AdGroupCriterionStatusEnum.PAUSED
operations.append(operation)
service.mutate_ad_group_criteria(customer_id=customer_id, operations=operations)
Audit Checklist
| Check | What to Look For |
|---|
| Zero-conv keywords | Cost > $500, Conv = 0 -> Wasted spend |
| Empty ad groups | No creative running |
| Policy violations | Yellow warning icons |
| Optimization Score | Below 70% = action needed |
| Conversion tracking | Inactive/no recent data |
Output Format
## Campaign Performance (Last 30 Days)
| Campaign | Cost | Conv | CPA | Status |
|----------|------|------|-----|--------|
| Branded | $5K | 50 | $100| Good |
| SDK Web | $10K | 2 | $5K | Pause |
## Recommended Actions
1. **PAUSE**: SDK Web campaign ($5K CPA)
2. **INCREASE**: Branded budget (strong performer)
Notes
cost_micros = micros (divide by 1,000,000 for dollars)
- Customer ID: 10-digit, no dashes
- Developer token must be approved (not test mode)