TL;DR
Export a page inventory from Google Search Console plus a crawler, feed it to a long-context model in batches, and run three passes: a numeric thin-content score, an intent check on flagged pages, and a single action per page (expand / merge / noindex / delete). Apply in priority order, log every change, and re-check Search Console after 30 days. A 500-page site is a half-day project. Claude Sonnet 4.6 or Gemini 3.1 Pro (both 1M-token context as of June 2026) handle the batching cheaply; the Anthropic Message Batches API runs the whole job at roughly 50% off if you can wait up to 24 hours.
What “thin content” actually means in 2026
Google retired the standalone Helpful Content system and folded those signals into the core ranking algorithm, so there is no longer a single “thin content” penalty to recover from. Instead, three named spam policies do the damage, and your audit should map to them directly (Google Search spam policies):
- Scaled content abuse — “many pages generated for the primary purpose of manipulating search rankings and not helping users,” explicitly including AI-generated pages added without value. This is Google’s stated top enforcement priority for 2026, and affected sites have reported 50 to 80% traffic drops.
- Thin affiliation — affiliate pages where descriptions and reviews are copied from the merchant with no original content or first-hand experience. Google flags these as “cookie-cutter sites or templates.”
- Doorway abuse — near-duplicate pages built to catch query variants that funnel users somewhere else.
The practical upshot: word count is not the trigger. A 250-word page that answers one sharp question well is fine. A 1,500-word page that paraphrases a manufacturer spec sheet is not. Your workflow has to judge intent fit and originality, not length — which is exactly where a model with a long context window earns its keep.
Who this is for
Content site owners with roughly 100 to 2,000 pages who suspect a chunk of the catalog is thin enough to drag site-wide rankings. Affiliate sites, recipe sites, documentation sites, and any catalog of templated or generated pages benefit most. Under 50 pages, skip the workflow — manual review is faster than building it.
When to run it
- Before an AdSense or affiliate application. Both reject sites with too many low-value pages; AdSense’s “minimum content requirements” rejection is one of the most common first-application failures.
- After a content migration that may have imported short stub pages.
- After a Google core update when you see site-wide ranking drops not tied to specific keywords.
- Quarterly, as hygiene. Thin pages reappear as templates clone and topics drift.
Pick your model
Any frontier model works, but two things matter: a large context window (so you can paste real HTML, not just titles) and low batch cost (so scoring hundreds of pages is cheap). Figures below are as of June 2026.
| Model | Context | API price (in / out per 1M tokens) | Best for this job |
|---|---|---|---|
| Claude Sonnet 4.6 | 1M tokens | $3 / $15 | Default workhorse; cheap, strong at structured JSON output |
| Gemini 3.1 Pro | 1M tokens | $2 / $12 | Cheapest input; good for large HTML pastes |
| Claude Opus 4.7 | 1M tokens | $5 / $25 | Pass-2 intent judgment on borderline pages |
| GPT-5.5 | ~320 pages in ChatGPT Plus | $5 / $30 (API) | Fine if you already pay for it |
If you have API access, run pass 1 (pure scoring) through the Anthropic Message Batches API: asynchronous, up to a 24-hour turnaround, at roughly 50% of standard rates. Sonnet 4.6 at batch rates makes a 500-page scoring pass cost cents, not dollars. In the chat UI, Sonnet 4.6’s 1M-token window comfortably holds a 50-row batch of full HTML.
Before you start
Build a page inventory CSV before opening any AI tool. You need these columns:
| Column | Source |
|---|---|
| URL | Crawler or sitemap |
| Word count | Crawler (Screaming Frog, custom script, or CMS) |
| Last-modified date | CMS or crawler |
| Internal links in | Crawler |
| Organic clicks, last 90 days | Search Console Performance report |
| Organic impressions, last 90 days | Search Console |
| Top query | Search Console |
Decide your “candidate for review” threshold up front. A reasonable default: fewer than 50 clicks and more than 200 impressions over 90 days — those pages rank enough to be seen but convert nothing, the classic thin-content signature. Have a redirect map ready (where deletes 301 to, which pages are merge targets), and take a Search Console Performance screenshot today to compare against in 30 days.
The three passes
Pass 1 — Numeric score
Sort the inventory by clicks ascending; the bottom 30% is your starting pool. Feed batches of 50 rows with this prompt:
You are auditing pages for thin-content risk. For each row, score 1-5
(5 = almost certainly thin). Flag the page if ANY of these is true:
- fewer than 300 words
- fewer than 2 substantive paragraphs
- over 200 impressions but 0 clicks in 90 days
Return JSON only: [{ "url": ..., "score": ..., "reason": ... }]
The reason must be specific, e.g. "210 words, no headers, 0 clicks
on 340 impressions" — never "looks thin".
Pass 2 — Intent check
For every flagged page, paste the actual rendered HTML (this is where the 1M-token window matters) and ask:
Does this page answer one specific search intent well, or does it
circle the topic without resolving it? Label each page either
INTENT-MISMATCH or DEPTH-ONLY. A short page that fully answers one
question is DEPTH-ONLY, not thin. Quote the one sentence that does
(or fails to) answer the implied query.
Keep these labels separate. A 500-word page that never answers its query is thinner than a 250-word page that nails one intent — and the fix differs (rewrite vs. expand).
Pass 3 — Single action per page
For each flagged page, assign EXACTLY ONE action and justify it:
- expand : clear intent, just short. Worth 60-90 min to deepen.
- merge : overlaps a sibling URL. Merge to the higher-traffic URL,
301 the loser.
- noindex: utility page (tag listing, author, thank-you) with no
search value. Add robots noindex, drop from sitemap.
- delete : no traffic, no merge target, no expansion potential.
410, or 301 to the closest topical hub.
Never return "expand or delete". One action only.
Apply in priority order
- Delete first — easiest wins. Return
410 Gone(tells Google “gone forever, stop crawling,” unlike a soft 404), or 301 to the nearest hub when users still need to land somewhere. - Noindex — free and low-risk. Add the
robotsnoindex meta tag and remove the URL from your sitemap; leaving it in the sitemap wastes crawl budget on a page Google will keep crawling and ignoring. - Merge — rewrite the canonical version. Google treats half-merged content as duplicate, so do not just paste two pages together.
- Expand — most labor, do last.
For urgent removals, pair the technical signal with a Search Console removal request: the request hides the URL within about 24 hours, while the 410 or noindex makes it permanent after the temporary removal expires (~6 months). Never block a noindexed URL in robots.txt — Google then cannot see the noindex directive.
Log every change in an action CSV: old URL, new URL or status code, date applied. Take a fresh Search Console screenshot 30 days later. Without the log you cannot attribute any recovery to a specific change.
Quality gates before you ship the changes
- Every flagged page has a specific reason, not “looks thin.”
- Each page has exactly one action — reject any “expand or delete.”
- No page with rising impressions in the last 30 days is in the delete bucket. Rising impressions mean Google is starting to rank it; let it cook.
- Redirects are mapped before any delete runs. A
410is fine; a bare404is not. - The action CSV is committed or saved.
Common mistakes
- Deleting without redirects — internal links die silently and you lose link equity.
- Trusting the pass-1 score alone — always run the intent check. Length is the weakest signal Google uses.
- Treating “short” as “thin” — a 250-word page that answers a sharp question can rank fine.
- Bulk-noindexing but leaving URLs in the sitemap — wasted crawl budget.
- Skipping the 30-day re-check — without measurement you cannot tell help from harm from noise.
- Letting AI “improve” thin pages by padding them — Google’s scaled-content-abuse policy targets exactly this. Add first-hand experience and specifics, or remove the page; do not inflate word count.
FAQ
- Is there a word count threshold?: No. Intent fit and originality matter far more than length. A 250-word answer page can outrank a 1,500-word listicle on the same query. Google’s policies name “scaled content abuse” and “thin affiliation,” not a word count.
- Will padding thin pages with AI fix them?: No — it can make things worse. Google’s scaled content abuse policy explicitly targets AI-generated pages “added without value.” Expand only pages with clear intent, and add real specifics or first-hand experience, not filler.
- Should I use noindex or 410?: Noindex for pages with internal utility (tag pages users browse). 410 for pages that should not exist anymore. 301 for pages whose users still need to land somewhere.
- What if AI flags a page I know is high quality?: Override it. The workflow proposes; you decide. Log false positives in the action CSV and tighten the prompt.
- How long does the whole audit take?: Roughly 30 minutes setup, then about 10 minutes per 50-row batch, plus the time to apply changes. A 500-page site is a half-day project; the scoring itself costs cents on Sonnet 4.6 batch rates.
- Does this work for non-English sites?: Yes. State the language in the prompt and adjust word-count expectations — Chinese pages routinely convey more in fewer characters, so a 200-character page may be perfectly complete.
Related
- AI AdSense readiness review tutorial
- AI content cluster planning tutorial
- AI content update and refresh tutorial
- Content volume vs. quality
- Crawled, currently not indexed: how to fix it
- What to prepare before you click ‘Apply’ on AdSense
- What is Google AdSense (and is it still worth applying in 2026)