Skip to content

docs: migrate from Docsify to MkDocs Material for SEO/AEO#181

Merged
prmoore77 merged 1 commit into
mainfrom
docs/mkdocs-material
Jun 13, 2026
Merged

docs: migrate from Docsify to MkDocs Material for SEO/AEO#181
prmoore77 merged 1 commit into
mainfrom
docs/mkdocs-material

Conversation

@prmoore77

Copy link
Copy Markdown
Member

Summary

Migrates docs.gizmosql.com from client-side-rendered Docsify to pre-rendered MkDocs Material, fixing SEO and AEO:

  • Before: crawlers received <div id="app">Loading...</div>; AI crawlers (no JS execution) saw nothing, and Docsify's hash routing (/#/page) made the whole site one indexable URL even for Google.
  • After: full static HTML per page at real URLs (/quickstart/), per-page <title>, generated sitemap.xml, and robots.txt.

Changes

  • mkdocs.yml — Material theme config; nav translated 1:1 from _sidebar.md (light/dark toggle, search, code copy, edit-on-GitHub)
  • deploy-docs.yml — builds with mkdocs build --strict (fails on broken internal links/anchors) and deploys site/; the publish-time update_docs_version.sh Quick Start version sync is unchanged
  • AEO layer: raw Markdown sources published alongside the HTML (e.g. /quickstart.md) and indexed in a new llms.txt for answer engines
  • Back-compat: docs/js/hash-redirect.js redirects legacy /#/page and /#/page?id=anchor links to the new URLs (mapping logic unit-tested)
  • documentation.mdindex.md (homepage); removed index.html, _sidebar.md, _navbar.md
  • Fixed 4 stale/broken links — including one in integrations.md that was already broken under Docsify and caught by strict validation
  • mkdocs-material pinned >=9,<10 (Material team has flagged MkDocs 2.0 as backward-incompatible — revisit on Material 10)

Test plan

  • mkdocs build --strict passes locally (no warnings)
  • CNAME, llms.txt, robots.txt, sitemap.xml present in built site
  • Emoji-heading anchor (#configuration-environment-variables) verified in built HTML
  • Hash-redirect mapping logic tested (5 cases incl. ?id= anchors and documentation → home)
  • Excluded internal docs (VIEW_DOCS_LOCALLY.md, websocket-migration-plan.md) absent from output
  • Reviewed visually via mkdocs serve
  • After merge: confirm Pages deploy succeeds and spot-check docs.gizmosql.com URLs + a legacy /#/ link

🤖 Generated with Claude Code

The docs site was 100% client-side rendered (Docsify): crawlers received
an empty "Loading..." shell, and hash routing (/#/page) meant the entire
site was a single indexable URL even for JS-executing crawlers. AI
crawlers (which don't execute JS) saw nothing at all.

Now docs.gizmosql.com is pre-rendered static HTML built with MkDocs
Material:

- Real per-page URLs (/quickstart/ instead of /#/quickstart) with full
  HTML content, per-page <title>, and a generated sitemap.xml
- robots.txt pointing at the sitemap
- Raw Markdown sources published alongside the HTML (e.g.
  /quickstart.md) and indexed in a new llms.txt for answer engines
- Legacy /#/page and /#/page?id=anchor links redirected client-side to
  the new URLs (docs/js/hash-redirect.js)
- documentation.md renamed to index.md (the homepage)
- CI builds with "mkdocs build --strict", which fails on broken
  internal links/anchors - it already caught one genuinely broken link
  in integrations.md that Docsify served silently
- update_docs_version.sh publish-time version sync works unchanged
- mkdocs-material pinned <10 (Material team has flagged MkDocs 2.0 as
  backward-incompatible)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@prmoore77 prmoore77 merged commit e729718 into main Jun 13, 2026
11 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