Make a Nuxt or Next.js site readable by AI: llms.txt, robots.txt, Markdown A developer added AI-crawler support to the SEO plugin of Easy CMS, an embedded CMS for Nuxt and Next.js, generating robots.txt rules grouped by crawler purpose (training, search, user), an /llms.txt Markdown index plus /llms-full.txt, and per-post .md routes. The robotsTxt() helper defaults to allowing all AI crawlers and repeats base admin and API disallow rules in every user-agent group, since crawlers follow only the most specific matching group. The developer notes that crawler user-agent names change frequently and should not be copied from blog posts. Ask an AI assistant about a page on your site and one of three things happens. It answers from what it learned in training, it answers from a search index it built earlier, or it fetches your page right now. In all three, a crawler read your HTML at some point. What it was allowed to read, and how easily, is the part you can shape. I built four pieces for that into the SEO plugin of Easy CMS, my embedded CMS for Nuxt and Next.js the first post in this series https://easycms.dev/blog/payload-style-cms-nuxt introduces it . The ideas work in any server-rendered site: robots.txt rules for AI crawlers, by what they do. /llms.txt , a short Markdown index of the site, and /llms-full.txt , the whole site in one file. /posts/hello.md . "AI crawler" covers three jobs: | Group | What it does | If you block it | |---|---|---| | training | Collects text to train models. | Your text stays out of future training sets. | | search | Indexes pages for AI search and for answers that cite and link them. | Your pages stop showing up as cited sources. | | user | Opens a page because a person asked an assistant to read it. | Assistants can't fetch your page on request. Some vendors say these may not always follow robots.txt. | Each company publishes its own user-agent names, and they change, so don't copy a list from a blog post. Easy CMS keeps them in one exported constant, AI CRAWLERS , grouped as above and updated in each release. The AI search guide https://easycms.dev/docs/ai-search shows the current list. A common choice: stay out of training, stay visible in AI answers. js // app/robots.txt/route.ts Next.js import { robotsTxt } from '@easy-cms/plugin-seo' import config from '@/easy-cms.config' export function GET { // AI training crawlers stay out; AI search and assistants may still read and cite posts. const text = robotsTxt { config, ai: { training: false } } return new Response text, { headers: { 'content-type': 'text/plain; charset=utf-8' } } } The output, shortened: User-agent: Allow: /api/cms/media/file/ Disallow: /admin/ Disallow: /api/cms/ User-agent: