Back to directory
Google Ads Claude skill

Negative Keyword Implementer

Negative Keyword Implementer is a Claude skill that adds negative keywords to Google Ads. It takes a list or Search Term Gold Miner output, picks campaign or ad group level and match types, checks for conflicts with active keywords, asks you to confirm and then calls the add_negative_keywords action.
Google AdsIncludes Sample Data4 files
Download Skill

What Negative Keyword Implementer does

Negative Keyword Implementer is a Claude skill that adds negative keywords to Google Ads. It takes a list or Search Term Gold Miner output, picks campaign or ad group level and match types, checks for conflicts with active keywords, asks you to confirm and then calls the add_negative_keywords action.

Use it to

  • Block irrelevant search terms found in a report
  • Add campaign-level negatives such as jobs or free
  • Apply the same negatives to several campaigns

Example request

Hey Claude, I just added the "negative-keyword-implementer" skill. Can you add these negative keywords to my Google Ads campaign?

Negative Keyword Implementer
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
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
# Negative Keyword Implementer
 
Stop talking about negatives. Start adding them. This skill takes your negative keyword lists and implements them directly in Google Ads.
 
## Core Philosophy
 
**Analysis without action is waste.** You've identified the garbage search terms. Now block them before they cost you more money.
 
**The Implementation Questions:**
1. Which negatives should be added at campaign vs ad group level?
2. What match type should each negative use?
3. Are there any conflicts to check?
4. How do we confirm the changes worked?
 
---
 
## MCP Integration
 
### Write Action Used
 
This skill uses the Google Ads MCP `add_negative_keywords` action:
 
```json
{
"platform": "google-ads",
"workspace_id": "<WORKSPACE_ID>",
"brand_id": "<BRAND_ID>",
"account_id": "XXXXXXXXXX",
"action": "add_negative_keywords",
"campaign_id": "123456789",
"keywords": ["free", "cheap", "discount"],
"match_type": "BROAD"
}
```
 
### Action Parameters
 
| Parameter | Required | Description |
|-----------|----------|-------------|
| workspace_id | Yes | Workspace ID from accounts |
| brand_id | Yes | Brand ID within workspace |
| account_id | Yes | Google Ads customer ID |
| action | Yes | Must be "add_negative_keywords" |
| campaign_id | Conditional | Campaign ID (for campaign-level) |
| ad_group_id | Conditional | Ad group ID (for ad group-level) |
| keywords | Yes | Array of negative keyword texts |
| match_type | No | BROAD (default), PHRASE, or EXACT |
 
**Note:** Either campaign_id OR ad_group_id is required, not both.
 
---
 
## Input Requirements
 
### Option 1: From search-term-gold-miner Output
 
If you've run `search-term-gold-miner`, provide its output:
 
```json
{
"immediate_negatives": [
{"search_term": "free bags", "spend": 150, "conversions": 0},
{"search_term": "bag repair", "spend": 85, "conversions": 0}
],
"pattern_negatives": [
{"pattern": "free", "match_type": "PHRASE"},
{"pattern": "repair", "match_type": "PHRASE"}
]
}
```
 
### Option 2: Manual Negative List
 
Provide a list of negatives to add:
 
```
free
cheap
diy
how to
jobs
careers
repair
used
```
 
### Option 3: Copy from Google Ads
 
Paste your negative keyword list from Google Ads for cross-campaign implementation.
 
---
 
## Analysis Framework
 
### Step 1: Pre-Implementation Validation
 
**Before adding negatives, check:**
 
1. **Conflict Check**
- Does the negative match any existing keywords?
- Will it block high-performing search terms?
 
2. **Level Determination**
- Campaign-level: Applies to ALL ad groups (broader protection)
- Ad group-level: Applies to specific ad group only (surgical precision)
 
3. **Match Type Selection**
- **EXACT**: Block only this exact query (most conservative)
- **PHRASE**: Block queries containing this phrase (balanced)
- **BROAD**: Block queries with these words in any order (most aggressive)
 
---
 
### Step 2: Match Type Strategy
 
**Match Type Decision Matrix:**
 
