Index of every page on this site: llms.txt

Introduction

Nuxt SEO bundles 9 modules via @nuxtjs/seo: Sitemap, Robots, OG Image, Schema.org, Link Checker, SEO Utils, Site Config, AI Ready, and Skew Protection. Most work out-of-the-box, but you may need some configuration depending on your site's requirements.

Whether you installed @nuxtjs/seo (the alias) or individual modules, the configuration is the same. Each module is independent and configured through its own options. See the introduction for details.

This guide will give you a quick overview of each module and what you need to do to get started.

Check out the StackBlitz Demo if you want to see a working example.

Sitemap

Sitemap 
   
Powerfully flexible XML Sitemaps that integrate seamlessly.

Generates a sitemap at /sitemap.xml based on your app data sources.

  • When prerendering or using static only routes, it will automatically generate a sitemap for you without any configuration.
  • If you have dynamic routes, you'll need to set up a handler for Dynamic URLs.

I18n features: the sitemap module will automatically generate a multi sitemap with each locale having its own sitemap.

See I18n Sitemap for more information.

Robots

Robots 
   
Tame the robots crawling and indexing your site with ease.

Generates a robots.txt at /robots.txt.

Will append a <meta name="robots" content="<rule>"> and a X-Robots-Tag HTTP header.

  • If you have any other environments besides development and production, you need to configure the env option. See the Disabling Indexing guide for more information.
  • By default, all routes are allowed for all user-agents. See Disabling Page Indexing to start blocking routes.

I18n features: any Disallow rules in the robots module will automatically have the locale prefixes added.

See I18n Robots for more information.

OG Image

OG Image 
   
Generate OG Images with Vue templates in Nuxt.

Generate dynamic Open Graph images for your pages.

  • It needs a renderer dependency. If your app has no OG Image template and no renderer, OG images stay off. The module logs one line with the enable command.
  • If a template needs a renderer that is not installed, nuxt dev in an interactive terminal asks before it installs anything. In CI and AI agent shells, it logs the install command instead.
  • A production build fails when a page uses a template whose renderer is not installed.
  • If OG Image signs URLs, production needs NUXT_APP_SECRET. See URL Signing.
  • See the Tutorial: Getting Familiar With Nuxt OG Image docs on setting it up.

If you want dynamic images, install a renderer:

npx nuxt-og-image enable takumi

If you don't intend to generate dynamic images, disable this module with ogImage: false.

Schema.org

Schema.org 
   
The quickest and easiest way to build Schema.org graphs.

Automatically generates schema.org JSON-LD for your pages.

Link Checker 
   
Find and magically fix links that may be negatively effecting your SEO.

Checks all links for issues that may be affecting your SEO.

  • When building your site it will check links
  • You can also run it manually by opening the "Link Checker" tab in Nuxt DevTools

SEO Utils

SEO Utils 
   
SEO utilities to improve your Nuxt sites discoverability and shareability.

A few extra SEO Nuxt features that don't fit anywhere else.

AI Ready

AI Ready 
   
Best practice AI & LLM discoverability for Nuxt sites.

Makes your pages readable by AI agents.

  • Serves /llms.txt and a Markdown version of every page. A prerender also writes /llms-full.txt.
  • Publishes Agent Skills from public/skills/<name>/SKILL.md in your project and layers. Files under the root skills/ directory stay private.
  • Generates an API catalog when you configure an MCP server and a site URL.
  • Background indexing and cron stay off until you enable them. The database also stays off, unless an MCP server or WebMCP site tools need it.

To turn off Agent Skills or the API catalog, set aiReady: { agentSkills: false } or aiReady: { apiCatalog: false }.

See the AI Ready docs for more information. If you don't want AI Ready, disable this module with aiReady: false.

Skew Protection

Skew Protection 
   
Solve Nuxt version skews with persistent assets and instant updates.

Keeps the assets of earlier builds available after a deploy. Open tabs and crawlers stop hitting ChunkLoadError and 404 errors on old chunks.

Nuxt SEO changes two Skew Protection defaults:

  • updateStrategy: 'polling': it checks for new versions with Nuxt's app manifest polling, so it opens no persistent connection.
  • cookie: false: it sets no version cookie. Connection, route, and IP tracking also stay off.

Your skewProtection options take precedence over these defaults.

Skew Protection stores old assets in node_modules/.cache/nuxt-seo/skew-protection. If your CI starts from a clean checkout, cache that directory between builds, or set skewProtection.storage. Without that history, the module cannot keep the assets of earlier deployments.

If a server handler calls isClientOutdated(), set skewProtection.cookie to a cookie config object.

See the Skew Protection docs for more information. If you don't want Skew Protection, disable this module with skewProtection: false.

Shared Configuration

Site Config 
   
Powerful build and runtime shared site configuration for Nuxt modules.

Nuxt Site Config allows you to configure all Nuxt SEO modules at build time and runtime, for example in a multi-tenant or i18n app.

You do not need to install nuxt-site-config manually. It installs automatically with any Nuxt SEO module.

You should set the following config. Since v5, site config is no longer inferred from package.json or your project directory, so these values must be set explicitly:

  • url - The canonical URL of your site, avoids duplicate content and consolidates page rank.
  • name - The name of your site, used in the title and meta tags. Required if you want your site name in SEO output.
  • description - The description of your site, used in the meta tags.
  • defaultLocale - The default locale of your site, used in the meta tags. (you can omit this if you're using @nuxtjs/i18n or nuxt-i18n-micro)
export default defineNuxtConfig({
  site: {
    url: 'https://example.com',
    name: 'Awesome Site',
    description: 'Welcome to my awesome site!',
    defaultLocale: 'en', // not needed if you have @nuxtjs/i18n or nuxt-i18n-micro installed
  }
})

I18n features: you can dynamically set the site config based on the current locale.

This is useful for setting the url and name properties based on the page the user is currently on.

See I18n Site Config for more information.

Was this page helpful?