AI

LLMs Integration

Docus generate AI-ready content files using Nuxt LLMs module

Docus integrates nuxt-llms by default to prepare your content for Large Language Models (LLMs). All your documentation pages are injected and /llms.txt and /llms-full.txt files are automatically generated and pre-rendered.

Have a check at the /llms.txt file generated for Docus documentation itself.

Defaults

Here are the default values use to generate the /llms.txt file:

  • domain → computed based on your deployment platform (or by using NUXT_SITE_URL env variable)
  • title → extracted from your package.json
  • description → extracted from your package.json
  • full.title → extracted from your package.json
  • full.description → extracted from your package.json

Customize

You can override your LLMs data from the nuxt.config.ts :

nuxt.config.ts
export default defineNuxtConfig({
  llms: {
    domain: 'https://your-site.com',
    title: 'Your Site Name',
    description: 'A brief description of your site',
    full: {
      title: 'Your Site Name',
      description: 'A brief description of your site',
    },
  },
})

Agent-friendly 404s

Instead of replying with a JSON error body, Docus replies with a short markdown document, listing the machine-readable entry points your site actually serves:

curl -H "Accept: text/markdown" https://docus.dev/en/does-not-exist
# 404 — Page not found

`/en/does-not-exist` was not found on this site.

## Where to look next

- [/llms.txt](/llms.txt): index of Docus
- [/llms-full.txt](/llms-full.txt): the full content of this site as a single markdown document
- [/sitemap.xml](/sitemap.xml): every page, with its last modification date
- [/.well-known/skills/index.json](/.well-known/skills/index.json): agent skills published by this site
- [/](/): home page

The skills entry only appears when your site publishes skills, and /llms-full.txt only when it is enabled, so the document never points at a route that does not exist.

The response keeps the 404 status and is served as text/markdown; charset=utf-8 with Vary: Accept, so CDNs never mix it up with the HTML variant.

Only clients that clearly aren't rendering HTML get this document. Untouched:

  • Browsers: any request accepting text/html still renders the theme error page
  • API clients: requests accepting application/json, or targeting /api/** and *.json, keep the default JSON error body
  • fetch() and $fetch: browser-initiated requests keep the default JSON error body, so error.data stays parseable
  • Assets: a missing script, style, image or feed keeps the default error body, since markdown would be meaningless there

To restore the default error body:

nuxt.config.ts
export default defineNuxtConfig({
  docus: {
    notFound: false,
  },
})

Raw Markdown Access

When nuxt-llms is enabled, Docus also exposes a raw markdown endpoint so AI agents can fetch LLM-ready source files without going through the full rendering pipeline. This reduces token usage and improves response speed for AI-powered tools consuming your documentation.

How it works

  • Endpoint: /raw/<content-path>.md — use the same path as the page URL, drop trailing /index, and keep the .md extension
  • Content-Type: text/markdown; charset=utf-8
  • Auto-enrichment: if the requested document is missing a top-level heading or description, the route automatically prepends the title and description to the markdown body
  • LLMs.txt integration: document links in llms.txt are automatically rewritten to the /raw/...md endpoint, so agents fetch compact markdown instead of full HTML
Try accessing the raw Markdown version of this page.

Configuration

You can customize the raw markdown behavior from your nuxt.config.ts:

nuxt.config.ts
export default defineNuxtConfig({
  llms: {
    contentRawMarkdown: {
      // Prevent specific page collections from being exposed
      excludeCollections: ['landing', 'landing_en', 'landing_fr'],
      // Keep llms.txt links pointing to rendered pages instead of raw markdown
      rewriteLLMSTxt: false,
    },
  },
})

To disable raw markdown access entirely:

nuxt.config.ts
export default defineNuxtConfig({
  llms: {
    contentRawMarkdown: false,
  },
})

Markdown Redirection

This feature is only available when Docus is deployed on Vercel. We'll be able to make it agnostic once Nitro v3 supports global rewrites for multi vendors.

When deployed on Vercel, Docus automatically configures intelligent routing to serve markdown content to AI agents and CLI tools.

Why?

Agents like Claude Code use Accept: text/markdown headers by default, retuning raw Markdown is saving lots of data transfer and tokens in the process.

How?

Docus detects requests from AI agents and command-line tools using HTTP headers:

  • Accept header: Requests with Accept: text/markdown are automatically redirected
  • User-agent detection: curl requests as agents are automatically redirected

Redirect Rules

  • Root path: //llms.txt
  • Documentation pages: /{path}/raw/{path}.md

Example Usage

# Get llms.txt from homepage
curl -H "Accept: text/markdown" https://docus.dev/

# Get llms.txt from locale homepage
curl -H "Accept: text/markdown" https://docus.dev/en

# Get raw markdown for a documentation page
curl -H "Accept: text/markdown" https://docus.dev/en/ai/llms

All these commands will return markdown content instead of HTML.

Checkout the nuxt-llms documentation for more information about the module.
Copyright © 2026