Google Ads Management skill

Google Ads management skill with API integration.

by ivangfalco·MIT license·GitHub ↗

★ 275 Stars on the repo·Checked

npx degit ivangfalco/ads-skills/.claude/skills/google-ads#main ~/.claude/skills/google-ads-4

SKILL.md · 8.3 KB · names 6 other files — download is this file only · installs the whole folder to ~/.claude/skills/google-ads-4

Files of Google Ads Management

Files 1 file
Show the full text134 lines

Google Ads Management

Orchestrator for all Google Ads tasks. Combines strategic knowledge with programmatic API access for full campaign management.

Methodology

This skill implements the Ivan Falco B2B demand generation methodology for Google Ads - an intent-first approach that captures existing demand through systematic keyword targeting, proving unit economics before expanding outward.

Core Philosophy

Intent is everything. Capture demand before you create it.

Google Ads is the #1 channel for capturing existing demand. People are actively searching for solutions - your job is to be there at the right moment with the right message. Start with high-intent keywords (brand + solution-aware), prove unit economics, then expand outward to medium/low-intent and awareness.

Architecture

This skill has two layers:

  1. Knowledge Base - Strategic frameworks and campaign planning (knowledge-base/)
  2. API Scripts - Programmatic Google Ads management (scripts/)

API Scripts - What You Can Do

All scripts live in scripts/. Run from that directory.

Prerequisites: Credentials configured in scripts/.env. See api-reference.md for setup.

Quick Reference
Task Command
Account snapshot python account_overview.py --date-range last_30d --compare
Campaign performance python get_campaign_performance.py --date-range last_7d --by-day
List campaigns python list_campaigns.py --status ENABLED
Search terms audit python search_terms_report.py --no-conversions --min-clicks 3
Keyword performance python get_keyword_performance.py --top 30
Create campaign python create_campaign.py --name "Brand - Search" --type SEARCH --budget 50
Update campaign python update_campaign.py --campaign-id <id> --status ENABLED --budget 75
Create ad group python create_ad_group.py --campaign-id <id> --name "High Intent KWs"
Create RSA python create_ad.py --ad-group-id <id> --headlines "H1" "H2" "H3" --descriptions "D1" "D2" --final-url "https://..."
List ads python list_ads.py --campaign-id <id>
Add keywords python add_keywords.py --ad-group-id <id> --keywords "kw1" "kw2" --match-type PHRASE
Add negative KWs python add_keywords.py --ad-group-id <id> --keywords "free" "cheap" --negative
Workflow: Analyze an Account
  1. Run python account_overview.py --compare - get the big picture
  2. Identify top-spending campaigns, check ROAS
  3. Run python get_campaign_performance.py --campaign-id <id> --by-day - daily trends
  4. Run python search_terms_report.py --no-conversions - find wasted spend
  5. Run python get_keyword_performance.py --campaign-id <id> - keyword-level analysis
  6. Make recommendations: pause underperformers, add negatives, adjust budgets
Workflow: Build a New Campaign
  1. python create_campaign.py --name "..." --type SEARCH --budget 50 --bidding MAXIMIZE_CONVERSIONS
  2. python create_ad_group.py --campaign-id <id> --name "..." --cpc-bid 3.00
  3. python add_keywords.py --ad-group-id <id> --keywords "..." --match-type PHRASE
  4. python create_ad.py --ad-group-id <id> --headlines "..." --descriptions "..." --final-url "..."
  5. python update_campaign.py --campaign-id <id> --status ENABLED

Safety: All new campaigns start PAUSED. Enable only after reviewing setup.

Routing Logic

User Intent Route When to Use
Account analysis, performance review Run account_overview.py then drill down "How are my Google Ads doing?"
Search term waste Run search_terms_report.py --no-conversions "Where am I wasting money?"
Keyword optimization Run get_keyword_performance.py "Which keywords are working?"
Create new campaign Use the build workflow above "Set up a search campaign for..."
Pause/enable/budget changes Run update_campaign.py "Pause this campaign" / "Increase budget"
Strategic campaign planning Load the knowledge base files below New account, media plan, scaling decision

