Search Term Cleaning

Review supplied Google Ads search terms to separate irrelevant spend from relevant demand and prepare scoped, risk-aware negative keyword proposals.

Campaign optimizationWorks with exports or live data

When to use it

When preparing narrow negative keyword proposals from irrelevant observed queries.

Try asking

“Check our Google Ads search terms and propose negative keywords without blocking queries that convert.”

What you get back

An evidence-linked negative keyword proposal that protects converting and relevant queries, states historical spend exposure, and makes match-type and scope risks reviewable.

Fictional example output

One narrow negative candidate merits review; protect the two converting software queries.

QueryProposalScopeEvidence and conflict check
free spreadsheet templateNegative exact [free spreadsheet template]c1/ag1Off-offer free-template intent; $90 observed spend, 60 clicks, zero mature demos; no supplied protected exact query conflict
acme budget softwareKeepc1/ag1Protected brand; 10 demos at $20 CPA
team budget softwareKeepc1/ag1Relevant paid-software demand; 6 demos at $25 CPA

A broad negative such as software or budget would conflict with valuable demand; do not use it. Negative exact is a proposal for this observed term, not an automatic exclusion of close variants. $90 is historical exposure, not promised future savings. Verify the live negative inventory and requested scope before any authorized application. No negative was applied.

Fictional data. An illustration of the method, not a customer result.

Where the data comes from

Connected with Orphex Recommended

The skill reads your connected accounts for the right dates. Nothing to export or upload.

Connect free
Input columns 7 required, 2 optional
queryRequired
Observed search term; retain meaningful punctuation
campaign_idRequired
Campaign scope
ad_group_idRequired
Ad group scope
matched_keywordOptional
Keyword that served the query
match_typeOptional
Search-term report relationship to the triggering keyword; distinct from its configured inventory match type
currencyRequired
ISO currency
spendRequired
Historical query spend
clicksRequired
Observed query clicks
conversionsRequired
Mature named outcome count
Before you start 3 items
  • Search terms export with dates, scope, cost, and available conversion metrics
  • Brand/protected-query definitions
  • Negative keyword inventory and scope when exclusion proposals are needed

Supply your objectives, conversion definitions, currency, constraints, and approved brand facts once, then reuse the profile across reviews. Leave unknown values explicit.

Open profile source
The method

With an Orphex connection

If an Orphex connector is available, check it before asking for exports. Run capability_search with platform orphex and limit 100; use a read only if that search returns its id, and ask which workspace to use when several are bound. Read controller.catalog then controller.fetch at level search_term for queries, cost and outcomes. If playbook.catalog lists the negative keyword hygiene or brand search playbook, run it with playbook.run. Then list guides with skill_catalog (kind guide, topic search_terms, then brand) and follow a matching one through skill_read; choose by title, never by a stored id.

Source and evaluation v2.1.0 · MIT
View SKILL.md

Orphex Search Term Cleaning

Use this skill when someone asks which Search queries should be excluded, whether paid-search spend is being wasted on irrelevant demand, or how to draft a negative-keyword review. Work from Orphex data when the connection below reaches it, and from user-supplied exports and documents otherwise. Return a proposal, never an account edit.

With an Orphex connection

If an Orphex connector is available, check it before asking for exports. Run capability_search with platform orphex and limit 100; use a read only if that search returns its id, and ask which workspace to use when several are bound. Read controller.catalog then controller.fetch at level search_term for queries, cost and outcomes. If playbook.catalog lists the negative keyword hygiene or brand search playbook, run it with playbook.run. Then list guides with skill_catalog (kind guide, topic search_terms, then brand) and follow a matching one through skill_read; choose by title, never by a stored id.

If a read is not returned, this connection cannot reach that Orphex data for the workspace: say so, then use the live platform reads it offers or the supplied exports. An absent, refused or empty read is not evidence of zero, none or healthy. Describe each read with capability_describe before run_read, keep date_end no later than yesterday, disclose request adjustments, and name each number's source, workspace and window. This skill's evidence rules still govern any guide, insight or playbook label, and no read authorizes account changes. Ask the user only for what is still missing.

Establish what the rows mean