| Scenario | Recommended Match | Reason |
|----------|-------------------|--------|
| Specific irrelevant query | EXACT | Surgical, preserves variations |
| Bad intent pattern | PHRASE | Blocks phrase anywhere in query |
| Irrelevant word | BROAD | Blocks all variations |
| One-word disaster | PHRASE or EXACT | Avoid accidental blocking |
| Multi-word pattern | PHRASE | Natural phrase blocking |
 
**Examples:**
 
| Negative | Match Type | What It Blocks |
|----------|------------|----------------|
| [free bags] | EXACT | Only "free bags" |
| "free bags" | PHRASE | "free bags online", "get free bags" |
| free bags | BROAD | "bags for free", "free designer bags" |
 
---
 
### Step 3: Level Strategy
 
**When to Use Campaign-Level:**
- Universal negatives (jobs, careers, free, DIY)
- Brand protection across all ad groups
- Terms never relevant to any product/service
 
**When to Use Ad Group-Level:**
- Product-specific exclusions
- Terms relevant in some contexts but not others
- Precise control for different offerings
 
---
 
## Implementation Process
 
### Phase 1: Review & Confirm
 
**Present negatives for user approval:**
 
```
PROPOSED NEGATIVE KEYWORDS
Campaign: [Campaign Name]
Level: Campaign-wide
 
EXACT MATCH:
- [term 1]
- [term 2]
 
PHRASE MATCH:
- [term 3]
- [term 4]
 
BROAD MATCH:
- [term 5]
 
Estimated Monthly Savings: $XXX
Proceed with implementation? (yes/no)
```
 
---
 
### Phase 2: Execute
 
**Call MCP action for each batch:**
 
```json
{
"platform": "google-ads",
"workspace_id": 101,
"brand_id": 69,
"account_id": "9382431689",
"action": "add_negative_keywords",
"campaign_id": "123456789",
"keywords": ["free", "cheap", "diy", "how to"],
"match_type": "PHRASE"
}
```
 
**Batch by match type** (separate call for each):
1. Add EXACT negatives
2. Add PHRASE negatives
3. Add BROAD negatives
 
---
 
### Phase 3: Confirm & Report
 
**After implementation:**
 
```
IMPLEMENTATION COMPLETE
 
Campaign: [Campaign Name]
Negatives Added: XX
 
EXACT MATCH: X keywords
PHRASE MATCH: X keywords
BROAD MATCH: X keywords
 
Status: SUCCESS / PARTIAL / FAILED
 
Next Steps:
- Monitor search term report in 7 days
- Verify blocked terms no longer appearing
- Track spend reduction vs baseline
```
 
---
 
## Output Format
 
### Pre-Implementation Summary
 
```
NEGATIVE KEYWORD IMPLEMENTATION PLAN
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
Account: [Account Name]
Source: search-term-gold-miner / manual list
 
CAMPAIGN-LEVEL NEGATIVES:
Campaign: [Campaign Name] (ID: XXXXXXX)
 
EXACT MATCH (X keywords):
─────────────────────────
[free bags]
[bag repair near me]
 
PHRASE MATCH (X keywords):
─────────────────────────
"free"
"repair"
"jobs"
 
BROAD MATCH (X keywords):
─────────────────────────
careers hiring
 
CONFLICT CHECK:
āš ļø "free" may conflict with keyword "free shipping promo"
→ Recommendation: Use EXACT [free bags] instead
āœ“ No other conflicts detected
 
ESTIMATED IMPACT:
Monthly wasted spend blocked: ~$XXX
Search terms affected: ~XXX
 
Ready to implement? (yes/no/modify)
```
 
---
 
### Post-Implementation Report
 
```
IMPLEMENTATION REPORT
━━━━━━━━━━━━━━━━━━━━━
 
Account: [Account Name]
Timestamp: [datetime]
 
RESULTS:
────────
Campaign: [Campaign Name]
āœ“ EXACT negatives added: X
āœ“ PHRASE negatives added: X
āœ“ BROAD negatives added: X
 
Total Negatives Added: XX
Status: SUCCESS
 
MCP RESPONSE:
{
"status": "success",
"negative_keywords_added": XX,
"level": "campaign",
"target_id": "XXXXXXX"
}
 
NEXT STEPS:
1. Check search term report in 7 days
2. Verify wasted spend reduction
3. Run search-term-gold-miner again in 14 days
```
 
---
 
## Composability
 
