search-term-review
Skill0 starsChanged 47 days agoMITView on GitHub
Review a Google Ads search terms report for wasted spend and new keyword opportunities, allowing for offline conversion lag so terms whose qualified leads have not been uploaded yet are not cut. Use when asked to mine search terms, find negative keywords or review search query reports.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- Aluxads/claude-skillstheir own version, first seen Nov 1, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- Aluxads/claude-skills★ 0same 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 repository3 other files it gives its agents.
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. About 0 are common, 15 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈15
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Ask for whichever of these the user has not supplied.
- Distinctive: line 28
If the primary actions are only online (form submit, purchase with a tag), the lag is usually a few days.
- Distinctive: line 30
If you cannot measure it, ask the user.
- Distinctive: line 41
If the mature window is shorter than 30 days because the data pulled does not go back far enough, say so and ask for a longer pull before …
- Distinctive: line 45
Put each term in exactly one class:
- Distinctive: line 48
Competitor: follow the user's instruction.
- Distinctive: line 49
Brand: never negate. Note brand terms appearing in non-brand campaigns as a structure issue.
- Distinctive: line 67
Check against existing negatives and do not propose a duplicate.
- Distinctive: line 68
Check every proposed phrase or broad negative against the converting terms list.
- Distinctive: line 76
Use exactly this structure.
- Distinctive: line 108
Every proposed negative carries a reason a person can check in five seconds.
- Distinctive: line 112
Do not apply, upload or schedule any change, even if a tool that can do so is available, unless the user explicitly approves a specific …
- Distinctive: line 113
Do not treat conversions from the immature window as complete, ever.
- Distinctive: line 114
Do not negate brand terms.
- Distinctive: line 115
Do not invent conversion lag.
≈ “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.
Files
Search term review (lag-aware)
You review a Google Ads search terms report and propose negative keywords and new keywords. You never apply changes. You produce a proposal for a person to approve.
The failure this skill exists to prevent: a rule like "last 7 days, spend over X, zero conversions, add as exact negative" cuts the best terms in any account that imports offline conversions. Google Ads reports an uploaded conversion against the date of the click, so a lead that qualifies in the CRM three weeks after the click only appears against that click once the upload runs. Until then the term looks like waste.
Inputs
Ask for whichever of these the user has not supplied. Work with what you get and say what was missing.
- Search terms (required):
queries.gaqlquery 1, or an interface export with campaign, ad group, search term, match type or status, clicks, cost, conversions, conversion value. At least 90 days if possible. - Conversion lag (strongly recommended): query 2 (lag buckets by conversion action), or the CRM export below, or the user's own answer to "how many days from click to a lead being marked qualified, for most leads?"
- CRM leads (optional): lead created date, click ID (gclid, gbraid or wbraid), current status, and status date. Plus query 3 (click_view) for the same days so click IDs can be joined to campaign, ad group and keyword.
- Existing negatives (optional): query 4, and any shared negative lists the user exports.
- Account context (ask once): what the business sells, what a qualified lead or a good sale is, brand terms, competitor terms they do or do not want, services they do not offer, locations they do not serve.
Method
1. Work out the lag window
Take the conversion actions used for bidding (primary). For each, find the number of days by which about 90% of conversions have been recorded (the "p90 lag"). From query 2, sum conversions by lag bucket and read where the cumulative share passes 90%. From the CRM, use the days between lead created and qualified status.
If the primary actions are only online (form submit, purchase with a tag), the lag is usually a few days; say so and use 7 days.
If you cannot measure it, ask the user. If they do not know, use 30 days for lead generation and 7 for ecommerce, and flag the assumption at the top of the output.
Call this L.
2. Split the period
- Mature window: clicks older than
Ldays. Conversion data here is close to complete. - Immature window: the last
Ldays. Conversions here are still arriving.
Judge waste on the mature window only. Use the immature window for spend trend and for spotting brand new terms, never as evidence of zero conversions.
If the mature window is shorter than 30 days because the data pulled does not go back far enough, say so and ask for a longer pull before proposing negatives on anything other than clear irrelevance.
3. Classify every term with spend
Put each term in exactly one class:
- Irrelevant: the searcher cannot be a customer (jobs, free, DIY where the business is a service, a service not offered, a location not served, a different product with the same word). These can be negated whatever the conversion data says, because relevance does not depend on lag.
- Competitor: follow the user's instruction. If none, list separately and do not negate.
- Brand: never negate. Note brand terms appearing in non-brand campaigns as a structure issue.
- Relevant, converting: conversions in the mature window. Candidates to add as keywords if not already one.
- Relevant, no conversions yet: relevant, but zero conversions in the mature window. Candidate for negation only if mature-window cost exceeds the threshold below.
- Relevant, too early: relevant, and most of its clicks are in the immature window. Never negate. List them so they get checked next run.
Threshold for "no conversions yet": mature-window cost greater than 2 × the account's mature-window CPA for the relevant conversion action. If the account uses value-based bidding, use 2 × cost per unit of value at the account's average value per conversion. Tell the user the threshold you used.
4. Hold anything with open leads
If you have CRM data joined to click_view: for each ad group, count leads from the mature and immature windows whose status is still open (not qualified, not lost). click_view gives the campaign, ad group and keyword for a click ID, not the search term, so this hold works at ad group level.
Any "no conversions yet" term in an ad group with open leads from the period moves to Hold: leads pending rather than a negative. State how many open leads the ad group has.
5. Choose match type and level for each proposed negative
- Exact match negative for a single bad query that shares words with good ones.
- Phrase match negative for a bad concept that will recur ("jobs", "salary", "free", "course").
- Campaign level if the term is only wrong for that campaign; account-level or shared list if wrong everywhere.
- Check against existing negatives and do not propose a duplicate.
- Check every proposed phrase or broad negative against the converting terms list. If it would block a converting term, say which and downgrade it to exact.
6. New keyword candidates
Relevant, converting terms that are not already keywords (search term status NONE or EXCLUDED in query 1), with at least 2 conversions in the mature window. Propose the ad group and match type.
Output
Use exactly this structure. Tables in Markdown. Currency in the account currency with two decimals.
# Search term review: <account name>, <date range>
**Lag window used:** <L> days (<how it was measured, or "assumed">)
**Mature window:** <start> to <end> · **Immature window:** <start> to <end>
**Waste threshold:** <amount> mature-window cost with zero conversions (<how derived>)
**Data missing:** <list, or "none">
## Proposed negatives (needs approval)
| Term | Negative | Match | Level | Mature cost | Clicks | Reason |
## Hold: leads pending
| Term | Ad group | Mature cost | Open leads in ad group | Recheck on |
## Too early to judge
| Term | Cost (immature) | Clicks | First seen |
## Proposed new keywords (needs approval)
| Term | Ad group | Match | Conversions | Conv. value | CPA |
## Competitor and brand notes
<short prose or "none">
## Totals
Proposed negatives would have removed <amount> of mature-window spend (<share>% of total). <amount> is on hold pending leads.
## What this review could not see
<one to three sentences>Every proposed negative carries a reason a person can check in five seconds. If there is nothing worth proposing, say so; an empty review is a result.
Rules
- Do not apply, upload or schedule any change, even if a tool that can do so is available, unless the user explicitly approves a specific list in this conversation.
- Do not treat conversions from the immature window as complete, ever.
- Do not negate brand terms.
- Do not invent conversion lag. Measured, stated by the user, or assumed and flagged.
- Performance Max search term insights are category-level and cannot take a negative in the same way; if PMax data is supplied, report it separately and do not propose keyword negatives from it.
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
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.

