MCPInstall

ad-negative-keywords

Build and maintain negative keyword lists from search term reports to cut wasted ad spend in paid search - n-gram query mining to surface irrelevant search terms, the right negative match types and exclusion levels (account, shared list, campaign, ad group), and a review cadence that avoids overblocking queries that convert. Use whenever the user mentions a search term or search query report, irrelevant clicks, junk traffic, wasted ad spend, or wants to exclude or block keywords - even if they never say 'negative keywords'. Covers B2B lead gen and B2C/e-commerce; needs the account's query data. Do NOT use for account-wide underperformance with no query-level evidence - use mbfinotti/advertising-skills@ad-account-diagnostic instead.

Installs
21.2K
Last 24h
+722
Trending rank
#496
Security
Warn

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/mbfinotti/advertising-skills --skill ad-negative-keywords
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads ad-negative-keywords automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

Security audits

Independent scans of the skill's instructions and bundled files.

Gen Agent Trust Hub PassSAFE ·The skill provides instructional guidance for managing advertising negative keywords. It contains no executable code, network requests, or access to sensitive local files. No security issues were detected.
Socket PassNo alerts
Snyk WarnMEDIUM ·Risk: MEDIUM · 1 issue

SKILL.md

The instructions your agent reads when the skill is triggered.

Negative Keywords

Build and maintain a negative keyword list from search term reports, so paid-search budget stops leaking to irrelevant queries - without blocking the queries that convert.

The mechanics - match types, exclusion levels, thresholds, cadence - are identical for B2B lead gen and B2C/e-commerce. Two things differ by segment:

  • Which junk categories dominate (see taxonomy).
  • The decision data: B2B's sparse conversions force click/cost gates, B2C volume allows conversion-based gates.

Evidence gate

  • Never propose specific negative keywords for a live account without its search term report (also called search query report).
  • Missing report → request an export, explain the overblocking review below, and name zero candidate negatives in the meantime.
  • Exception: a brand-new campaign with no history may get a starter exclusion list - label it "pre-launch starter, review against real queries after 7-14 days".

A list invented from imagination has no evidence of what actually matches, and its cost, blocked converting queries, stays invisible.

Clarifying questions

Ask once, briefly, before analyzing. Skip anything already answered. This is a tactical pass, not an interview.

  1. What counts as a conversion, and what is the target CPA or ROAS?
  2. What date range does the report cover, and roughly what did the account spend over it?
  3. What CPC range does the account run? (Sets the click threshold.)
  4. Which queries or themes must never be blocked - brand terms, converting themes, deliberate competitor bidding?
  5. Which levels can you edit: account/shared list, campaign, ad group?
  6. By what date must the saving show up in the account's numbers?
  7. Is this a one-off cleanup, or a standing maintenance job you want to keep compounding?
  8. What is the effort ceiling per pass - minutes available, who else has to approve a change, and can you reverse an account-level exclusion yourself?

Re-rank this skill's two option menus (exclusion level, cadence) against those answers:

  • A hard date promotes the fast local rungs - ad group or campaign negatives applied in this pass.
  • A standing-maintenance mandate promotes the compounding rungs - shared exclusion lists plus the quarterly conflict sweep.
  • A tight effort ceiling or a slow approval path demotes account-level exclusions, which cost the most to audit and the most to reverse.

Every ordering below is a default, not a law: it shifts with the account and with who executes it. Re-rank against what you already know about this user - an in-house scripting ability makes the n-gram pass and the conflict sweep far cheaper than the default order assumes, and a shared list already built and attached makes that rung near-free. Where an answer rules a rung out entirely rather than moving it, delete it by name (see step 7).

Core mechanics

