Repository navigation
SEO + AI discoverability: real descriptions, trailing-slash canonicals, spec llms.txt, JSON-LD - #171
Merged
Merged
Conversation
… link label 60 pages had no frontmatter description, so Docusaurus used the first paragraph as meta description, which for most of them is a link row such as "[API Docs]" or " ". Each description is taken from the page's own intro. Generated reference pages (SDK clients, CLI commands, library typedoc) are left untouched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Et6RzideGVXaP9rWvwx1QZ
…real descriptions The SDK client and CLI command pages got "- Base URL://..." as their meta description. The update-sdk/update-cli scripts now write a description derived from the page title, and the committed pages carry the same line so the next regeneration is a no-op. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Et6RzideGVXaP9rWvwx1QZ
Amplify 301-redirects /docs/foo to /docs/foo/, so every canonical, og:url and sitemap <loc> pointed at a redirect. With trailingSlash: true the canonical, sitemap and internal links use the final URL. The SDK and CLI overview tables used route-relative links (clients/x), which only resolve correctly without the trailing slash. They are now file links (clients/x.md) that Docusaurus resolves to the page, and the update scripts generate them that way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Et6RzideGVXaP9rWvwx1QZ
- llms.txt: blockquote summary under the H1, one H2 section per sidebar
section with its sidebar label (instead of H3 path groups), descriptions
for pages without frontmatter description taken from the rendered meta
description, a "Documentation sets" section and an "Optional" section
with the API changelog and the apis.json discovery document.
- llms-full.txt: every page gets a canonical "Source:" URL; only pages
that were built are included. Each docs section also gets its own
docs/<section>/llms-full.txt, since the full file is several MB.
- Markdown cleanup now skips fenced code blocks and inline code. It used
to strip "import" lines and every {...} span, so TypeScript samples lost
their imports and JSON samples lost their objects in the .md pages and
llms-full.txt. Simple HTML (spacer paragraphs, headings, img) becomes
markdown.
- The frontmatter description now follows the page H1 instead of
preceding it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Et6RzideGVXaP9rWvwx1QZ
…alternates - Home: real title and meta description (it had none) plus WebSite and Organization JSON-LD. - Docs pages: <link rel="alternate" type="text/markdown"> to the .md version the llms-txt plugin publishes, and TechArticle JSON-LD built from the page title and description (DocItem wrapper). - API reference pages: per-API description instead of "Open API Reference Docs for the API", an alternate link to the OpenAPI spec, and the API name, description and spec link rendered server-side while the client-side reference loads (the static HTML had no content at all). - /api: "REST API Reference" title instead of "Getting Started". - Changelog entries: use the entry excerpt as description, not the title. - Default og:image/twitter:image (the square logo, with a summary card). - "energy XRM" casing in the tagline and copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Et6RzideGVXaP9rWvwx1QZ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR makes docs.epilot.io easier to find for search engines and AI agents, and fixes a live bug in the
.mdpages andllms-full.txt. Each change is its own commit.81036c3,e2591dd)[API Docs], or .36f6451)trailingSlash: truein the Docusaurus config./docs/xto/docs/x/with a 301, so the canonical URLs,og:urland all 877 sitemap URLs pointed at redirects. No public URL changes.f01dcdb).mdpages andllms-full.txthad every{…}andimportline removed, including inside code blocks. Live example:/docs/sdk/overview.mdis missingimport { epilot } from '@epilot/sdk'.llms.txtnow follows the llmstxt.org format:>summary line;llms-full.txtnow has aSource:URL for each page.docs/<section>/llms-full.txt.e8f233f)text/markdownalternate link to its Markdown version.rel=alternatelink;og:imageis the logo;/apiis titled "REST API Reference";Test plan
npm run buildpasses.tscreport the same problems asmain, none in changed files..mdalternate and TechArticle JSON-LD that parses./.llms.txtpoints to a file that exists in the build..mdfiles match the source.Follow-ups (not in this PR)
/. The rewrite should point at/404.html.og:imageshould be designed; the logo is a stopgap.showLastUpdateTimeand a full git clone in the Amplify build.llms-full.txtsize: it grows from 3.1 MB to 4.8 MB because code blocks are no longer stripped. The per-section files run from 5 KB to 914 KB./api/changelog/api/changelog/…). Left as is, because changing URLs is out of scope here.Generated by Claude Code