An agency can audit a client's articles by exporting every URL with its title, word count and search data into a spreadsheet, asking an AI assistant to group the pieces by topic in batches of about 50, then reviewing each cluster for gaps, overlaps and thin pages. The AI proposes a verdict per URL. A person confirms it.
The caution is that AI judges text, not business value. It will happily recommend merging two articles that each earn a steady trickle of leads, because it cannot see the leads. Every verdict below therefore passes a data check before anything is deleted or redirected.
Five stages, and what each one produces
The audit runs best as five stages, each handing a clean artefact to the next. Skipping a stage is how agencies end up with a confident-sounding report built on a half-complete URL list.
| Stage | Output | Who does it | Typical time for a 200-article library |
|---|---|---|---|
| 1. Export | One row per URL: title, date, word count, clicks, impressions | Crawler plus search console export | 45 to 60 minutes |
| 2. Summarise | One-line topic and intent per URL | AI, then spot-checked | 30 to 40 minutes |
| 3. Cluster | Topic groups with a main page per group | AI proposes, strategist edits | 60 minutes |
| 4. Gaps and overlaps | A gap list and an overlap list | AI proposes, strategist rules | 60 to 90 minutes |
| 5. Verdicts | Keep, refresh, merge or prune per URL, with reasons | AI drafts, strategist and client sign off | 90 minutes plus client review |
The times are illustrative, drawn from how a small agency might budget an afternoon and a half. Your own first run will take longer because the spreadsheet layout is new. The second client's audit is where it starts to pay back.
Building the export the AI will read
The quality of the audit is capped by the quality of the sheet. Crawl the client's article section with a desktop crawler. Screaming Frog's SEO Spider has a free version that crawls up to 500 URLs, which covers most small-business libraries; larger ones need its paid licence, so check the current price on its pricing page. Export the internal HTML pages, then add a search console export of clicks and impressions for the past 12 months, matched by URL.
Keep these columns and no others: URL, title, H1, meta description, word count, publish or last-modified date, clicks, impressions, number of internal links in. Drop anything that holds personal data. If the client has comments under the articles, leave the comment text out entirely.
Before involving AI, filter out the rows that are not articles: tag pages, author archives, paginated list pages and attachment URLs. A common crawl mistake is leaving 30 tag pages in a 200-article export, after which the assistant dutifully reports 30 pieces of thin content that were never articles.
A quick sanity sum
Say the crawl lists 412 URLs. Remove 38 tag and archive pages, 11 redirects and 7 pages that return an error. That leaves 356 candidate articles. Split into batches of about 50, that is seven batches: six of 51 rows and one of 50. Write that number in the project plan, because it also tells the client roughly how many prompts the audit needs.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowStage two: a one-line summary for every URL
Clustering works far better on short summaries than on titles alone, because titles are often clever and unhelpful. Upload a batch of 50 rows to a chat assistant and ask for a structured summary. If the client's article text is available, include the first 300 words of each; otherwise work from title, H1 and meta description and flag the result as lower confidence.
You are helping audit a client's article library. For each row below, return a table with:
- URL
- Primary topic in 3-6 words
- Reader intent: learn / compare / decide / fix a problem
- Funnel stage: awareness, consideration or decision
- Confidence: high if based on article text, low if based on title only
Do not invent details that are not in the row. If the title is unclear, say "unclear" rather than guessing.
Rows:
[paste 50 rows here]
Here is an illustrative slice of what comes back for a client that runs a coworking space:
| URL slug | Primary topic | Intent | Stage | Confidence |
|---|---|---|---|---|
| /hot-desk-vs-dedicated-desk | Hot desk versus dedicated desk | compare | consideration | high |
| /coworking-day-pass-guide | Using a day pass | learn | awareness | high |
| /our-spring-open-day | unclear | unclear | unclear | low |
| /is-coworking-worth-it | Value of coworking | decide | consideration | high |
What you would fix: the open-day post is an event announcement from two years ago, which the assistant correctly refused to label. Those rows go to a separate "dated news" bucket instead of a topic cluster. Spot-check five summaries per batch against the live pages. If more than one is wrong, shorten the batch and add article text.
Stage three: clustering without making up the groups
With all summaries joined in one sheet, ask the assistant to propose clusters. Give it a ceiling, otherwise it will invent 60 micro-topics. For a 350-article library, 12 to 20 clusters is usually workable.
Below is a table of 356 articles with one-line topics. Group them into no more than 18 topic clusters.
For each cluster give: a cluster name, the URLs in it, and which single URL is the strongest candidate for the main page (use clicks and word count, and say why).
List any URL that fits no cluster under "Unclustered" instead of forcing it in.
Do not rename or alter URLs.
Large tables can exceed what a chat window handles well. If the assistant truncates or silently drops rows, count the output. A reliable check is to paste the row count in and ask the assistant to confirm that the clustered URLs plus the unclustered ones total exactly 356. A mismatch means rows went missing, and you re-run in two halves.
The strategist's job here is to rename clusters into the client's own language. If the client sells meeting rooms and the assistant names a cluster "workspace flexibility", rename it "meeting room hire" so the cluster list matches how the client's sales team talks.
Stage four: finding overlaps (cannibalisation)
An overlap is two or more articles that answer the same question, so they compete for the same searches. Within each cluster, ask the assistant to compare pairs and mark likely overlaps. The test is not similar titles; it is similar reader intent.
For the cluster "Hot desks and dedicated desks" below, check every pair of articles. Flag a pair as OVERLAP only if both would reasonably be the top result for the same search query. For each overlap give:
- the two URLs
- the search query they would both target
- what each article does that the other does not
- your recommendation: merge into one, differentiate, or leave
Keep your reasoning to two sentences per pair.
Then verify with real data. Open the search console data for that query. If two URLs alternate in the results week to week, the overlap is real and costing the client position. If one URL consistently wins and the other gets almost no impressions, the second is probably just thin content, and the fix is a refresh or removal rather than a merge.
Worked example: two articles, one query
Take a client's event venue with two articles: "How to plan a corporate event" (1,900 words, 180 clicks a month) and "Corporate event planning checklist" (700 words, 14 clicks a month). The assistant flags an overlap on the query "corporate event planning". The data check shows the longer piece wins most impressions, and the checklist holds a useful table the longer one lacks. The verdict: merge the checklist table into the longer article, 301-redirect the short URL, and update internal links. Illustrative result for the client: one stronger page, one fewer competing URL, and the checklist content preserved.
Finding gaps the library does not cover
A gap is a topic the client's buyers care about that the library does not answer. AI is useful here only if you give it something real to compare against. Three inputs work well:
- The client's sales or support questions. Ask their team for the 20 questions prospects ask most, or export the subject lines from the enquiry inbox with names stripped.
- Search console queries with impressions but no matching article. Filter for queries with 50 or more impressions in the year where the best-ranking page sits on page two or below.
- The product or service list. Every service line should have at least one educational article and one comparison article.
Here is the cluster list for a client's article library, with the main page of each cluster. Here are 20 questions their prospects ask, and 30 search queries with impressions but poor rankings.
For each question or query, tell me whether an existing cluster already answers it (name the URL) or whether it is a gap.
For every gap, suggest a working title, the reader intent, and which cluster it would belong to.
Mark any gap where you are guessing because the cluster list does not show enough.
Ask for the gap list as a table with a priority column, and fill the priority yourself from the client's commercial goals. An assistant can see that "event catering costs" is a gap. It cannot know that the client's profit comes from private dining, not conferences.
A filled-in gap list for a catering company
| Gap | Source | Cluster | Working title | Priority (strategist) |
|---|---|---|---|---|
| Cost per head for a buffet | Sales questions | Pricing | What a buffet costs per guest at a 60-person event | High |
| Allergen handling at events | Support questions | Dietary needs | How we handle allergens on the day | High |
| Staffing ratios for waiting staff | Search queries | Event planning | How many serving staff a seated dinner needs | Medium |
| Outdoor event contingency | Search queries | Event planning | Wet-weather plans for outdoor catering | Low |
Notice what the table shows: every row has a source. If the assistant cannot name where a gap came from, treat the row as speculation and drop it.
Stage five: the verdict column
Four verdicts cover nearly every URL. Define them in the prompt so the assistant does not blur them.
- Keep: useful, current, performing or strategically needed. No work.
- Refresh: right topic, outdated or thin. Update facts, add examples, expand to the length the topic deserves.
- Merge: overlaps another page. Combine the best of both into the stronger URL and redirect the other.
- Prune: no search value, no links, no strategic use. Remove, or redirect to the closest cluster page.
For each row in this cluster, return a verdict (Keep, Refresh, Merge or Prune) and a one-sentence reason. Use only the data in the row.
Rules:
- Never recommend Prune for a URL with 5 or more internal links in or any clicks in the last 12 months. Recommend Refresh or Merge instead.
- If the article date is more than 24 months old and it names prices, tools or laws, recommend Refresh and say what would need checking.
- Show which row each Merge target is paired with.
The rules inside the prompt matter. They encode the data checks, so the assistant cannot propose pruning a page that quietly earns clicks. You still check the output, but you will find fewer mistakes.
Where the verdicts go wrong
Three recurring errors turn up in practice. First, the assistant treats age as decay. An evergreen explainer from 2021 may be perfectly fine, while a 2025 tool roundup is already wrong. Judge by whether the facts inside have changed, not the date. Second, the assistant recommends merging pages that serve different intents, for example a "how it works" explainer and a "pricing" page, because they share vocabulary. Check intent before merging. Third, the assistant ignores the page's role in the sales process. A short article that exists only to be linked from a proposal template may look prunable and still matter.
A data check before anything is deleted
Before applying any Merge or Prune verdict, run each URL through this checklist. It takes about two minutes per URL and protects the client from the one mistake that cannot be undone easily.
- Clicks and impressions in the last 12 months. Any meaningful figure means the page is working for someone.
- Backlinks. Use whichever backlink tool the agency already has. Pages with external links get a redirect, never a plain removal.
- Conversions. Check whether the client's analytics shows enquiries that started on this page.
- Internal links in. Pages linked from main navigation or service pages need replacement links before they go.
- Legal or compliance purpose. A dated terms or policy article may need to stay for the record.
If a URL fails any of these, it moves to Refresh. Record the reason in the sheet so the client sees why a page the AI said to delete is still there.
Turning verdicts into a client deliverable
Clients do not want a 356-row spreadsheet. They want to see what you propose and what it costs. Summarise per cluster, then provide the sheet as an appendix.
A one-page summary can look like this, with illustrative figures for a library of 356 articles: 214 keep, 71 refresh, 38 merge into 16 targets, 33 prune. Under it, three bullet points on the biggest cluster issue, the top five gaps to write first, and the order of work for the first 60 days.
When a client questions a verdict, the sheet should answer for itself. Each row carries the data (clicks, links, intent), the AI's reason and the strategist's final ruling in separate columns. That separation matters: it shows the client that a person made the call, and it gives you an audit trail if a traffic drop follows a prune.
Wording to put in the proposal
Be upfront about the AI step. A short paragraph works: "We use an AI assistant to summarise and group your articles, then a strategist reviews every grouping and every merge or removal against your search and conversion data. Nothing is removed without your approval." It is honest, it is short, and it answers the question most clients are thinking.
Handling client data in the tools
An article library is public, so the text itself is low risk. The analytics and enquiry data are not. Keep the following rules in your agency's audit process:
- Use a business plan of your chosen assistant: OpenAI and Anthropic both state on their pricing pages that ChatGPT Business and Claude Team do not train on your content by default. Both plans need at least two seats, so a one-person agency may use an individual plan and should switch off use of chats for model training in its privacy settings.
- Send URLs, titles and counts. Do not send customer names, email addresses or order values.
- Strip enquiry subject lines of names before you use them as gap inputs.
- Tell the client in the proposal which tools are used.
If the client has stricter rules, such as a regulated sector, ask for their policy before you upload anything. Our tutorial on auditing a website for content that needs fixing goes deeper on what to do once you have a refresh list.
Checking the audit worked
An audit is only proven by what happens afterwards. Set three measures before you touch the site:
- Total clicks for the cluster pages, measured over the 8 weeks before and the 8 weeks after changes settle.
- The number of queries where two of the client's URLs appear. This should fall after merges.
- Enquiries or sign-ups attributed to article pages.
Search results take weeks to settle after redirects, so resist reporting a verdict after seven days. Book a review at 8 and 12 weeks, and keep the before figures in the same sheet so the comparison is one filter away.
A short mistake story, as an illustration of why: an agency pruned 20 articles marked "thin" by an assistant and skipped the backlink check. Four of those pages carried links from industry directories. The links were lost, a small group of queries dropped, and the fix was to restore the four pages and redirect them properly. The two-minute checklist would have caught it.
Prompt hygiene that saves rework
Three habits make the audit repeatable across clients. Save the prompts in a shared document with a version date, so a colleague can run the same audit and get comparable output. Keep a column for "AI confidence" and sort low-confidence rows to the top of the human review. And store the cluster list as its own tab, because it becomes the client's content map and the basis for the next editorial calendar.
When you move from audit to producing new pieces from the gap list, the next stage is research and briefs. Our tutorial on briefs and source checks for content agencies covers that handover, and best AI tools for advertising agencies compares the wider tool set.
What to do when the library is large
A library of 1,500 or more URLs changes the economics. Spreadsheet-based chat audits get slow, and the risk of dropped rows rises. Two approaches help. First, triage by data: remove from the AI step anything with zero impressions and zero links over 24 months, and handle it as a bulk prune review done by a person. Second, run clusters independently: ask the assistant to cluster by URL path or category first, then audit each category as its own mini library.
For libraries above this size, agencies sometimes script the batches through an API or a workflow tool. That is a reasonable step once the manual process works, because you will know exactly what each prompt should return. Mapping that automation is the kind of job my AI implementation consultation covers; see the contact page if you want help deciding where to start.
Questions agencies ask before running the audit
How many articles can an AI chat tool audit at once?
Do not paste a whole library into one chat. Work in batches of 40 to 60 rows of title, URL, word count and a one-line summary. Batches keep the model accurate and let you re-run one cluster without redoing everything. Join the batches in a spreadsheet afterwards.
Should AI decide which articles to delete?
No. It proposes a verdict per URL and gives a reason, but a person decides, using the client's traffic, backlink and conversion data. Anything with inbound links or steady leads gets a human look before it is merged or removed.
Which AI tool is best for the job?
A chat assistant with file upload, such as ChatGPT or Claude, handles clustering and verdicts from a spreadsheet. A crawler such as Screaming Frog supplies the clean export. Pick the assistant your agency already has on a business plan so client material is not used for training.
Can I share the client's analytics with an AI tool?
Share only what the audit needs: URLs, page titles, clicks and impressions. Leave out personal data, customer names and revenue. Check the client's contract and the assistant's business-plan data terms first, and tell the client which tool touched their data.
Further reads
- Best AI for SEO Content: A Refresh Workflow for Client Articles — Work through the URLs your audit marked Refresh.
- Content Refresh With AI: Update Old Articles and Track Rankings — Update old articles and track what happens to rankings.
- AI Keyword Clustering for SEO Agencies: Validate Clusters Before Sign-Off — Validate AI keyword clusters before the client signs off.
- Search Console and AI Overviews: What Agencies Can Report to Clients — What search console data you can report to clients.
- Best AI for Copywriting Ads: Variants, Testing and Client Sign-Off — Ad copy variants and sign-off for the same client.
- AI Ad Copy Generator for PPC Agencies: Responsive Search Ads at Scale — Turn winning article angles into search ad copy.
- AI Agents for Content Creation and Publishing: A Client Approval Flow — How a content agency can let AI agents draft and schedule client content while a person approves every stage, with the exact approved version published.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Screaming Frog SEO Spider pricing page (free version limit), vendor pricing pages for ChatGPT and Claude business plans.