# llms.txt in Starlight, VitePress, Docusaurus, MkDocs, Nuxt

> How to enable llms.txt in Starlight, VitePress, Docusaurus, MkDocs and Nuxt - a working setup for each, which files the plugin creates and what to check after the build

Page: https://llms-full-txt.ru/en/reference/configuration/
Site index: https://llms-full-txt.ru/en/llms.txt

In documentation generators a plugin creates `llms.txt` during the site build. The setup takes a few lines, and the file is refreshed with every publication.

Below is one working setup for each of five generators. Package names and versions were checked on October 3, 2026.

On the [Mintlify](https://www.mintlify.com/docs/ai/llmstxt) and [GitBook](https://gitbook.com/docs/getting-started/llm-ready-docs) platforms there is nothing to set up: the files are created automatically.

## What each plugin creates

| Generator | Package | `llms.txt` | `llms-full.txt` | Markdown versions of pages |
|---|---|---|---|---|
| Starlight | `starlight-llms-txt` | yes | yes, plus `llms-small.txt` | not stated |
| VitePress | `vitepress-plugin-llms` | yes | yes | yes |
| Docusaurus | `docusaurus-plugin-llms` | yes | yes | by option |
| Docusaurus | `@signalwire/docusaurus-plugin-llms-txt` | yes | by option | yes |
| MkDocs | `mkdocs-llmstxt` | yes | by option | for listed files |
| Nuxt | `nuxt-llms` | yes | by option | no |

## Setup

**Starlight**

```bash
pnpm add starlight-llms-txt
```

```js
// astro.config.mjs
import starlight from '@astrojs/starlight'
import { defineConfig } from 'astro/config'
import starlightLlmsTxt from 'starlight-llms-txt'

export default defineConfig({
  site: 'https://example.com/',
  integrations: [
    starlight({
      title: 'My Docs',
      plugins: [starlightLlmsTxt()],
    }),
  ],
})
```

The `site` field is required: without it the plugin cannot build absolute addresses. The output is three files: `llms.txt`, `llms-full.txt` and a shortened `llms-small.txt`.

**VitePress**

```bash
npm install vitepress-plugin-llms --save-dev
```

```ts
// .vitepress/config.ts
import { defineConfig } from 'vitepress'
import llmstxt from 'vitepress-plugin-llms'

export default defineConfig({
  vite: {
    plugins: [llmstxt()],
  },
})
```

The plugin creates `llms.txt`, `llms-full.txt` and a Markdown version of every page.

The plugin's author advises using it for English documentation only. For a multilingual site, take that limit into account in advance.

**Docusaurus**

There are two live plugins. The first is simpler to set up:

```bash
npm install docusaurus-plugin-llms --save-dev
```

```js
// docusaurus.config.js
module.exports = {
  plugins: ['docusaurus-plugin-llms'],
}
```

The second can do more and creates Markdown versions of pages:

```bash
npm install @signalwire/docusaurus-plugin-llms-txt
```

```js
// docusaurus.config.js
module.exports = {
  plugins: [
    [
      '@signalwire/docusaurus-plugin-llms-txt',
      {
        outputDir: 'llms-txt',
        includePatterns: ['**/*.html'],
        excludePatterns: ['**/404.html'],
      },
    ],
  ],
}
```

The similarly named unscoped package `docusaurus-plugin-llms-txt` has not been updated since December 2024. It is not worth taking.

**MkDocs**

```bash
pip install mkdocs-llmstxt
```

```yaml
# mkdocs.yml
site_name: My project
site_description: Description of my project.
site_url: https://example.com/

plugins:
  - llmstxt:
      markdown_description: Long description of my project.
      full_output: llms-full.txt
      sections:
        Documentation:
          - index.md: Where to start
          - api.md: API reference
```

The `site_url` field is required. Sections and files are listed by hand: this is the only plugin of the five that forces a selection. The `full_output` line enables `llms-full.txt`.

The author has declared the project to be in maintenance mode.

**Nuxt**

```bash
npm i nuxt-llms
```

```ts
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['nuxt-llms'],
  llms: {
    domain: 'https://example.com',
    title: 'My Site',
    description: 'What the site is and who it is for.',
    full: {
      title: 'Full documentation',
      description: 'The whole documentation text in one file.',
    },
  },
})
```

Only the `domain` field is required. The `full` block enables `llms-full.txt`.

## Platforms with nothing to set up

| Platform | What is created automatically |
|---|---|
| Mintlify | `llms.txt` and `llms-full.txt` at the project root; a very long index is split into parts |
| GitBook | `llms.txt`, `llms-full.txt` and a Markdown version of any page at the address ending in `.md` |

This explains why so many documentation sites have the files although their owners configured nothing.

## Discovery relations

Plugins create the files, but not all of them add the relations from the [second edition of the proposal](https://llmstxt.org/) to pages. Check whether the page code has these lines:

```html
<link rel="alternate" type="text/markdown" href="/docs/page.md">
<link rel="describedby" href="/llms.txt">
```

If not, add them through the page head template. More: [Discovery of the file and Markdown versions](https://llms-full-txt.ru/en/specification/discovery/).

## After the build

1. `llms.txt` appeared in the build folder and answers `200` on the site.
2. It has the site name and summary.
3. Link addresses are absolute and on the right domain.
4. Drafts and hidden pages did not get into the file.
5. The size of `llms-full.txt` is reasonable.
6. Markdown versions of pages open, if the plugin creates them.

Commands for checking: [Validating files and markup](https://llms-full-txt.ru/en/guides/validation/).

## What to read next

- [Generators and tools](https://llms-full-txt.ru/en/tools/generators/) - extensions for content management systems and utilities
- [Markdown versions of pages](https://llms-full-txt.ru/en/guides/markdown-pages/) - why they exist and how to serve them
- [What is llms-full.txt](https://llms-full-txt.ru/en/guides/llms-full-txt/) - when the full file is needed
- [llms.txt and MCP](https://llms-full-txt.ru/en/reference/mcp-relationship/) - how the file relates to the protocol
