Scenario · Content and search
A word has to change everywhere
“Take X off the site — every mention of it.” Or: “Replace X with Y everywhere.”
A word or phrase has to disappear from a whole site — or be swapped for something else — and the real risk isn't the visible copy. It's what a manual find-and-replace can't see: a link nobody notices, a page title, a schema tag, the page's own address. This finds every one of those, visible or not, and proves the whole site is clean afterwards.
What to ask for
See it work
A real run of Redirect check:
Redirect check · redirect-check — following 1 chain(s) …
FAIL — 0 pass · 0 review · 1 fail
✗ https://toolkit-tests.pages.dev/r/loopA 302→302→LOOP
redirect loop — the chain returns to a URL it already visited
playbook: local fallback
tsv: ./out/redirects.tsv
text: ./out/redirect-check-redirect-check.txt
report: ./out/redirect-check-redirect-check.htmlThe captured report, exactly as a run hands it to a client —open the full report ↗
Removal and replacement are the same job with a different answer in the disposition column, so they share this procedure.
The most common failure: the visible copy gets edited and an invisible reference survives — a link,
a meta tag, a schema field, the page’s own slug. Visible-text search alone cannot catch this. A real
case: two empty <a href="…/retatrutide/"></a> anchors, invisible to a reader and to a visible-text
search, still live on the page after the visible copy had already been edited cleanly.
- Get the exact string and the boundary. The literal phrase, and whether it goes or changes to
something. If it arrived as a helpdesk ticket,
helpdesk-freescoutreads the conversation; a ticket that names a page is still a whole-site job until the search says otherwise. - Map the site. The sitemap-and-robots read produces the URL list every later step runs against. One page is only one page when the client named one and the search finds nothing elsewhere.
- Find every reference — visible and invisible. Run the content search over that URL list with
the raw pass on, so hrefs,
<title>/meta, JSON-LD, alt attributes, class names, comments and the page slug itself are searched alongside the visible text. Screenshot the matched pages in the same run. A visible-text-only search on a removal mandate is the specific mistake this step exists to prevent: it returns PASS on a page that still links to the thing. - Build the disposition table and get it signed off. One row per hit — URL, surface, the exact text, the action from the rubric below, the replacement text if it is a rewrite. Nothing is edited before someone approves the table. The same table, minus the internals, is the “here is everything we found and what happens to each” reply the client should get.
- Make the change, row by row. Done by hand in the CMS, following the approved table and nothing else. A killed page gets a 301 to its parent section, never a bare 404. Then republish and purge the cache. This step is deliberately not automated: it is an irreversible write to a live client site, and the judgement in step 4 is what makes it safe.
- Prove it. Re-run step 3 unchanged — zero hits on both passes, not just the visible one. Before/after-check every edited page, so the edit is shown not to have moved anything else. Run the redirect check on any retired URL to prove one clean 301 with no chain. Close the ticket with those three artifacts attached, so “removed and verified” is a claim someone can check.
The disposition rubric
One of these per hit, decided in step 4 by a person, never silently at edit time.
| Action | When it applies |
|---|---|
| DELETE-WORD | The term is parenthetical, or one item in a list that survives. Remove the token and repair the punctuation or conjunction. Nothing else changes. |
| DELETE-SENTENCE | Strip the term and what remains is ungrammatical and carries nothing — the sentence existed only for the term. Kill the sentence. Never apply this as a blanket rule; that is how a page gets gutted. |
| REWRITE | The sentence carries value beyond the term. Rewrite preserving every fact except the term. The proposed replacement goes in the table before approval, not after. |
| STRUCTURAL | Empty anchors, nav entries, list items, schema nodes, comments — a link-href, schema or comment surface hit. Delete the element; there is no prose judgement to make. |
| META | The hit is in a <title> or meta description. That is the meta-writing skill’s job, not a hand edit. |
| REDIRECT | A whole page is being retired. Pick the 301 target — the parent category, not the home page — and verify it afterwards. A 404 where a page used to be does not satisfy the mandate. |
Surface tells you which rubric row you are in before you read a word of it: link-href, schema and
comment hits are STRUCTURAL, meta hits are META, body hits are the only ones needing an
editorial call, and class-id hits are usually a styling hook rather than a reference at all.
Why the approval gate is a step and not a courtesy
Steps 1–3 are mechanical and repeatable; step 5 is irreversible. The table in step 4 is the only place where an editorial judgement is written down before it is executed, and it is the artifact that turns “we removed it” into something reviewable. Skipping it does not save time — it moves the decision into the edit, where nobody can see it and nobody signed it.
What this does not cover
Whether the word *should* go, and the edit itself. It finds every reference and proves the site is clean afterwards; the change is made by hand in the CMS, because a site-wide find-and-replace is irreversible and cannot tell a service name from the same word inside a sentence that still needs to make sense. It reads delivered HTML, so a reference written into the page by JavaScript after load is outside it, and it cannot decide whether a sentence should lose one word or be rewritten.