Knowledge Base

Ground all strategy in these files. Read the relevant one before advising.

File Contains Read When
intent-first-strategy.md Intent ladder (brand -> high-intent -> competitor -> problem-aware -> demand-gen), capture-before-create, B2B realities Any strategy/planning question, prioritizing spend
account-structure.md Splitting by intent, themed ad groups (not SKAGs), naming, network/geo defaults, when to consolidate Setting up or restructuring an account
keyword-and-match-types.md Match type progression, B2B keyword research, negatives, avoiding self-competition Building keyword lists, choosing match types
bidding-strategy.md Bidding by conversion volume, tCPA/tROAS, setting/moving targets, the optimize-to-quality trap Choosing or changing a bid strategy
search-terms-and-negatives.md Weekly search terms ritual, what to negative, negative match types, shared lists Weekly optimization, cutting waste
benchmarks-and-measurement.md B2B SaaS benchmark ranges, metrics that matter, offline conversion import, weekly scorecard Performance review, expectations, measurement setup
performance-max-b2b.md When/when-not to run PMax, guardrails (brand exclusions, signals, negatives), reading PMax PMax questions, scaling beyond Search
rsa-and-landing-pages.md RSA assets, pinning, writing to intent, landing page message match, Quality Score Writing ads, improving CVR or Quality Score
cheatsheet-overview.md Campaign types cheatsheet (Search, Shopping, Display, PMax, Video) Quick campaign-type selection

Core Rules

  1. Always start PAUSED. Never create campaigns in ENABLED state. Review everything before turning on spend.

  2. Check search terms weekly. The search terms report is the #1 optimization lever. Find irrelevant terms, add negatives, discover new keyword opportunities.

  3. Build bottom-up by intent. Start with brand + high-intent keywords. Prove they convert. Then expand to medium-intent, then low-intent/awareness.

  4. Match type strategy matters. Start with Phrase match for control, expand to Broad match only with Smart Bidding and sufficient conversion data (30+ conversions/month).

  5. Quality Score drives costs. Monitor QS on keywords - low QS means ad relevance or landing page issues. Fix those before increasing bids.

  6. RSA best practices. 8-10 unique headlines, 3-4 descriptions. Pin critical brand/CTA to position 1. Let Google optimize the rest.

  7. Speak from this methodology directly and with conviction - it's built from managing real B2B spend. Don't pad with generic "best practices."

Campaign Types - When to Use What

Type Use Case When
Search High-intent keyword capture Always - this is your foundation
Performance Max Broad AI-driven across all networks After Search proves unit economics
Display Remarketing and awareness Remarketing first, prospecting second
Shopping E-commerce product ads Product catalog campaigns
Video (YouTube) Brand awareness and remarketing After core campaigns are profitable

Key Metrics to Watch

