google-adsQuery, audit, and optimize Google Ads campaigns. Supports two modes: (1) API mode for bulk operations with google-ads Python SDK, (2) Browser automation mode for users without API access - just attach a browser tab to ads.google.com. Use when asked to check ad performance, pause campaigns/keywords, find wasted spend, audit conversion tracking, or optimize Google Ads accounts.
Install via ClawdBot CLI:
clawdbot install jdrhyne/google-adsManage Google Ads accounts via API or browser automation.
Check which mode to use:
google-ads.yaml configured or GOOGLE_ADS_* env vars# Check for API config
ls ~/.google-ads.yaml 2>/dev/null || ls google-ads.yaml 2>/dev/null
If no config found, ask: "Do you have Google Ads API credentials, or should I use browser automation?"
Requirements: User logged into ads.google.com in browser
browser tool with profile="chrome"1. Navigate to: ads.google.com/aw/campaigns
2. Set date range (top right date picker)
3. Snapshot the campaigns table
4. Parse: Campaign, Status, Budget, Cost, Conversions, Cost/Conv
1. Navigate to: ads.google.com/aw/keywords
2. Click "Add filter" ā Conversions ā Less than ā 1
3. Click "Add filter" ā Cost ā Greater than ā [threshold, e.g., $500]
4. Sort by Cost descending
5. Snapshot table for analysis
1. Navigate to keywords or campaigns view
2. Check boxes for items to pause
3. Click "Edit" dropdown ā "Pause"
4. Confirm action
1. Navigate to desired view (campaigns, keywords, etc.)
2. Click "Download" icon (top right of table)
3. Select format (CSV recommended)
4. File downloads to user's Downloads folder
For detailed browser selectors: See references/browser-workflows.md
Requirements: Google Ads API developer token + OAuth credentials
# Verify google-ads SDK
python -c "from google.ads.googleads.client import GoogleAdsClient; print('OK')"
# Check config
cat ~/.google-ads.yaml
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()
ga_service = client.get_service("GoogleAdsService")
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
"""
response = ga_service.search(customer_id=CUSTOMER_ID, query=query)
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
"""
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)
For full API reference: See references/api-setup.md
Quick health check for any Google Ads account:
| Check | Browser Path | What to Look For |
|-------|--------------|------------------|
| Zero-conv keywords | Keywords ā Filter: Conv<1, Cost>$500 | Wasted spend |
| Empty ad groups | Ad Groups ā Filter: Ads=0 | No creative running |
| Policy violations | Campaigns ā Status column | Yellow warning icons |
| Optimization Score | Overview page (top right) | Below 70% = action needed |
| Conversion tracking | Tools ā Conversions | Inactive/no recent data |
When reporting findings, use tables:
## 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)
google-ads.yamlGenerated Feb 23, 2026
An online retailer wants to reduce wasted ad spend by identifying and pausing zero-conversion keywords that have accumulated significant costs over the past 90 days. The skill can use browser automation to filter keywords by conversions less than 1 and cost greater than a threshold, then pause them, or use the API for bulk analysis across multiple campaigns.
A software-as-a-service company needs to audit its Google Ads campaigns to improve conversion tracking and optimize performance. The skill can check for inactive conversion tracking, review campaign status for policy violations, and analyze cost per conversion to recommend budget adjustments or pauses.
A small business offering local services, like plumbing or cleaning, wants to monitor daily ad spend and pause underperforming campaigns quickly. Using browser automation, the user can snapshot campaign performance tables, identify high-cost, low-conversion campaigns, and pause them directly in the Google Ads interface.
A digital marketing agency needs to generate performance reports for multiple clients by downloading CSV reports from Google Ads. The skill can automate navigation to campaign or keyword views, download reports in CSV format, and compile data into structured tables for client presentations.
Companies offering monthly or annual software subscriptions use Google Ads to drive sign-ups. This skill helps optimize ad spend by analyzing conversion rates and cost per acquisition, ensuring efficient budget allocation to maximize subscriber growth and reduce churn.
Online stores that sell products without holding inventory rely on Google Ads for traffic and sales. The skill aids in auditing keyword performance, pausing wasteful spend, and optimizing campaigns to improve return on ad spend and overall profitability.
Businesses like consultancies or home services use Google Ads to generate qualified leads. This skill enables quick checks on campaign health, identification of zero-conversion keywords, and optimization of ad groups to enhance lead quality and reduce cost per lead.
š¬ Integration Tip
Ensure users have either API credentials configured in google-ads.yaml or are logged into ads.google.com with browser automation ready for seamless mode switching based on access.
Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.
Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to...
Build, debug, and deploy websites using HTML, CSS, JavaScript, and modern frameworks following production best practices.
YouTube Data API integration with managed OAuth. Search videos, manage playlists, access channel data, and interact with comments. Use this skill when users want to interact with YouTube. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
Scaffold, test, document, and debug REST and GraphQL APIs. Use when the user needs to create API endpoints, write integration tests, generate OpenAPI specs, test with curl, mock APIs, or troubleshoot HTTP issues.
Search for jobs across LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs using the JobSpy MCP server.