Skip to content

fix(seo): stop Googlebot spending crawl budget on noindex query URLs - #28

Draft
stvlynn wants to merge 1 commit into
mainfrom
cursor/gsc-coverage-fix-8860
Draft

fix(seo): stop Googlebot spending crawl budget on noindex query URLs#28
stvlynn wants to merge 1 commit into
mainfrom
cursor/gsc-coverage-fix-8860

Conversation

@stvlynn

@stvlynn stvlynn commented Aug 27, 2026

Copy link
Copy Markdown
Owner

What the coverage export showed

The 27 August Search Console Pages export is not code coverage. It is the index inventory for dsh.fish.

Slice Pages
Indexed 2,445
Not indexed 118,540
Excluded by noindex 103,428
Discovered, not indexed 12,919
Server error (5xx) 1,306
Crawled, not indexed 853

The sitemap offers ~36k URLs (5,985 artifacts × 6 locales + pages.xml). GSC knew ~121k. Production /ja/a/… is still index, follow (SEO_LOCALE_GATING=false), so the 103k noindex rows are the query-string views (/browse?q=, ?offset=, ?profile=) that already emit noindex, follow in HTML. rel="nofollow" on keyword chips was not enough — Google still fetched them, confirmed noindex, and saturated D1/Worker (the 1,306 5xx). The leftover sitemap URLs sat in “discovered / crawled, not indexed”.

Fix

Generic crawler (User-agent: *, Googlebot):

  • Disallow: /*? — query-string views. Plugin rows past listing page one stay in the artifact sitemap.
  • Disallow: /*.md$ — agent markdown aliases. Retrieval bots keep Allow: / in their own group.

Also:

  • X-Robots-Tag: noindex, follow on markdown responses
  • Social cards cached 24h and stored in the Worker Cache API
  • Uncaught origin failures → 503 + Retry-After

Docs: docs/seo/search-console.md records this export; crawling.md / indexation.md describe the new robots rules.

Operator follow-up (after deploy)

  1. Search Console → Pages → validate the noindex set (should move toward “Blocked by robots.txt”).
  2. URL Inspection on /, /browse, /docs, and /ko/a/dsh-better-edit.
  3. Leave SEO_LOCALE_GATING off until the Korean CTR test from the first export has another crawl.
Open in Web Open in Cursor 

The Pages coverage export showed Google fetching ~100k noindex query-string
URLs and saturating the origin. Disallow those views and .md aliases for the
generic crawler, tag markdown as noindex, cache social cards for a day, and
return 503 on uncaught origin failures.

Co-authored-by: Steven Lynn <stvlynn@users.noreply.github.com>
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
dsh-fish 84f38be Aug 27 2026, 07:33 AM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants