Skip to content

Add JSON-LD and llms.txt for AI search - #73

Open
halskiszymon wants to merge 4 commits into
software-mansion-labs:mainfrom
halskiszymon:geo-structured-data
Open

Add JSON-LD and llms.txt for AI search#73
halskiszymon wants to merge 4 commits into
software-mansion-labs:mainfrom
halskiszymon:geo-structured-data

Conversation

@halskiszymon

Copy link
Copy Markdown

Two SEO changes for the docs site. Nothing changes the rendered page.

  • JSON-LD: Organization with the same @id as swmansion.com, plus SoftwareSourceCode, derived from siteConfig. The identical @id is what makes engines read these docs and swmansion.com as one company instead of two unrelated sites.
  • llms.txt, generated on postBuild — no new dependency. The publish workflow fails if the file is missing or lists nothing.

Both come from docs/plugins/swm-geo.mjs, registered with one line. The same change is going out across the docs repos; reference: software-mansion/react-native-reanimated#10332.

Worth knowing: this site is served from software-mansion-labs.github.io, which has no robots.txt at all — the origin returns 404 for it, so there is no Content-Signal and no crawl policy for any of the 14 docs sites on it. Fixing that needs an org-level Pages repo (software-mansion-labs/software-mansion-labs.github.io), which does not exist. This PR is worth doing regardless, but it does not close that gap.

One local plugin injects Organization and SoftwareSourceCode structured data
using the same @id as swmansion.com, and writes llms.txt from the pages
Docusaurus just built. The publish workflow fails if the file is missing.
@halskiszymon
halskiszymon marked this pull request as ready for review August 20, 2026 12:13
This site sets routeBasePath: '/', so route segments never start with
`docs` and the SECTIONS map never matched — every page fell into the
generic `Pages` group. Sections are now derived from the page's folder
when no explicit key matches.

JSON.stringify leaves `<` unescaped, so a `</script>` inside any config
value would close the tag early. Escaped to <.
`blog` and `examples` title-case to exactly the strings the map returned,
so only `docs` -> `Documentation` was ever a real rename. Section names
now come from the folder a page lives in, with that one exception.
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