**Chains from:**
- `search-term-gold-miner` - Primary input source for negatives
- Manual lists or spreadsheets
 
**Chains to:**
- `spend-pacing-monitor` - Verify spend reduction
- Re-run `search-term-gold-miner` - Validate blocked terms
 
**Workflow Example:**
```
search-term-gold-miner (identify waste)
↓
negative-keyword-implementer (add negatives)
↓
Wait 7-14 days
↓
search-term-gold-miner (verify improvement)
```
 
---
 
## Safety Features
 
### Safeguards This Skill Follows
 
1. **Always require user confirmation before adding**
2. **Conflict detection against existing keywords**
3. **Match type recommendations to prevent over-blocking**
4. **Batch limits to prevent accidents**
5. **Full rollback instructions if needed**
 
**Note:** These safeguards are instructions Claude follows. The MCP server does not add its own confirmation step, and negatives added with `add_negative_keywords` take effect immediately. The action needs a Read & Write connection, and an owner, admin or operator can switch it off for the account.
 
### Rollback Process
 
If negatives were added incorrectly:
 
1. Go to Google Ads → Keywords → Negative Keywords
2. Filter by date added
3. Select and remove incorrect negatives
 
**Note:** The MCP server has a `remove_negative_keywords` action, but it is classed as destructive and is off by default. An owner, admin or operator must enable it for the connected account first; otherwise remove negatives in the Google Ads UI.
 
---
 
## Limitations
 
**I can do:**
- Add negative keywords at campaign or ad group level
- Use BROAD, PHRASE, or EXACT match types
- Batch multiple keywords per call
- Validate against conflicts
 
**I cannot do:**
- Remove existing negative keywords, unless `remove_negative_keywords` has been enabled for the account (it is off by default)
- Add shared negative keyword lists (not exposed by the MCP server)
- Add negatives to Performance Max campaigns
- Guarantee zero over-blocking (user must validate)
 
**Best Practices:**
- Start with EXACT match for uncertain negatives
- Review search terms 7 days post-implementation
- Keep a log of negatives added with dates
 
---
 
## Quality Checklist
 
Before implementation:
- [ ] Negatives reviewed for conflicts
- [ ] Match types assigned appropriately
- [ ] Level (campaign vs ad group) determined
- [ ] User confirmation received
- [ ] Estimated savings calculated
 
After implementation:
- [ ] MCP response confirmed success
- [ ] Count of negatives matches expected
- [ ] Post-implementation report generated
- [ ] Follow-up date scheduled
Ready
UTF-8

How to use Negative Keyword Implementer with Claude

  1. Download the ZIP from this page. It contains a negative-keyword-implementer folder with SKILL.md, HOW_TO_USE.md, sample_input.json, expected_output.json. No account is needed to download it.
  2. Add the folder to Claude as a skill, or paste the contents of SKILL.md into a conversation.
  3. Connect the Google Ads MCP server so Claude can pull live data. Each server page has setup steps for Claude, ChatGPT, Claude Code, Cursor, Gemini CLI and Codex.
  4. Ask Claude for the task in plain language, like the example request above.

Frequently Asked Questions

Common questions about Negative Keyword Implementer and how to use it with Claude.

Yes, that is its job. It adds negatives with add_negative_keywords after you confirm the plan. The action needs a Read & Write connection, and an owner, admin or operator can switch it off for the account.

The MCP server has a remove_negative_keywords action, but it is destructive and off by default. An owner, admin or operator has to enable it for the account; otherwise remove negatives in the Google Ads interface.

Click Download Skill on this page. You get a ZIP file with a negative-keyword-implementer folder containing SKILL.md plus HOW_TO_USE.md, sample_input.json and expected_output.json. Downloading does not require an InsightfulPipe account.

Not to download or read it, and you can paste exported data into Claude. For Claude to pull live data, connect the Google Ads MCP server, which needs an InsightfulPipe plan. Plans start at $29.99/month with a 7-day free trial.

Write actions only work on accounts connected with Read & Write access. Owners, admins and operators can turn individual actions on or off per connected account; disabled actions are hidden from Claude and blocked. Destructive actions such as delete, remove and archive are off by default.

Ready to connect your data?

Join hundreds of agencies and brands using InsightfulPipe to connect marketing data to AI.

Start a free trial today.