Skip to content

Add robots.txt, llms.txt and full sitemap for AI/search discoverability - #15

Merged
embarquech merged 1 commit into
mainfrom
feature/seo-ai-discoverability
Aug 11, 2026
Merged

Add robots.txt, llms.txt and full sitemap for AI/search discoverability#15
embarquech merged 1 commit into
mainfrom
feature/seo-ai-discoverability

Conversation

@embarquech

Copy link
Copy Markdown
Contributor

The published site had no robots.txt (404), no llms.txt (404), and the
sphinx-sitemap output covers only the root project's 3 pages out of 16 URLs.

This adds three files to the published site root via html_extra_path:

  • robots.txt — explicit allow-all + pointers to both sitemaps
  • llms.txt — curated index of every doc section and PDF for LLM crawlers
  • sitemap-docs.xml — static full sitemap (16 URLs incl. SDK subsites and PDFs), complementing the generated /sitemap.xml

Plus one line in docs/source/conf.py:

html_extra_path = ['_extra']  # robots.txt, llms.txt, sitemap-docs.xml copied to site root

Without that line Sphinx never copies the files and nothing publishes. The Deploy Sphinx to GitHub Pages workflow runs a plain sphinx-build docs/source _site, so the three files land at the site root on merge.

Verify after the Pages deploy finishes (~2 min after merge)

curl -s https://docs.cryptnox.com/robots.txt          # → 5 lines, 2 Sitemap: entries
curl -s https://docs.cryptnox.com/llms.txt | head     # → "# Cryptnox Product Documentation"
curl -s https://docs.cryptnox.com/sitemap-docs.xml | grep -c "<loc>"   # → 16

Follow-ups (separate PRs)

  • html_last_updated_fmt = '%Y-%m-%d' in conf.py — visible "last updated" dates
  • sphinx-sitemap config per SDK sub-project so the full sitemap maintains itself (sitemap-docs.xml is hand-written)
  • Register docs.cryptnox.com in Google Search Console + submit both sitemaps

🤖 Generated with Claude Code

@embarquech
embarquech force-pushed the feature/seo-ai-discoverability branch 2 times, most recently from 8c3f7fe to 98d9bda Compare August 11, 2026 09:25
The published site had no robots.txt (404), no llms.txt (404), and the
sphinx-sitemap output covers only the root project's 3 pages of 16. Adds,
via html_extra_path:

- robots.txt: explicit allow-all + pointers to both sitemaps
- llms.txt: curated index of every doc section and PDF for LLM crawlers
- sitemap-docs.xml: static full sitemap (16 URLs incl. SDK subsites and
  PDFs) complementing the generated /sitemap.xml

Plus a content and metadata pass:

- index.rst: the wallet card also carries the FIDO Alliance certified
  FIDO2/U2F applets (CTAP2.1, Level 1) and doubles as a FIDO2 security
  key; explicit coverage entities (BIP32, secp256k1/NIST P-256, MuSig2
  BIP-327); product-page and tech-spec links under Other resources
- layout.html: unify the JSON-LD publisher with the brand entity
  https://cryptnox.com/#organization (was a detached 'Cryptnox Docs'
  org); repoint og:image, twitter:image and the logo away from
  wp-content paths that 404 on GitHub Pages; og:image dimensions
  corrected to the replacement image's actual 512x512
- conf.py: add FIDO2, MuSig2, BIP-327 and secp256k1 to the keywords

The llms.txt product note states both card interfaces (ISO/IEC 7816
contact and ISO/IEC 14443 contactless) and the USB smart card readers
sold alongside the cards.

No html_last_updated_fmt: Sphinx computes that value once per build from
the current time, not per source file, so on a CI-deployed site every
page would advertise the last deploy date as its content date.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@embarquech
embarquech force-pushed the feature/seo-ai-discoverability branch from 98d9bda to caee8ef Compare August 11, 2026 10:32
@embarquech
embarquech merged commit 59558ae into main Aug 11, 2026
2 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