Ask for or extract the reporting window, account timezone, currency, campaign and ad-group IDs or names, search term, matched keyword, reported match type, impressions, clicks, cost, conversions, and conversion value if available. Also request the business definition of brand terms, protected products or services, target customer, conversion action, attribution window, current negative keywords and their scopes. Preserve the export's date and segment grain. If scope, currency, or brand rules are missing, label those fields unknown and do not widen a proposal to account level.

Check whether the period is complete for conversion lag and whether the report includes only visible query rows. Search term reports omit low-activity queries for privacy; an empty or short report does not prove that no other queries served. The report's match-type column describes the query's relation to the triggering keyword and can differ from that keyword's configured match type. Keep those fields separate. Use Google's Search terms report guide for current column semantics.

Classify before proposing exclusions

For each query, classify it as clearly irrelevant, relevant/protected, or uncertain using supplied product, audience, brand, and conversion evidence. Distinguish branded from nonbrand only with the provided brand dictionary or explicit user confirmation; mark ambiguous brand variants for review. Protect any query with a conversion, meaningful value, or an explicit business protection. A zero-conversion row is not proof of irrelevance, especially with few clicks, delayed outcomes, or an incomplete attribution window.

Calculate historical exposure from the selected rows only: sum cost, clicks, and conversions over the stated period. Show the query count and period beside the total. Call this “observed spend exposure,” not recoverable savings. A negative may reduce future cost, delivery, and conversions; it cannot guarantee savings or preserve every useful variant. Do not invent a universal click, spend, or conversion threshold.

Choose match type and scope cautiously

Propose the narrowest negative that addresses the evidence. For Search negatives, broad excludes when all terms appear in any order, phrase excludes the same ordered phrase with possible surrounding words, and negative exact requires the same ordered terms with no added words, under Google's documented case/misspelling handling. These behave differently from positive keyword matching. Negatives do not use positive-keyword close-variant expansion. Google documents automatic casing and misspelling handling; separately review singular/plural, synonym, and other intended exclusions if needed. See Google's negative keyword guide.

Name a campaign or ad group only when the export proves that scope. Before suggesting a shared list or account-level exclusion, inspect every supplied campaign and protected/converting query it could affect. Check existing negatives, overlapping campaigns, brand/nonbrand intent, and product names that also appear in the proposed phrase. If those checks are unavailable, label the scope “unverified” and ask for review rather than recommending a wider block.

Deliver an auditable proposal

Lead with the period, currency, campaign scope, data completeness, and any brand-definition gaps. Give one row per proposed term with: search term; class and rationale; proposed negative text and match type; proposed scope; impressions, clicks, cost, conversions/value; observed spend exposure; relevant or protected overlaps checked; blocking risks; confidence; and reviewer decision. Add a separate “keep” or “investigate” list for converting and ambiguous terms. Confidence describes evidence quality, not certainty of future impact. Tie every row to its source file, row identifier, or query and date.

Fictional example: a 30-day USD export shows “free repair manual” with $42 cost and no conversions, while “repair manual subscription” has two conversions. Propose reviewing the exact negative [free repair manual] at the demonstrated campaign scope; preserve the converting query. The $42 is past exposure, not a savings forecast, and unreported low-volume queries remain unknown.

Any later account mutation requires explicit user authorization naming the account, campaign/list scope, exact terms and match types, and action. This skill and an installed copy do not authorize changes.

Portable inputs and examples

State whether the result is complete, partial, or blocked for the requested decision. Link material findings to actual supplied rows/sources and separate observed metrics, hypotheses, and estimates. Lead with a short business conclusion, then evidence, uncertainty, and the next measurable check. A data export or installed skill does not authorize account changes.

For the supported arithmetic only, optionally run the bundled calculator with Python 3: python3 scripts/marketing_math.py weighted-ratio < calculation.json. Read its input mapping in the input contract before preparing JSON. It reads JSON, not CSV directly. If Python or the requested method is unavailable, show a reproducible alternative calculation or mark it unsupported; do not report an uncomputed result as verified.

View on GitHub Open SKILL.md

How this release was evaluated

See the recorded checks, compared runs, results, and limits for v2.1.0. Example reviews illustrate the method; they do not guarantee account results.

Read the evaluation report