agentleFS
riz1k9riz1k9/claude-ad-skills/negative-keyword-builder/SKILL.md

negative-keyword-builder

Skill0 starsChanged 3 months agoMITView on GitHub

Turns wasted search queries into an approval-ready negative keyword list — picks the right match type, groups queries into single phrase negatives using n-gram analysis, and safety-checks every proposal against converting queries before recommending it. Use whenever someone mentions negative keywords, blocking bad searches, match types for negatives, "stop showing for X", building an exclusion list, or already has a set of wasted queries to turn into exclusions, on Google Ads, Microsoft Ads, or Amazon Ads. If it has not yet been established which queries are wasted, run search-term-miner first.

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. kelpi-ai/google-ads-skills★ 2same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository6 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If it would block queries with zero conversions only → safe, recommend it.

    line 38
  2. Very specific:

    Default to phrase for themes and exact for one-offs.

    line 51

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Negative Keyword Builder

Adding negatives is easy. Adding negatives that block waste without silently killing converting traffic is the actual skill, and it's where most negative lists go wrong — someone blocks cheap because it appears in junk queries, not noticing that "cheap flights to lisbon" was their best converting query all quarter.

Two things make a good negative list: the right match type (so one entry does the work of fifty), and a safety check against converting queries (so it doesn't cost more than it saves).

Getting the data

You need the full search terms report — not just the bad queries. The converting queries are what makes the safety check possible, so if someone pastes only the junk, ask for the complete export.

  1. Connected account — pull search terms for the last 30–90 days. Longer is better here; a query that converted twice in 90 days still matters.
  2. File or paste — CSV/TSV/Excel from Google Ads → Campaigns → Insights & Reports → Search terms → download. Skip Google's title rows and find the header row containing Search term.
  3. Already have verdicts — if the search-term-miner skill (or the person) has already labeled terms to exclude, take that list but still ask for the full report to run the safety check.

Also establish: which campaigns these apply to, and whether they use a shared negative list already. Adding to the wrong level is a common and confusing mistake.

How to build the list

1. Find the themes, not the queries

Tokenize every wasted query — zero conversions, spend above the volume floor — into words and 2–3 word phrases (n-grams). Count how much spend each token appears in across all zero-converting queries. A token appearing in many wasted queries with meaningful spend is a theme — one phrase negative kills the whole theme, now and in future.

This is the difference between a list of 60 exact negatives that goes stale next week and a list of 6 phrase negatives that keeps working.

Quantify "meaningful" before you trust a theme. A token clears the bar when its zero-converting queries total at least 1× target CPA in spend, or ~15 clicks if no target is known — the same floor search-term-miner uses, applied to the token's aggregate rather than any single query. Below that, zero conversions means no data, not bad intent: list it as watch-later and re-check next month.

Also discard structural tokens that carry no intent — articles, prepositions, and the head term itself. "for", "the", "best", and your own product noun will top any spend-weighted n-gram count and negating them would blank the account.

2. Safety-check every candidate — this is the step that matters

For each candidate negative, scan the entire report (including converting queries) for terms it would also block. A negative blocks any query containing that token, forever, silently.

  • If it would block queries with zero conversions only → safe, recommend it.
  • If it would block any query with conversions or revenue → do not recommend it as-is. Either narrow it to an exact negative on the specific junk query, or flag it to the person with the exact converting query and revenue at risk and let them decide.

Report the at-risk revenue explicitly. "free would block 'free consultation' which drove 12 conversions and $4,100" is the sentence that prevents an expensive mistake.

3. Choose the match type deliberately

TypeUse whenBlocks
Exact negative [term]One specific bad query, or a phrase that's too risky to broadenOnly that exact query
Phrase negative "term"A recurring token that is reliably bad in any contextAny query containing that word sequence
Broad negative termA whole irrelevant category, rare in practiceAny query containing all these words in any order

Default to phrase for themes and exact for one-offs. Broad negatives are the most likely to cause collateral damage; use them only when the token is unambiguous (like a competitor brand or jobs).

Match types are not universal. Broad negatives exist only in Google Ads — Microsoft Ads and Amazon Ads support negative exact and negative phrase only, so never propose a broad negative there. Amazon also has no shared negative list: negatives live at campaign or ad group level, so ask which campaigns to apply to and output per-campaign blocks instead.

4. Expand every negative into its word forms

On Google Ads and Microsoft Ads, negative keywords do not match close variants. A negative blocks only the literal word forms you type — no plurals, no singulars, no misspellings, no stemming. Negative phrase "salary" does not block "salaries". Negative exact [running shoe] does not block "running shoes". This is the opposite of how positive keywords behave, and it's the single most common reason a list looks complete and still leaks spend. (Amazon differs — it does apply close variants to negatives, so don't expand there.)

For every negative you propose, add the singular and the plural as separate lines, plus any misspelling that actually appears in the report with spend against it. Don't invent misspellings — take them from the data. Each variant is its own line, and each still goes through the safety check in step 2.

5. Pick the level

  • Ad group — the term is fine for the account but wrong for this ad group (classic for tightly themed groups stealing each other's traffic).
  • Campaign — wrong for this campaign's goal.
  • Shared list — universally wrong for the business (job seekers, DIY, competitor brands, other product categories). Most negatives belong here, and a shared list is what stops the same waste reappearing in the next campaign someone builds.

What to produce

A paste-ready block plus the reasoning. Ad platforms accept one entry per line, so the person can copy the block straight into the negative keyword box.

NEGATIVE KEYWORD LIST — [account], built from [n] terms / [date range]
Blocks [total wasted spend] across [n] queries · [projected monthly saving]
Safety check: [n] candidates rejected for touching converting traffic

── SHARED LIST: "Universal exclusions" ──
"salary"
"jobs"
"how to"
[…]

── CAMPAIGN: [name] ──
"free"
[…]

── AD GROUP: [name] ──
[exact query]
[…]

Then, briefly:

  • Why each theme — one line per entry with the spend it blocks.
  • Rejected candidates — what you did not recommend and the converting query that saved it. This section builds more trust than the list itself.
  • How to apply — Tools → Shared library → Negative keyword lists → + → name it → paste the block → Save, then tick the list and choose Apply to campaigns, selecting every campaign it should cover. A saved list that isn't applied to a campaign blocks nothing, and this is the most common way a negative list ends up doing no work at all. Campaign- and ad-group-level entries go somewhere else: Campaigns → [campaign] → Audiences, keywords and content → Search keywords → Negative keywords. Changes take effect going forward only.

Judgment worth applying

The projected saving is a forecast, not a promise. Blocked spend usually doesn't vanish — it reallocates to other queries. Say "roughly $X/month of clearly wasted spend stops" rather than promising a saving that lands in the bank.

Over-negating is a real and invisible failure. An account with thousands of negatives, accumulated over years by different people, will starve. If the list is already large, say so and recommend auditing existing negatives before adding more.

Some "waste" is upper funnel. Informational queries can be genuinely bad, or they can be a top-of-funnel play someone is running deliberately. Ask if there's a content or awareness goal before excluding the whole research-intent category.

Never apply to a live account without approval, even with write access. Present the list, let the person review it, then apply only what they explicitly approve. A wrong negative removes traffic silently — there is no error message, just a slow decline nobody attributes to this change three months later.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.