Say you run a site about indoor plants. It is four years old, the sitemap lists 184 pages, and you open Google Search Console to see how they are doing. The Performance report, filtered to the last 90 days, shows 121 pages with at least one impression and 64 with at least one click. The other 63 pages are not in the report at all, because a page Google never showed has no row.
That is the starting point of a content audit, the pass where every page on the site gets one verdict. Keep it, refresh it, merge it into a sibling, or prune it. Most sites have never done one. The ones that have usually did it by reading the pages. That is the wrong evidence. The page that reads worst is often earning, and the page that reads fine has quietly lost half its clicks since last year.
This guide does the audit from the numbers instead. Search Console keeps 16 months of data, which is enough to compare this quarter with the same quarter a year ago for every page, and that comparison is the audit. The workflow below is the one we use with the tool we build, ContextBolt SEO, which reads your Search Console and the live results page from inside Claude. The Search Console half costs nothing.
- A content audit gives every page one of four verdicts, keep, refresh, merge or prune. The evidence is each page’s clicks and impressions this quarter against the same quarter a year ago, from your own Search Console.
- Claude cannot see your Search Console on its own. Connect it through MCP and it reads the real rows. ContextBolt SEO is a full SEO toolkit that runs inside the agent, pulls both windows for free, and reads the live top ten for one credit when a refresh needs it.
- Search Console hides the prune column. A page with zero impressions has no row, so the audit starts from your sitemap, not from the report.
- Refresh is where the value is. Prune is the column that matters least and the most over-recommended. Google treats a 404 and a 410 the same, and its own note on removing pages says sites with lots of unhelpful content may notice a stronger effect.
- A 184-page audit costs about 16 credits, all of them on the refresh shortlist. The 7-day free trial includes 100.
What a content audit is, and why the prose is the wrong evidence
The four verdicts are simple to state.
Keep: The page earns what it earned a year ago, or more. Leave it alone. This is most of a healthy site and the audit’s job is to prove it so you stop worrying about it.
Refresh: The page still earns impressions but its clicks fell. Something changed, on the results page or on yours, and the fix is a section, a title or a first screen, not a rewrite.
Merge: Two of your pages are doing one job. Either they share queries and split the impressions between them, or they are both thin on one topic and neither earns. One page should survive.
Prune: The page has earned nothing in 16 months and nobody links to it. It can go.
Here is the opinion this guide is built on. The content audit prompts that rank for this query read your pages and grade the writing. Reading is the wrong instrument. A content audit is a performance decision, and the performance is in Search Console, page by page, with a year of history behind it. A page can be badly written and be the best thing you have on the topic, because almost no other page answers the question. A page can be beautifully written and be worth nothing, because 30 better pages answer the same question. The prose cannot tell you which. The rows can.
The second half of the opinion is about the fourth verdict. Prune is the column that gets the most attention and the one that matters least. The pages you would delete were earning nothing and costing nothing. Google said in its 2022 helpful content announcement that removing unhelpful content “could help the rankings of your other content”, and it also said the signal was site-wide and weighted, so sites with lots of unhelpful content “may notice a stronger effect”. By March 2024 that system had been folded into core ranking, and Google’s own wording is that there is “no longer one signal or system” for it and that its ranking systems are “primarily designed to work on the page level”. So pruning is real, and it is a site-wide hygiene move for sites carrying a lot of thin pages. For most sites the value of the audit is in the refresh column, where pages that already rank are losing clicks they could get back.
One more rule before the steps. Anything under six months old is not audited. A page that young has no year-ago window to compare against and has probably not settled where it will rank. Set it aside and audit it next time.
Why Claude cannot audit your content on its own
Ask Claude to audit your content with nothing connected and it will do what the SERP’s prompts do. It reads the pages, or the sitemap, and it grades them. Thin, outdated, duplicate, off-topic. The grades sound reasonable and none of them is a verdict, because Claude has no idea which of those pages Google is sending people to.
The fix is MCP, the open standard Anthropic introduced in late 2024 for connecting an agent to live data. Connect Claude to your Search Console through an MCP server and it reads the real rows for every page in both windows, joins them on URL, and does the part it is good at, which is applying the same four rules to 184 pages without getting bored, and writing the reason beside each verdict.
That split holds through the whole guide. The tools fetch. Claude sorts, compares and drafts. You read the verdicts and decide. The one-time setup is in connecting Search Console to an AI agent, and none of the Search Console steps below cost a credit once it is done.
Step 1: start from the sitemap, not the report
This is the step that gets skipped, and it is the reason most prune lists are wrong. Search Console’s Performance report has a row for a page only if Google showed that page for at least one query in the window. A page with zero impressions is not a zero in the report. It is absent. So a content audit that starts from the report can never find the pages that most need a verdict.
Start from the sitemap instead. Claude can read a URL in most of the places it runs, and if yours cannot, paste the sitemap into the conversation.
Copy this prompt
Read my sitemap at https://example.com/sitemap.xml and list every URL
in it. Mark anything first published in the last six months TOO NEW.
The sitemap's lastmod moves on every edit, so take the date from the
page's own byline or dateline, and ask me for any you cannot read.
Keep the rest as the audit list and tell me how many pages are on it.
On the plant site that returns 184 URLs, 11 of them too new, so 173 pages go into the audit. Every one of them will get a verdict, including the 63 the report has never heard of.
Step 2: pull two windows a year apart
Now the evidence. Search Console has kept 16 months of data since 2018, and Google’s stated reason was to “enable year-over-year comparisons”, which is exactly what an audit is. Pull the last 90 complete days by page, then the same 90 days one year earlier, and join the two on URL.
In ContextBolt SEO the tool is search_console_performance, which takes exact start and end dates and one dimension. Ask for the page dimension and the maximum 100 rows. It costs no credits. Two things about the rows are worth knowing before you read them. Google’s Search Analytics API returns them sorted by clicks, descending, so the first call is your top 100 pages by clicks in each window. And the data lags two to three days, so end the current window three days ago rather than today.
Copy this prompt
From my Search Console, pull clicks, impressions, CTR and average
position by PAGE for two windows and keep the full tables:
1. The 90 days ending three days ago.
2. The same 90 days one year earlier.
Ask for 100 rows each. Join the two on URL, then join the result to
the audit list from my sitemap. Show me: URL, clicks now, clicks a
year ago, impressions now, impressions a year ago, position now,
position a year ago, and the percentage change in clicks.
On a site under 100 pages, two calls cover everything. On the plant site the two top-100 lists overlap into about 130 URLs, which leaves 43 pages from the sitemap in neither. Those are the tail, and each one needs its own exact-page call to find out whether it earned a trickle or nothing at all. The call is free and it is one page at a time, so let Claude run the batch.
Copy this prompt
For each audit-list page that appears in neither top-100 table, pull
its own Search Console row for the last 480 days by page, filtered to
that exact URL. Record its total clicks and impressions over the 16
months. A page that returns no data at all gets ZERO. Add these rows
to the joined table.
The 480-day pull covers the 16 months Search Console keeps, and a page that returns no rows across all of it has been shown for no query in 16 months. That is the prune test, and it can run nowhere else in the audit, because it needs the page’s name from the sitemap before Search Console can say nothing about it.
Step 3: give every page one verdict
With the joined table in the conversation, the verdicts are four rules. These thresholds are ours, and they are a starting point rather than a law. Move them if your site is much bigger or much smaller.
| Verdict | The rule | What it means |
|---|---|---|
| KEEP | Clicks within 25% of a year ago, or up | Working. Do not touch it, and do not let a rewrite near it |
| REFRESH | Clicks down 25% or more, still earning impressions | Something changed. Diagnose which of three things, then fix that section |
| MERGE | Two or more pages earning on the same queries, or two thin pages on one topic | One page should survive and carry both |
| PRUNE | ZERO across 480 days, and nobody links to it | Remove it. A 404 or a 410, and Google treats them the same |
| TOO NEW | Published in the last six months | Not audited. Next quarter |
The merge rule needs one more free pull, because two pages sharing a query is not visible in a by-page table. For every REFRESH and KEEP page, ask for its query list in the current window, then look for queries that appear under more than one URL.
Copy this prompt
Apply these rules to the joined table and give every page exactly one
verdict: KEEP, REFRESH, MERGE, PRUNE or TOO NEW. Beside each verdict,
write the one number that decided it.
Then, for every KEEP and REFRESH page, pull its top 20 queries for the
current window, filtered to that exact page. Flag any query that
appears under two or more of my URLs and re-tag those pages MERGE.
Give me the counts per verdict and the full table sorted by verdict,
then by clicks lost.
On the plant site the counts come back as 115 KEEP, 14 REFRESH, 6 MERGE (three pairs) and 38 PRUNE candidates, with the 11 TOO NEW pages set aside. Five of the 43 tail pages earned a trickle and landed in KEEP; the other 38 returned nothing across 480 days. Here are six of the rows, because the shapes are what you learn to read.
| Page | Clicks (now / year ago) | Impressions (now / year ago) | Position (now / year ago) | Verdict |
|---|---|---|---|---|
| /monstera-yellow-leaves/ | 610 / 1,240 | 41,000 / 38,000 | 7.9 / 4.1 | REFRESH, position slipped |
| /pothos-vs-philodendron/ | 90 / 310 | 10,400 / 9,800 | 3.6 / 3.2 | REFRESH, clicks fell at the same position |
| /fiddle-leaf-fig-care/ | 420 / 900 | 9,000 / 22,000 | 6.0 / 5.2 | REFRESH, impressions halved |
| /best-grow-lights/ | 175 / 180 | 6,100 / 5,900 | 8.8 / 8.6 | KEEP |
| /how-to-water-succulents/ and /succulent-watering-schedule/ | 40 and 35 | 2,200 and 1,900 | 11.3 and 12.8 | MERGE, same queries |
| /plant-of-the-month-march-2023/ | 0 (480 days) | 0 (480 days) | none | PRUNE candidate |
Three REFRESH rows, three different problems, and the point of the two-window pull is that the numbers tell them apart before anyone reads a page. That is the next section.
Refresh: the pages losing clicks, and the three reasons they do
A page whose clicks fell by a quarter or more has one of three things wrong with it, and each pair of windows says which.
Position slipped, impressions steady or up. The monstera page went from 4.1 to 7.9 while Google showed it more often than before. Demand is fine. A better page arrived above it, or three did. This is the one where you read the live results page, because the fix depends on what took the slot. serp_overview returns the top ten for one credit and page_audit reads your own page for one more, worst issue first. If the page is now sitting between position 5 and 20, the push itself is a different job with its own guide, striking distance keywords with Claude, and this audit’s output is the list it starts from.
Clicks fell, position held, impressions held. The pothos comparison is at 3.6, Google shows it as often as ever, and it earns a third of the clicks it used to. Nothing about the page changed. The results page did. Something above the organic results is answering the question now, and on a comparison query the first thing to check for is an AI Overview. We measured this on our own site in AI Overview click loss, and its answer is the one to take. Check whether the query is fixable before touching the title, stop pricing that ranking as traffic, and give the page something the summary cannot carry, a table or a tool rather than more words. Some of those clicks are not coming back.
Impressions fell, position held. The fiddle-leaf page still ranks about where it did and Google shows it for half as many searches. Either demand moved, or Google stopped showing the page for some of the queries it used to hold. The free way to tell is to pull the page’s query list in both windows and diff them. The queries that vanished are the section that went stale. On the plant site, every query ending in “2025” disappeared, and the fix is the dated product section on that page, not the page.
Copy this prompt
For each REFRESH page, tell me which of the three shapes it is:
SLIPPED (position worse by 2 or more, impressions steady or up),
FEATURE (position and impressions steady, clicks down), or
DEMAND (impressions down 30% or more, position steady).
For DEMAND pages, pull the page's top 50 queries in both windows,
filtered to that exact URL, and list the queries that disappeared.
For SLIPPED pages, pull the live top 10 and audit the page, and name
the section the pages above it have that mine does not.
Draft the change for each page. Change only that section.
The last line is the rule. A refresh rewrites the section that changed, not the page. A page that still ranks is ranking on something, and a rewrite that changes its angle throws that away to fix a problem that lived in one table. The content brief guide is how to write the missing section from the results page, and the on-page audit guide covers what each page_audit finding means.
Merge: two pages, one job
The merge column has two shapes and they get the same mechanism.
Same queries. The two succulent pages each earn a trickle on “how often to water succulents”, and Google is choosing between them per search. This is keyword cannibalization, two of your own pages competing for one query, and the cannibalization guide owns the decision in full. It runs the same per-page query check this audit just ran, decides which URL should win from the numbers, and covers the case where Google has already picked. Hand the MERGE pairs to it and come back with a survivor.
One topic, two thin pages, neither earning. No shared queries, because neither page ranks for anything. This one is simpler. Keep the page with more clicks, fold the other’s one useful section into it, and redirect the weaker URL to the survivor.
The redirect is the part that matters. Google’s documentation on consolidating duplicate URLs lists redirects first among the methods, as “a strong signal that the target of the redirect should become canonical”, ahead of a canonical tag and well ahead of sitemap inclusion. A merge without the redirect is a prune with extra steps.
Prune: the column that matters least
Thirty-eight candidates on the plant site, and that number is going to shrink, because ZERO across 480 days is the first test and not the last.
The second test is links. A page nobody searches for can still be a page somebody links to, and you do not throw away a referring domain to tidy a sitemap. Open Search Console’s Links report and read the top linked pages from external sites. This is a step our tools do not do, because the backlink tools in ContextBolt SEO read a domain’s profile and not a single page’s, so it is a click in Search Console rather than a prompt. Any candidate with a real external link becomes a KEEP or a MERGE, not a PRUNE.
The third test is internal. Ask Claude to find every page on your site that links to the candidate. If a page you are keeping depends on it for a step or a definition, merge the useful part into that page first.
What survives all three is usually a short list. On the plant site, 38 became 19, and 12 of those were monthly announcement pages from the site’s first year. Then the mechanism.
Return a 404 or a 410. Google’s documentation on HTTP status codes says that all 4xx errors except 429 are treated the same, that the indexing pipeline removes a previously indexed URL, and that crawling frequency then gradually decreases. Google’s own status code documentation makes no distinction between the two, so use whichever your platform makes easy.
Do not redirect a pruned page to the homepage. A redirect says the target is the same page, and the homepage is not. Redirect only to a page that answers the same question, which is a merge, not a prune. If there is no such page, let it 404.
Copy this prompt
For each PRUNE candidate, search my site's pages for internal links
pointing at it and list them. Then group the candidates by type:
dated announcements, tag or category pages, duplicates of a KEEP
page, and everything else. For each group tell me whether to remove
it, redirect it to a named KEEP page, or keep it, and why. I will
check external links in Search Console myself.
The whole thing as one prompt
Once you have walked it by hand, the audit collapses into one instruction. This is the version worth saving and running each quarter.
Copy this prompt
Run a content audit on my site from Search Console.
1. Read my sitemap and list every URL. Anything under six months old
is TOO NEW.
2. Pull clicks, impressions and position by page for the 90 days
ending three days ago, and for the same 90 days a year earlier,
100 rows each. Join them on URL. For sitemap pages in neither
table, pull each one's own 480-day row.
3. Verdict every page: KEEP (clicks within 25% or up), REFRESH
(clicks down 25%+, still earning impressions), PRUNE (no data in
480 days), TOO NEW. Then pull the top 20 queries for each KEEP and
REFRESH page and re-tag any pages that share a query as MERGE.
4. For each REFRESH page, name the shape: SLIPPED, FEATURE or DEMAND.
For DEMAND pages, list the queries that disappeared. For SLIPPED
pages, pull the live top 10 and audit the page.
5. Give me the counts, the table sorted by verdict then clicks lost,
and a drafted change for each REFRESH page. Change only the
section that the numbers point at.
Tell me the credits this will cost before you start. Only step 4
costs credits.
The last two lines are a habit worth keeping. The agent quotes the cost, you say go, and everything that came from your own Search Console stays free however many pages the site has.
What it costs, in credits
Every tool above has a fixed price, so the bill adds up before you start. The example is the plant site, 173 audited pages, 14 refreshes of which 8 are SLIPPED.
| Step | Tool | Calls | Credits |
|---|---|---|---|
| Read the sitemap | Claude’s own URL fetch | 1 | 0 |
| Two windows by page | search_console_performance | 2 | 0 |
| The tail, one exact page at a time | search_console_performance | 43 | 0 |
| Query lists for the merge check | search_console_performance | One per KEEP and REFRESH page, 129 | 0 |
| Live top 10 for SLIPPED pages | serp_overview | 8 | 8 |
| Page audit for SLIPPED pages | page_audit | 8 | 8 |
| Verify recrawl after the changes | inspect_url | One per changed URL, 20 | 0 |
| Total | 16 |
Sixteen credits out of 1,000 a month on the $35 plan, and the 7-day free trial comes with 100, so the first audit is covered several times over before any money moves. The reason it is that cheap is structural. The verdicts come from your own Search Console, which is yours and costs nothing to read, and the paid calls are the live reads on the eight pages where something on the results page took the slot. A tool that audits your content by scoring the prose is charging you to skip the evidence that decides.
Running it with ContextBolt SEO
ContextBolt SEO is a hosted SEO MCP server. Start a 7-day free trial, paste one URL into Claude, Cursor, Codex or ChatGPT, connect your Google Search Console property once, and ask in plain language. Nothing to install and no data vendor account to fund. The Search Console and URL inspection tools above are the free half of the toolkit, sitting alongside keyword research, difficulty, live SERPs, site audits, backlinks and AI visibility checks. You do not pick a tool, you ask.
Every lookup saves automatically to your SEO Dashboard, where the SERP reads and page audits from this pass sit with the date they were pulled, and your connected Search Console data gets a daily snapshot. So next quarter’s audit starts from what you found, not from a fresh conversation, and the position each refresh started from is on record. The verdict table itself is the conversation’s output, so paste it into wherever you track site work.
On the numbers, the honest framing is the one we hold everywhere. Your Search Console rows are Google’s own data about your site and they are exact. The live top ten is what Google returned at the moment of the call and can differ by location and device. The page audit reads your page as a crawler sees it. The judgment calls, which threshold, which shape, whether a prune candidate is worth keeping for one link, are yours, and that is what you are reading the data for.
Where the audit stops
Four limits, stated plainly.
The performance call returns 100 rows, in click order. On a site with a few hundred pages, the two-window pull sees the pages that earn and the tail runs one page at a time. That is free and it is slow, and on a site with thousands of pages it is the wrong shape entirely. Audit that site by section, one folder of the sitemap per pass, rather than all at once.
Our tools do not read a single page’s backlinks. The backlink tools read a domain. The prune column’s link check is a click in Search Console’s Links report, and it stays that way until the tool exists. Do not prune without it.
Position is an average and a year is a long time. A page at 6.0 now and 5.2 a year ago may be at 3 on desktop and 12 on mobile, or at 2 in one country and nowhere in another. Before you call a page KEEP on a steady position, break the current window down by device, which the same call does for free. And a year-ago window that straddles a site redesign, a domain move or a Google core update is comparing two different sites; note the date and read the trend on the date dimension instead, which returns the rows chronologically.
Never automate the verdict. The pull can and should run on a schedule, the way the SEO automation guide sets up its monthly decay loop, and a list of the quarter’s biggest decliners in your inbox is worth having. The verdict is a decision a person makes with the table in front of them, because a MERGE done as a PRUNE loses a page that was half of something, and a REFRESH done as a rewrite turns a page that was slipping into a page that is gone.
What you are left with is one table, every page on the site with a verdict and the number that decided it, a short list of refreshes each with its shape and a drafted change, three merge pairs handed to the guide that settles them, and a prune list that survived three tests. That is the quarter’s content work laid out from one conversation, on pages Google has already told you about. ContextBolt SEO starts with a 7-day free trial, so the first audit costs nothing.