Skip to content

Keep the static mirror out of search results - #123

Merged
ledwards merged 1 commit into
mainfrom
claude/noindex-static-mirror
Aug 12, 2026
Merged

Keep the static mirror out of search results#123
ledwards merged 1 commit into
mainfrom
claude/noindex-static-mirror

Conversation

@kanetronv2

Copy link
Copy Markdown
Contributor

Problem

Google is showing sitelinks to /about/, /team/, /jobs/, and individual portfolio pages underneath the root.vc result. That undercuts the point of the terminal being the front door — part of the site's appeal is that you have to explore it.

Approach

Uses noindex, not a robots.txt Disallow. The distinction matters:

  • Disallow says don't fetch this — it would hide the mirror from the AI crawlers it exists to serve.
  • noindex says you may read this, just don't list it in search results — Google and Bing honor it for indexing, while GPTBot, ClaudeBot, PerplexityBot and llms.txt consumers keep getting the full content.

Changes:

  • noindex, follow on every generated mirror page and on welcome.htm. follow keeps link equity flowing back to the homepage.
  • sitemap.xml trimmed to https://root.vc/ alone. Listing a noindex URL in a sitemap asks Google to index something the page itself forbids — that contradiction is what generated the sitelinks in the first place.
  • robots.txt unchanged: still explicitly allows all AI crawlers, still no Disallow on the mirror.

Net effect: root.vc is the only result Google shows, and LLM discovery is unaffected.

Test plan

  • npm test — 312/312 passing, including a new search invisibility block that asserts every mirror page is noindex, the homepage is not, welcome.htm is, robots.txt has no Disallow on the mirror, and llms.txt still carries every portfolio company
  • npm run build → verified dist/sitemap.xml contains only https://root.vc/, and 76 files in dist/ carry the noindex tag
  • After deploy, request re-indexing in Search Console — see note below

Note on timing

The existing sitelinks won't vanish the moment this deploys. Google has to recrawl each page and see the new tag, which typically takes days to a couple of weeks. To speed it up, use Search Console's Removals tool for a temporary block on the /about/, /team/, /portfolio/, /jobs/ prefixes while the recrawl happens.

Worth knowing: keeping the pages crawlable is what lets Google see the noindex tag. Blocking them in robots.txt instead would leave the already-indexed URLs stuck in the index, since Google could no longer fetch them to discover they should be dropped.

🤖 Generated with Claude Code

Google was generating sitelinks to /about/, /team/, and portfolio pages under
the root.vc result, which undercuts the terminal being the front door.

Emits `noindex, follow` on every mirror page and on welcome.htm, and trims
sitemap.xml to the homepage alone — listing a noindex URL in a sitemap asks
Google to index something the page itself forbids, and that contradiction is
what surfaced the sitelinks.

Deliberately not a robots.txt Disallow: noindex is a search-indexing
directive, so crawlers may still fetch and read these pages. GPTBot,
ClaudeBot, PerplexityBot and llms.txt consumers keep getting the full
content, while root.vc stays the only result Google shows.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@ledwards
ledwards merged commit 0b762ef into main Aug 12, 2026
6 checks passed
@ledwards
ledwards deleted the claude/noindex-static-mirror branch August 12, 2026 18:24
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