Skip to content

Pool robots.txt opens /api/*; hub sitemap moves to /sitemap-en.xml - #81

Merged
brettridenour merged 1 commit into
mainfrom
site/robots-api-hub-sitemap-en
Oct 19, 2026
Merged

brettridenour merged 1 commit into
mainfrom
site/robots-api-hub-sitemap-en

Conversation

@brettridenour

Copy link
Copy Markdown
Collaborator

Pool site: robots.txt

Disallow: /api/ blocked the JSON the pages are built from. Google does not render a fetch to a blocked URL, and the first fetch in pool.js (/api/pool?h=0) has no fallback, so for Googlebot the whole refresh stopped: /hardware showed no machines, /blocks had an empty table, and every stat read "—". /hardware is "Crawled – currently not indexed" in Search Console (crawled 28 Sep, under this rule).

New rules:

User-agent: *
Allow: /
Disallow: /api/miner/
Disallow: /api/solo/
Disallow: /api/found/

The three that stay closed are the per-address and per-block lookups: endless URLs, slow to build, and only fetched after a user looks something up. Nothing under /api/ is secret. The API needs no login, is open to any site (CORS *), and is documented on /api and in /api/openapi.json.

cloudflare/pool-site/tests/indexing.py now fails if robots.txt blocks any endpoint the pages render from.

Hub: sitemap at /sitemap-en.xml

Search Console has never downloaded https://lazarus-xbt.xyz/sitemap.xml ("Couldn't fetch", no download date), even though the file returns 200 application/xml, including when requested as Googlebot. The pool's new sitemap-en.xml / sitemap-zh.xml were read the moment they were submitted.

  • The URL list moves to public/sitemap-en.xml and robots.txt points at it.
  • /sitemap.xml becomes an index listing that one file, as on the pool site.
  • sitemap-lastmod.mjs, indexnow.mjs and test-indexing.mjs now read sitemap-en.xml, and the test also checks the index and the robots line.

Checks run locally

  • hub: test-indexing.mjs, sitemap-lastmod.mjs --check, test-naughtylist.mjs
  • pool site: build-from-tree, then indexing.py, lastmod.py, language.mjs
  • pool backend: all 9 pool/test_*.py files

All pass.

🤖 Generated with Claude Code

Pool: the pages fill their figures, the hardware catalog and the blocks
table from /api/*, and Google does not render a fetch to a blocked URL, so
Disallow: /api/ left /hardware and /blocks empty for Googlebot. Only the
per-address and per-block lookups (/api/miner/, /api/solo/, /api/found/)
stay closed. The indexing check now fails if robots.txt blocks an endpoint
the pages render from.

Hub: Search Console never fetched https://lazarus-xbt.xyz/sitemap.xml
("Couldn't fetch") while the pool's new sitemap-en.xml / sitemap-zh.xml
were read on submit. The URL list is now /sitemap-en.xml, robots.txt points
at it, and /sitemap.xml is an index of that one file, as on the pool site.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@brettridenour
brettridenour merged commit 0146b9a into main Oct 19, 2026
8 checks passed
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.

1 participant