Keyword Performance Analyzer
SKILL.md
HOW_TO_USE.md
sample_input.json
expected_output.json
skillsgoogle-adsSKILL.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
# Keyword Performance Analyzer
Deep-dive into your keywords to find what's working, what's bleeding money, and where Quality Score is killing your efficiency.
## Core Philosophy
**Keywords are the foundation.** Bad keywords = bad account. Great keywords with poor QS = overpaying for every click.
**The 3 Keyword Questions:**
1. Which keywords are actually driving results?
2. Where is Quality Score costing me money?
3. What bid adjustments will improve efficiency?
---
## MCP Integration
### Required Data Pull
Use the Google Ads MCP `keyword_view` action with this GAQL query:
```
SELECT
campaign.id,
campaign.name,
ad_group.id,
ad_group.name,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
ad_group_criterion.negative,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions,
metrics.conversions_value,
metrics.ctr,
metrics.historical_quality_score
FROM keyword_view
WHERE segments.date BETWEEN '{start_date}' AND '{end_date}'
AND ad_group_criterion.negative = FALSE
AND metrics.impressions > 0
ORDER BY metrics.cost_micros DESC
```
### Data Requirements
**From MCP Response:**
- `ad_group_criterion.keyword.text` - The keyword
- `ad_group_criterion.keyword.match_type` - BROAD, PHRASE, EXACT
- `metrics.historical_quality_score` - QS (1-10 scale)
- `metrics.impressions`, `metrics.clicks`, `metrics.cost_micros`
- `metrics.conversions`, `metrics.conversions_value`
- `metrics.ctr` - Click-through rate
**User Should Provide:**
- Target CPA or ROAS
- Date range (default: last 30 days)
- Minimum spend threshold for analysis (default: $10)
---
## Analysis Framework
### Tier 1: Quality Score Analysis
**QS Breakdown:**
| QS Range | Assessment | Priority |
|----------|------------|----------|
| 1-3 | Critical - Major cost penalty | Immediate |
| 4-5 | Poor - Significant penalty | High |
| 6-7 | Average - Room to improve | Medium |
| 8-10 | Good - Maintain | Low |
**QS Impact Calculation:**
```
Estimated CPC penalty = (10 - QS) Γ 10%
Example: QS 5 = ~50% higher CPCs than QS 10
```
**QS Improvement Levers:**
1. **Expected CTR** - Ad relevance, compelling copy
2. **Ad Relevance** - Keyword-ad alignment
3. **Landing Page Experience** - Page quality, load speed, relevance
---
### Tier 2: Performance Segmentation
**Keyword Categories:**
| Category | Criteria | Action |
|----------|----------|--------|
| Stars | Conv > 0, CPA < target, QS 7+ | Scale bids, add budget |
| Solid | Conv > 0, CPA at target | Maintain, test improvements |
| Potential | Good CTR, 0 conv, low spend | Give more budget/time |
| Bleeders | High spend, 0 conv | Pause or reduce bids |
| QS Victims | Good conv, QS < 6 | Fix QS to reduce CPA |
| Zombies | Low impressions, no activity | Evaluate relevance |
---
### Tier 3: Match Type Analysis
**Match Type Health Check:**
| Match Type | Ideal Use | Red Flags |
|------------|-----------|-----------|
| EXACT | High-intent, proven converters | Too few impressions |
| PHRASE | Balanced reach + control | High spend, low conv |
| BROAD | Discovery, volume | Bleeding on irrelevant terms |
**Match Type Migration Signals:**
- BROAD β PHRASE: Good conv but also waste in search terms
- PHRASE β EXACT: Consistent performer, want more control
- EXACT β Pause: No impressions, too restrictive
---
### Tier 4: Bid Optimization
**Bid Adjustment Framework:**
| Signal | Recommendation |
|--------|----------------|
| CPA 30%+ below target, limited by rank | Increase bid 15-20% |
| CPA at target, good volume | Maintain bid |
| CPA 10-30% above target | Decrease bid 10-15% |
| CPA 30%+ above target | Decrease bid 20-30% or pause |
| QS < 6 with high CPA | Fix QS before adjusting bid |
---
## Output Format
### Executive Summary
```
KEYWORD HEALTH SCORE: π’/π‘/π΄
Keywords Analyzed: XXX
Period: [dates]
Avg Quality Score: X.X
Keywords with QS Issues: XX (XX%)
Estimated Monthly QS Penalty: $X,XXX
```
---
### Quality Score Report
**Critical QS Issues (QS 1-5):**
| Keyword | Match | QS | Impressions | CPA | Est. Penalty |
|---------|-------|-----|-------------|-----|--------------|
| [keyword] | EXACT | 4 | X,XXX | $XX | +XX% CPC |
| [keyword] | PHRASE | 3 | X,XXX | $XX | +XX% CPC |
**QS Improvement Priorities:**
1. **[Keyword]** (QS: 4)
- Issue: Low expected CTR
- Action: Test new ad copy with keyword in headline
- Potential savings: $XXX/month
2. **[Keyword]** (QS: 5)
- Issue: Landing page experience
- Action: Improve page load speed, add keyword relevance
- Potential savings: $XXX/month
---
### Performance Tiers
**Stars (Scale These):**
| Keyword | Conv | CPA | vs Target | QS | Recommendation |
|---------|------|-----|-----------|-----|----------------|
| [keyword] | XX | $XX | -XX% | 8 | Increase bid 15% |
**Bleeders (Fix or Pause):**
| Keyword | Spend | Conv | QS | Action |
|---------|-------|------|-----|--------|
| [keyword] | $XXX | 0 | 5 | Pause |
| [keyword] | $XXX | 0 | 7 | Reduce bid 30% |
**QS Victims (Fix QS First):**
| Keyword | Conv | CPA | QS | Potential CPA |
|---------|------|-----|-----|---------------|
| [keyword] | XX | $XX | 4 | $XX (if QS=8) |
---
### Match Type Recommendations
**Migrate to Exact:**
- [keyword] (PHRASE) - 5+ conversions, consistent performer
- [keyword] (BROAD) - Proven term, want bid control
**Consider Pausing:**
- [keyword] (EXACT) - 0 impressions in 30 days
- [keyword] (BROAD) - 80% of clicks from irrelevant terms
---
### Bid Adjustment Queue
**Increase Bids:**
| Keyword | Current Bid | Conv | CPA | Recommended |
|---------|-------------|------|-----|-------------|
| [keyword] | $X.XX | XX | $XX | $X.XX (+15%) |
**Decrease Bids:**
| Keyword | Current Bid | Conv | CPA | Recommended |
|---------|-------------|------|-----|-------------|
| [keyword] | $X.XX | X | $XX | $X.XX (-20%) |
---
### Quick Wins Summary
```
ACTION KEYWORDS EST. IMPACT
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Pause bleeders XX Save $X,XXX/mo
Fix QS issues XX Save $X,XXX/mo
Increase bids on stars XX +XX conv/mo
Migrate to exact match XX Better control
```
---
## Composability
**Chains from:**
- `search-term-gold-miner` - Promoted search terms become keywords to analyze
**Chains to:**
- `bid-strategy-auditor` - Keywords feed into bid strategy analysis
- `budget-allocation-optimizer` - Keyword efficiency informs budget moves
---
## Limitations
**I can assess:**
- Quality Score and its cost impact
- Keyword-level performance tiers
- Match type distribution health
- Bid adjustment opportunities
**I cannot assess:**
- QS component breakdown (need Google Ads UI)
- Search term quality within keyword (need search term report)
- Competitor keyword bids
- Incrementality of keyword conversions
**For deeper analysis, also run:**
- `search-term-gold-miner` for search term quality
- Landing page audit for QS improvements
---
## Quality Checklist
Before delivering analysis:
- [ ] QS distribution calculated
- [ ] Bleeders identified with spend impact
- [ ] Stars identified with scaling opportunity
- [ ] QS penalty estimated in dollars
- [ ] Bid recommendations include % change
- [ ] Match type migrations justified
- [ ] Composability next steps noted
ReadyKeyword Performance Analyzer
MarkdownUTF-8Verified