Read before adding anything - most negative-keyword damage traces to these rules.

  • Positive keywords expand automatically to close variants.
  • Negative keywords do NOT expand to close variants. Add plurals, synonyms, and word stems as separate negatives yourself.
  • Casing and misspellings are matched automatically.
  • Negative match types, ranked by waste blocked per unit of overblocking risk: phrase > exact > broad.
    • Phrase (default) - blocks the words in that order; extra words around them still block. Best ratio: one entry kills a whole junk theme, and a wrong call costs that theme, not the account.
    • Exact - blocks only that literal query. Safest and narrowest: use it for a surgical block next to converting siblings. It needs one entry per variant, so a list built mostly of exacts becomes a standing job.
    • Broad - blocks any search containing ALL the words, in any order. Widest reach and widest blast radius: one bad broad negative silently zeroes a converting theme. Reserve for terms that are wrong in every recombination.
  • Axes disagree:
    • reach: broad > phrase > exact
    • overblocking risk: broad > phrase > exact
    • upkeep effort: exact > phrase > broad
  • Move up to broad only when the term is wrong in every recombination AND the conflict check against active keywords comes back clean. Move down to exact when the term sits one word away from a converting query.
  • Check the platform's default match type when adding from a report - some default to exact, which blocks the fewest searches. Switch to phrase deliberately.
  • Negatives always beat positives: a blocked active keyword still displays as active but never enters the auction.

Workflow

  1. Pull the search term report for the lookback window.
    • 7-14 days for a recurring weekly pass.
    • 30-90 days for a first cleanup or a low-volume account.
  2. Sort by cost descending. Filter to zero conversions. This surfaces the spend producing nothing.
  3. Mark a term as a candidate when it crosses either gate:
    • 15-20 clicks with zero conversions (tighten to 10-12 when CPC is high, roughly $3+).
    • Spend of 1.5-2x target CPA with zero conversions, regardless of click count.
    • Low-volume B2B: conversion data is too sparse to gate on - rely on the click/cost gates plus clear irrelevance from the taxonomy.
  4. Classify each candidate with the taxonomy below. A merely uncertain term is not a candidate - leave it to collect more data.
  5. Run the overblocking review on every candidate:
    • Ever converted in account history (the term or a close sibling)? Do not negate.
    • Would the chosen match type also block a plausible converting query? Narrow the match type or wording.
    • Conflicts with an active keyword anywhere in the account? The negative silently zeroes that keyword.
  6. Set the match type per the ranking in Core mechanics, then expand variants manually: plural/singular, synonym, and stem forms.
  7. Pick the level, ranked by waste blocked per unit of blast radius: shared exclusion list > ad group or campaign > account.
    • Shared exclusion list (default) - for a recurring theme across campaigns. Costs about an hour once: name it by taxonomy category, attach it, document it. After that every new campaign inherits it by attachment, so the payoff compounds. Reversible by detaching, and the blast radius stops at what you attached.
    • Ad group or campaign - for a query genuinely local to one container. Near-zero effort, near-zero blast radius, and near-zero durability: the same term resurfaces in the next campaign and gets negated again from scratch.
    • Account level - for universal disqualifiers and brand-safety terms only. Widest reach, and the worst reversibility of the three: it suppresses everywhere, including campaigns built later by someone who never saw the list, and nothing in those campaigns points back at it.
    • Axes disagree:
      • reach: account > shared list > ad group
      • setup effort: shared list > account == ad group
      • effort to audit later: account > shared list > ad group
      • reversibility: ad group > shared list > account
    • Account and ad group tie on setup effort because both are the same act - paste the term into one container's negative list, near-zero either way. Everything that separates them lands after setup, on reach, audit and reversal.
    • What the efficiency order starves: the account-level exclusion. It buys the widest reach of the three and it is the one rung nobody can audit or reverse cheaply, so a ratio always picks something smaller. Promote it anyway for a universal disqualifier or a brand-safety term - the terms whose cost of leaking once is higher than the cost of an over-wide block - and the third time the same term needs negating in a new container.
    • Move down when the term is only wrong for one product line, geography, or campaign intent.
    • Delete, don't demote: with no edit rights at account level, that rung leaves this user's menu and is reported as deleted, not ranked last. Same for the shared list on a platform that has no shared-list object at all - plan on per-container negatives and a written re-application step, rather than a rung the account cannot express.
  8. Deliver in the output shape below. On a live account, present a draft for approval - never mass-apply silently.
  9. Log the change (date, terms, level, match type, reason) and schedule the next pass per the cadence.

Query mining for hidden terms

Platforms hide a large share of search terms - practitioner measurements center around 40% of spend. Token-level mining recovers signal the report no longer shows:

  1. Export all visible search terms with cost, clicks, conversions.
  2. Tokenize each query into unigrams, bigrams, and trigrams.
  3. Aggregate cost and conversions per token across every query containing it.
  4. Sort tokens by cost descending, filter zero conversions, apply the same gates as the main workflow.
  5. Negate bad tokens as phrase negatives. Flag high-converting tokens as expansion leads for the account owner - positive keyword research is out of this skill's scope.
  • Can run scripts: a short tokenizer over the export is the fast path.
  • Can't run scripts: do the same aggregation in a spreadsheet - split words into columns, pivot, sum cost per token. Same logic, smaller scale.

