AI search readiness · Frameworks
Nuxt SEO for AI search: robots, sitemap and llms.txt modules
Nuxt uses universal rendering by default, so pages arrive as HTML that AI crawlers can read without running JavaScript. Core Nuxt gives you useHead, useSeoMeta and a public/ folder; the Nuxt SEO module family adds generated robots.txt, sitemap.xml, schema.org JSON-LD and llms.txt.
- Edit robots.txt
- With a plugin or appStatic public/robots.txt works in core Nuxt. The Nuxt Robots module (@nuxtjs/robots) generates /robots.txt and noindexes non-production environments.
- XML sitemap
- With a plugin or appThe @nuxtjs/sitemap module generates the sitemap once a site URL is set. It is also part of @nuxtjs/seo.
/sitemap.xml - llms.txt
- With a plugin or appThe Nuxt AI Ready module publishes /llms.txt, /llms-full.txt and Markdown versions of pages. A static public/llms.txt also works.
- AI crawlers
- No AI-specific default in core Nuxt. The Nuxt Robots module documents AI directives such as Google-Extended, Applebot-Extended and Content-Signal for opting out of training.
- Structured data
- Core Nuxt adds no structured data; useHead accepts script entries. The Nuxt Schema.org module builds JSON-LD graphs for your pages.
Rendering: why Nuxt starts in a good place
Nuxt's rendering docs say that by default Nuxt uses universal rendering: Vue code runs on the server to produce HTML, then hydrates in the browser. Because the content is already in the HTML document, crawlers can index it without overhead. With client-side rendering (ssr: false in nuxt.config.ts), the docs note that crawlers may not wait for the interface to render, and recommend it for apps such as SaaS dashboards that do not need indexing.
This matters more for AI search than for Google. Vercel's December 2024 study found that none of the major AI crawlers it tested render JavaScript, with Google's Gemini as the exception. So a global ssr: false makes a Nuxt site look empty to GPTBot, ClaudeBot and PerplexityBot. If you need client-only sections, keep them per route with routeRules, and prerender marketing pages with prerender: true. The Nuxt docs note that hybrid rendering does not work with nuxt generate.
robots.txt and sitemap.xml with the Nuxt SEO modules
Core Nuxt serves anything in public/ at the root, unmodified, and the docs list robots.txt as a typical example. That covers a fixed file. For generated files, the Nuxt SEO project (nuxtseo.com) maintains modules:
- Nuxt Robots (
@nuxtjs/robots) generates/robots.txt, adds anX-Robots-Tagheader and a robots meta tag for pages that should not be indexed, and disables indexing on non-production environments. Put your own rules inpublic/_robots.txt, which the docs call the easiest location; the module merges them. - Nuxt Sitemap (
@nuxtjs/sitemap) serves/sitemap.xml. It requires a site URL; without one, the docs warn, the sitemap uses localhost in production. @nuxtjs/seoinstalls all nine modules (Sitemap, Robots, OG Image, Schema.org, Link Checker, SEO Utils, Site Config, AI Ready, Skew Protection). Version 6 requires Nuxt 4.6.1 or later.
For AI crawlers, the Robots module docs describe AI directives: vendor tokens such as Google-Extended and Applebot-Extended, plus Content-Usage and Content-Signal lines. These express training preferences. To stay visible in AI answers, keep search crawlers such as OAI-SearchBot allowed.
llms.txt with Nuxt AI Ready
Nuxt has a dedicated llms.txt module. Nuxt AI Ready publishes /llms.txt listing your pages, /llms-full.txt with full Markdown from prerendered pages, and Markdown versions of eligible pages at a .md suffix such as /about.md. If you prefer a hand-written file, public/llms.txt works with no module. Check either with the llms.txt checker.
Meta tags and JSON-LD
Nuxt's SEO docs cover three tools: app.head in nuxt.config.ts for static defaults, useHead for reactive head tags including a script array, and useSeoMeta for typed meta tags that avoid mistakes like name versus property. For JSON-LD, the Nuxt Schema.org module builds schema.org graphs for your pages. Because Nuxt renders on the server, that markup is in the HTML crawlers fetch. Run the robots.txt checker on production to confirm the generated file allows the crawlers you want.
Check your Nuxt site
Paste your domain to see which AI crawlers your live robots.txt lets in.
robots.txt checker
Test your robots.txt against every AI crawler
robots.txt generator
# robots.txt generated with https://www.getpicked.app/tools/robots-txt-checker
# Preset: Allow AI search, block training
User-agent: *
Allow: /
# Model training crawlers
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: Meta-ExternalAgent
User-agent: Amazonbot
User-agent: CCBot
User-agent: Bytespider
Disallow: /
Questions
- Is Nuxt good for SEO?
- Its default helps. Nuxt uses universal rendering, so the HTML already contains the content and, in the Nuxt docs' words, crawlers can index it without overhead. Setting ssr: false switches to client-side rendering, which the docs describe for apps that do not need indexing.
- Should I install @nuxtjs/seo or the individual modules?
- @nuxtjs/seo installs all nine Nuxt SEO modules at once, including Sitemap, Robots, Schema.org and AI Ready. Version 6 needs Nuxt 4.6.1 or later; Nuxt 3 sites should stay on Nuxt SEO v5. Install single modules if you only need one.
- Why does my Nuxt sitemap show localhost URLs?
- The sitemap module needs a site URL. Its docs warn that without one, the sitemap will use localhost in production.
- Where do I put custom robots.txt rules with the Nuxt Robots module?
- The module docs say the easiest location is public/_robots.txt. It also reads a root robots.txt and a few other paths, and merges your rules into the generated /robots.txt.
Other frameworks
Related
Sources
Checked against these pages on 2026-10-19. Operators change their crawlers; check the source before relying on a detail.