AI crawlers allowed in robots.txt
Put robots.txt in your static/ directory — everything in there is copied to the site root at build time.
Site platforms
Docusaurus pre-renders every page at build time, which settles the check that catches most React sites: the prose is in the HTML before any JavaScript runs. Everything else here is a file in the right directory or a few lines in the config, and none of it needs a plugin.
The one that is genuinely worth doing is Organization schema. Docs sites almost never have it — the site is about the product and says nothing about the company — and the engines end up with no way to connect your documentation to whatever else they know about you.
How we recognise it: a Docusaurus generator tag, or Docusaurus build output in the page. Run the free readiness check and the fixes it gives you are the Docusaurus ones below.
Everything in static/ is copied to the build root verbatim. Both files then live in the repo, which means they are reviewed, versioned, and cannot be lost to a redesign the way theme-held files can.
Repo layout
static/
robots.txt
llms.txtIt renders into every page's head at build time. Docs sites are the biggest population of pages on the web with no Organization statement anywhere on them, which is a cheap gap to close.
docusaurus.config.js
headTags: [
{
tagName: 'script',
attributes: { type: 'application/ld+json' },
innerHTML: JSON.stringify({
'@context': 'https://schema.org',
'@type': 'Organization',
name: 'Your company',
url: 'https://yourdomain.com',
sameAs: ['https://www.linkedin.com/company/yourcompany'],
}),
},
],@docusaurus/plugin-sitemap ships in the classic preset and generates sitemap.xml at build. It is on by default, which means the way it usually breaks is somebody trimming the preset config.
CueScout runs eight checks on whether an answer engine can read a site at all. These are the ones whose answer is different on Docusaurus — the rest are the same everywhere.
Put robots.txt in your static/ directory — everything in there is copied to the site root at build time.
static/llms.txt, same as robots.txt. It ships to the root on the next build.
docusaurus.config.js → headTags, with tagName: 'script', attributes type 'application/ld+json', and the block as innerHTML.
Docusaurus pre-renders every page at build time, so a fail here means the content is being fetched at runtime by a component rather than written in MDX.
These describe Docusaurus’s own settings, which move without warning us. Last checked against the product on 2026-08-14.
Not in core. There are community plugins that build one from your docs; a hand-written static/llms.txt pointing at your main sections is usually enough and does not add a dependency.
Because something on the page is fetching its content at runtime — an embedded API reference, a component pulling from a CMS. Pre-rendering captures the component, not what it will later fetch.
Either works for these checks; they are run per host, so a docs subdomain is graded as its own site with its own robots.txt and schema.
Mintlify
llms.txt and robots.txt are already handled. What is left is schema, and the link to your pricing.
Site platformsNext.js
app/robots.ts, a route handler for llms.txt, JSON-LD in the layout, and the client-component trap.
Site platformsGhost
robots.txt lives in the theme, llms.txt goes in /public, and Ghost already writes half the schema.
The readiness check is free, needs no signup, and takes about half a minute. It works out what your site is built on and gives you the fixes written for it.