These two are deliberately unranked: capability decides, not efficiency. The tokenizer is only cheaper for someone who already writes scripts, and the spreadsheet produces the identical aggregation.

Cadence

Axes disagree:

  • value (waste caught per hour): recurring search-term pass > quarterly conflict sweep > monthly list audit
  • standing cost: recurring pass > monthly list audit > quarterly conflict sweep

Get the top rung running before adding either other one. The sweep is the cheapest commitment on the page and still outranks the audit on value.

  • Recurring search-term pass - budget 15-20 minutes, most of it the overblocking review and approval.
    • Weekly, 7-14 day lookback: higher-spend accounts (~$10k+/month), or anything new or in a learning phase.
    • Bi-weekly to monthly: stable lower-spend accounts.
    • Several near-empty passes in a row → lengthen the interval.
  • Quarterly conflict sweep - a full conflict check against active keywords, plus the match-type review (are broad negatives over-blocking?). Four short runs a year that catch the most expensive failure in this skill: a negative silently zeroing a keyword that was serving.
  • Monthly list audit - prune stale entries from shared exclusion lists, merge duplicates. Hygiene only: defer it while the recurring pass is still surfacing real waste.

Irrelevant-query taxonomy

Same categories for B2B and B2C; the weighting differs.

CategorySignalsHits hardest
Competitorcompetitor brand namesboth - strategy call, confirm before negating
Job seekerjobs, careers, salary, hiring, intern, resumeB2B
DIY / free intentfree, diy, template, cheap, open sourceB2B
Informationalwhat is, how to, meaning, tutorial, course, pdfB2B
Wrong geographycities/countries not servedboth
Wrong product tierused, refurbished, wholesale, mini, for kids, replacementB2C
Comparison / researchreviews, best, vs, comparisonboth - often early-funnel, not junk; judge per account
Unsafe / brand-unsafeadult, illegal, tragedy-adjacentboth
  • Treat competitor and comparison terms as strategy calls, never automatic junk - some accounts bid them deliberately. Ask first.
  • B2C/e-commerce adds attribute mismatches (size, color, gender, model) the catalog can't serve.

Output shape

Deliver every pass as:

  1. Summary: spend analyzed, wasted spend found (cost on zero-conversion candidates), % of total, and any exclusion level deleted from this account's menu with the constraint that deleted it.
  2. Additions table: term | match type | level | evidence (clicks, cost, conversions) | category | variants added.
  3. Do-not-negate list: candidates that failed the overblocking review, with the reason.
  4. Watchlist: uncertain terms left to collect data, each with the gate that would trip it.
  5. Next review date.

See references/worked-example.md for a filled-in B2B pass and an e-commerce pass, plus a negative example of what not to do.

Failure modes

  • Overblocking: every negative narrows reach, and a healthy account's true waste is often only 4-8% of spend. Negate the clearly wrong, never the merely uncertain.
  • Negating a converting term: the single most expensive mistake - the overblocking review exists for it. Check conversion history first, always.
  • Forgetting the close-variant asymmetry: a negative blocks "running shoes" but not "running shoe". Lists without manual plural/synonym variants quietly leak.
  • Default match-type trap: adding from the report at a default of exact blocks almost nothing - the list looks maintained while the waste continues.
  • Conflicts with active keywords: a negative above an active keyword silently zeroes it. Run the quarterly sweep. Re-check whenever adding broad negatives.
  • Volume worship: more negatives is not better. A large published study of account-level exclusions found near-zero CPA/ROAS difference versus accounts without them - where and how negatives are applied matters more than how many.
  • Query-length blind spot: very long searches can slip past negatives positioned late in the phrase - never rely on negatives alone for brand safety.

Objective and measurement

  • Primary KPI: wasted spend share = cost on zero-conversion irrelevant terms / total analyzed spend, recomputed each pass on the same lookback window length.
  • Pass threshold: after 90 days on cadence, wasted spend share under 10% of non-brand spend AND zero converting terms blocked (verify against the change log and conversion history).
  • Secondary KPIs:
    • CPA/ROAS delta across adjacent equal-length windows.
    • Reclaimed non-brand spend - practitioners report 10-20% reclaimed within 90 days on previously unmanaged accounts.
  • Already at 4-8% wasted share? The account is near its practical floor: shift effort to the conflict sweep and watchlist, and lengthen the cadence rather than forcing new exclusions.