Metric What It Tells You
Search Impression Share How much demand you're capturing
Quality Score Ad + landing page relevance
Cost per Conversion Unit economics
ROAS Revenue efficiency
Search Terms (no conv) Budget waste
Top Impression % Ad position competitiveness
1---
2name: google-ads
3description: |
4 Google Ads management skill with API integration. Covers campaign creation, optimization, keyword management, performance analysis, and search term auditing via Python scripts that connect to the Google Ads API.
5 MANDATORY TRIGGERS: Google Ads, Google campaign, Google search ads, Google PMax, Performance Max, Google Display, Google Shopping, Google ad performance, Google keyword, search terms, Google RSA, Google bidding, Google Ads API
6---
7 
8# Google Ads Management
9 
10Orchestrator for all Google Ads tasks. Combines strategic knowledge with programmatic API access for full campaign management.
11 
12## Methodology
13 
14This skill implements the Ivan Falco B2B demand generation methodology for Google Ads - an intent-first approach that captures existing demand through systematic keyword targeting, proving unit economics before expanding outward.
15 
16## Core Philosophy
17 
18**Intent is everything. Capture demand before you create it.**
19 
20Google Ads is the #1 channel for capturing existing demand. People are actively searching for solutions - your job is to be there at the right moment with the right message. Start with high-intent keywords (brand + solution-aware), prove unit economics, then expand outward to medium/low-intent and awareness.
21 
22## Architecture
23 
24This skill has two layers:
25 
261. **Knowledge Base** - Strategic frameworks and campaign planning (`knowledge-base/`)
272. **API Scripts** - Programmatic Google Ads management (`scripts/`)
28 
29## API Scripts - What You Can Do
30 
31All scripts live in `scripts/`. Run from that directory.
32 
33**Prerequisites:** Credentials configured in `scripts/.env`. See `api-reference.md` for setup.
34 
35### Quick Reference
36 
37| Task | Command |
38|------|---------|
39| **Account snapshot** | `python account_overview.py --date-range last_30d --compare` |
40| **Campaign performance** | `python get_campaign_performance.py --date-range last_7d --by-day` |
41| **List campaigns** | `python list_campaigns.py --status ENABLED` |
42| **Search terms audit** | `python search_terms_report.py --no-conversions --min-clicks 3` |
43| **Keyword performance** | `python get_keyword_performance.py --top 30` |
44| **Create campaign** | `python create_campaign.py --name "Brand - Search" --type SEARCH --budget 50` |
45| **Update campaign** | `python update_campaign.py --campaign-id <id> --status ENABLED --budget 75` |
46| **Create ad group** | `python create_ad_group.py --campaign-id <id> --name "High Intent KWs"` |
47| **Create RSA** | `python create_ad.py --ad-group-id <id> --headlines "H1" "H2" "H3" --descriptions "D1" "D2" --final-url "https://..."` |
48| **List ads** | `python list_ads.py --campaign-id <id>` |
49| **Add keywords** | `python add_keywords.py --ad-group-id <id> --keywords "kw1" "kw2" --match-type PHRASE` |
50| **Add negative KWs** | `python add_keywords.py --ad-group-id <id> --keywords "free" "cheap" --negative` |
51 
52### Workflow: Analyze an Account
53 
541. Run `python account_overview.py --compare` - get the big picture
552. Identify top-spending campaigns, check ROAS
563. Run `python get_campaign_performance.py --campaign-id <id> --by-day` - daily trends
574. Run `python search_terms_report.py --no-conversions` - find wasted spend
585. Run `python get_keyword_performance.py --campaign-id <id>` - keyword-level analysis
596. Make recommendations: pause underperformers, add negatives, adjust budgets
60 
61### Workflow: Build a New Campaign
62 
631. `python create_campaign.py --name "..." --type SEARCH --budget 50 --bidding MAXIMIZE_CONVERSIONS`
642. `python create_ad_group.py --campaign-id <id> --name "..." --cpc-bid 3.00`
653. `python add_keywords.py --ad-group-id <id> --keywords "..." --match-type PHRASE`
664. `python create_ad.py --ad-group-id <id> --headlines "..." --descriptions "..." --final-url "..."`
675. `python update_campaign.py --campaign-id <id> --status ENABLED`
68 
69**Safety:** All new campaigns start PAUSED. Enable only after reviewing setup.
70 
71## Routing Logic
72 
73| User Intent | Route | When to Use |
74|-------------|-------|-------------|
75| Account analysis, performance review | Run `account_overview.py` then drill down | "How are my Google Ads doing?" |
76| Search term waste | Run `search_terms_report.py --no-conversions` | "Where am I wasting money?" |
77| Keyword optimization | Run `get_keyword_performance.py` | "Which keywords are working?" |
78| Create new campaign | Use the build workflow above | "Set up a search campaign for..." |
79| Pause/enable/budget changes | Run `update_campaign.py` | "Pause this campaign" / "Increase budget" |
80| Strategic campaign planning | Load the knowledge base files below | New account, media plan, scaling decision |
81 
82## Knowledge Base
83 
84Ground all strategy in these files. Read the relevant one before advising.
85 
86| File | Contains | Read When |
87|------|----------|-----------|
88| [intent-first-strategy.md](knowledge-base/intent-first-strategy.md) | Intent ladder (brand -> high-intent -> competitor -> problem-aware -> demand-gen), capture-before-create, B2B realities | Any strategy/planning question, prioritizing spend |
89| [account-structure.md](knowledge-base/account-structure.md) | Splitting by intent, themed ad groups (not SKAGs), naming, network/geo defaults, when to consolidate | Setting up or restructuring an account |
90| [keyword-and-match-types.md](knowledge-base/keyword-and-match-types.md) | Match type progression, B2B keyword research, negatives, avoiding self-competition | Building keyword lists, choosing match types |
91| [bidding-strategy.md](knowledge-base/bidding-strategy.md) | Bidding by conversion volume, tCPA/tROAS, setting/moving targets, the optimize-to-quality trap | Choosing or changing a bid strategy |
92| [search-terms-and-negatives.md](knowledge-base/search-terms-and-negatives.md) | Weekly search terms ritual, what to negative, negative match types, shared lists | Weekly optimization, cutting waste |
93| [benchmarks-and-measurement.md](knowledge-base/benchmarks-and-measurement.md) | B2B SaaS benchmark ranges, metrics that matter, offline conversion import, weekly scorecard | Performance review, expectations, measurement setup |
94| [performance-max-b2b.md](knowledge-base/performance-max-b2b.md) | When/when-not to run PMax, guardrails (brand exclusions, signals, negatives), reading PMax | PMax questions, scaling beyond Search |
95| [rsa-and-landing-pages.md](knowledge-base/rsa-and-landing-pages.md) | RSA assets, pinning, writing to intent, landing page message match, Quality Score | Writing ads, improving CVR or Quality Score |
96| [cheatsheet-overview.md](knowledge-base/cheatsheet-overview.md) | Campaign types cheatsheet (Search, Shopping, Display, PMax, Video) | Quick campaign-type selection |
97 
98## Core Rules
99 
1001. **Always start PAUSED.** Never create campaigns in ENABLED state. Review everything before turning on spend.
101 
1022. **Check search terms weekly.** The search terms report is the #1 optimization lever. Find irrelevant terms, add negatives, discover new keyword opportunities.
103 
1043. **Build bottom-up by intent.** Start with brand + high-intent keywords. Prove they convert. Then expand to medium-intent, then low-intent/awareness.
105 
1064. **Match type strategy matters.** Start with Phrase match for control, expand to Broad match only with Smart Bidding and sufficient conversion data (30+ conversions/month).
107 
1085. **Quality Score drives costs.** Monitor QS on keywords - low QS means ad relevance or landing page issues. Fix those before increasing bids.
109 
1106. **RSA best practices.** 8-10 unique headlines, 3-4 descriptions. Pin critical brand/CTA to position 1. Let Google optimize the rest.
111 
1127. **Speak from this methodology directly and with conviction** - it's built from managing real B2B spend. Don't pad with generic "best practices."
113 
114## Campaign Types - When to Use What
115 
116| Type | Use Case | When |
117|------|----------|------|
118| Search | High-intent keyword capture | Always - this is your foundation |
119| Performance Max | Broad AI-driven across all networks | After Search proves unit economics |
120| Display | Remarketing and awareness | Remarketing first, prospecting second |
121| Shopping | E-commerce product ads | Product catalog campaigns |
122| Video (YouTube) | Brand awareness and remarketing | After core campaigns are profitable |
123 
124## Key Metrics to Watch
125 
126| Metric | What It Tells You |
127|--------|------------------|
128| Search Impression Share | How much demand you're capturing |
129| Quality Score | Ad + landing page relevance |
130| Cost per Conversion | Unit economics |
131| ROAS | Revenue efficiency |
132| Search Terms (no conv) | Budget waste |
133| Top Impression % | Ad position competitiveness |
134 

Discussion

Alternatives

Also in Search adsSee all 401 in Marketing →