References

  • references/worked-example.md - worked B2B and e-commerce passes in the output shape, plus a negative example.
  • references/platform-notes.md - optional vendor-specific notes (defaults, limits, keywordless surfaces). Load only when the user names their platform.
  • mbfinotti/advertising-skills@ad-bidding-strategy - bid strategy decisions.
  • mbfinotti/advertising-skills@ad-spend-allocation - budget allocation across campaigns.
  • mbfinotti/advertising-skills@ad-budget-pacing - campaign pacing and spend distribution.
  • mbfinotti/advertising-skills@ad-account-diagnostic - account-wide underperformance diagnosis.
  • mbfinotti/advertising-skills@paid-landing-page-audit - landing page optimization.
  • mbfinotti/advertising-skills@ad-copy-variants - ad copy and creative testing.

FAQ

What does the ad-negative-keywords skill do?

Build and maintain negative keyword lists from search term reports to cut wasted ad spend in paid search - n-gram query mining to surface irrelevant search terms, the right negative match types and exclusion levels (account, shared list, campaign, ad group), and a review cadence that avoids overblocking queries that convert. Use whenever the user mentions a search term or search query report, irrelevant clicks, junk traffic, wasted ad spend, or wants to exclude or block keywords - even if they never say 'negative keywords'. Covers B2B lead gen and B2C/e-commerce; needs the account's query data. Do NOT use for account-wide underperformance with no query-level evidence - use mbfinotti/advertising-skills@ad-account-diagnostic instead.

How do I install ad-negative-keywords?

Run npx skills add https://github.com/mbfinotti/advertising-skills --skill ad-negative-keywords in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/ad-negative-keywords/ (personal) or .claude/skills/ad-negative-keywords/ (project).

Which AI agents can use ad-negative-keywords?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is ad-negative-keywords safe to install?

Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk flagged items to review. As with any skill, read the SKILL.md and bundled scripts before installing.

Who maintains ad-negative-keywords?

It is published by mbfinotti in mbfinotti/advertising-skills. It has 21,221 recorded installs.

More from mbfinotti/advertising-skills

View all →

ad-creative-brief

mbfinotti/advertising-skills

Turn a campaign goal and an audience insight into a structured creative brief a designer, video editor, or UGC creator can execute - messaging angle, hook directions, art direction, specs, testing intent, and the handoff and revision loop. Covers B2B and B2C, with variants for static image, short-form video/UGC, and search/responsive text ads. Use whenever the user needs to brief a designer or creator, asks what an ad should say, or mentions messaging pillars, creative direction, or a design handoff - even if they never say 'brief'. Writes direction, never the finished asset: the ad copy itself is mbfinotti/advertising-skills@ad-copy-variants and shot-by-shot creator scripts are mbfinotti/advertising-skills@ugc-ad-scripts.

Media & Creative21.3K installs

ad-creative-test-plan

mbfinotti/advertising-skills

Design a pre-launch ad creative test plan - falsifiable hypothesis, isolation level, test cells with per-cell budgets, required sample, spend and duration, and kill/scale rules pre-registered before any money moves. Every cell carries an explicit read standard, so an underpowered screen is never dressed up as an A/B test. Use whenever the user wants to test ads, mentions an A/B or split test on creative, asks how much budget or how long a test needs, or mentions sample size, statistical significance, single-variable vs big-swing testing, or test cell structure - even if they never say 'test plan'. Covers B2B and B2C. Do NOT use to read results from a test already running - use mbfinotti/advertising-skills@ad-creative-fatigue instead.

Testing & QA21.3K installs

ad-account-diagnostic

mbfinotti/advertising-skills

Diagnose the root cause of an underperforming paid ad account - why the ads stopped working, why CPA went up, why ROAS dropped - instead of defaulting to 'increase the budget'. Weighs tracking, account structure, targeting, creative, bidding and budget, offer, and external forces, and returns a prioritised verdict with evidence and confidence. Covers B2B and B2C on search, paid social, video, and native. Use whenever the user mentions an ad account audit, a campaign structure review, wasted ad spend, rising cost per lead, or says their ads used to work - even if they never say 'diagnostic'. Diagnosis only, and it stops at the click: post-click page problems are mbfinotti/advertising-skills@paid-landing-page-audit and creative decay is mbfinotti/advertising-skills@ad-creative-fatigue.

Marketing & SEO21.3K installs

ad-conversion-tracking

mbfinotti/advertising-skills

Verify that conversion events are correctly configured, firing once, and deduplicated before a paid campaign launches, then turn the evidence into a GO / NO-GO decision. Covers tag debugging, test conversion tracing, browser/server event deduplication (including Conversions API setups), value and currency checks, conversion action status, consent handling, and test-data exclusion. Use whenever the user asks if their tracking works, mentions a pixel or tag check, conversions not showing up, duplicate conversions, or a pre-launch checklist - even if they never say 'conversion tracking'. Covers B2B lead gen and B2C ecommerce on any ad platform. Do NOT use to reconcile platform vs CRM numbers after launch - use mbfinotti/advertising-skills@ad-attribution-gap instead.

Marketing & SEO21.3K installs

ad-swipe-file

mbfinotti/advertising-skills

Build and maintain a competitor swipe file - competitors' currently-running ads collected into a categorised, queryable library classified by format, hook type, offer/angle, awareness stage, and funnel stage, then converted into ranked creative test hypotheses. Accepts pasted ad text, described ads, screenshots, export files, or public ad transparency libraries. Use whenever the user asks what ads competitors are running, wants a competitor ad teardown, creative inspiration, or to know what is working in their category - even if they never say 'swipe file'. Covers B2B and B2C on any paid channel. Stops at ranked hypotheses: briefing is mbfinotti/advertising-skills@ad-creative-brief and test design is mbfinotti/advertising-skills@ad-creative-test-plan.

Marketing & SEO21.3K installs

ad-audience-targeting

mbfinotti/advertising-skills

Turn a business's ICP and buying signals into a layered ad audience targeting plan - cold/broad prospecting, interest and in-market behavioural segments, lookalike/similar, first-party lists, and retargeting pools - each sized against platform audience floors, budgeted to the learning threshold, and kept from overlapping by exclusion rules. Use whenever the user mentions ad targeting, who to target with ads, audience tiers or layers, broad vs. layered targeting, audience overlap between campaigns, or mapping an ICP onto ad audiences - even if they never say 'audience'. Covers B2B and B2C. Do NOT use to pick the seed customers behind a lookalike (mbfinotti/advertising-skills@lookalike-audience-seeds) or to sequence retargeting messages (mbfinotti/advertising-skills@retargeting-funnel).

Marketing & SEO21.3K installs

Popular marketing & seo skills

View category →

reddit-automation

flowkit-labs/skills

Find Reddit threads where people are genuinely asking for what you offer, then draft short, genuinely helpful replies — disclosing your affiliation honestly and naming your product only when it truly answers the question. Two moves: discovery — scan the right subreddits for real needs (recommendation asks, expressed pain, competitor mentions) and rank the few threads where you can actually help; drafting — write from real experience, respect each community's self-promo rules, and keep a human in the loop to review and post. This markets on Reddit the honest way: contribute value, disclose who you are, never astroturf. Distilled from the playbook behind doany.ai's Reddit agent. Triggers on "find reddit opportunities", "reddit marketing", "reddit automation", "reply on reddit for my product", "reddit community engagement", "reddit lead gen", or any ask to turn Reddit threads into genuine, disclosed marketing replies.

Marketing & SEO1.1M installs

twitter-automation

101-skills/superpowers

Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet

Marketing & SEO880K installs

twitter-automation

magentosh/superpowers

Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet

Marketing & SEO771.7K installs

twitter-automation

qu-skills/superpowers

Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet

Marketing & SEO564.3K installs

product-launch-video

heygen-com/hyperframes

Turn a product or marketing URL, pasted script, or brief into a product launch / promo video — SaaS promos, feature reveals, product demos, app and company launches. Use when the user wants to market, launch, promote, or reveal a product; the default for any commercial URL. Site tours / showcases of a website route here too — the brief carries the show-it-as-is intent. Unclear → /hyperframes.

Marketing & SEO538.7K installs

twitter-automation

skills-shell/superpowers

Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet

Marketing & SEO453.7K installs