@nuxtjs/seo
Fully equipped Technical SEO & AEO for busy Nuxters.
@nuxtjs/seo installs 9 Nuxt SEO modules in one step:
| Module | Package |
|---|---|
| Robots | @nuxtjs/robots |
| Sitemap | @nuxtjs/sitemap |
| Schema.org | nuxt-schema-org |
| OG Image | nuxt-og-image |
| SEO Utils | nuxt-seo-utils |
| Link Checker | nuxt-link-checker |
| Site Config | nuxt-site-config |
| AI Ready | nuxt-ai-ready |
| Skew Protection | nuxt-skew-protection |
Install
npx nuxt module add seoUsing an AI agent? Get the @nuxtjs/seo Skill on skilld.dev/gh/harlan-zw/nuxt-seo.
Then set your site URL and name:
export default defineNuxtConfig({
modules: ['@nuxtjs/seo'],
site: {
url: 'https://example.com',
name: 'My Site',
},
})You configure each module through its own key, for example sitemap, robots, or ogImage.
Defaults
AI Ready serves llms.txt and Markdown versions of pages. Prerendering also generates llms-full.txt.
Databases, background indexing, and cron remain opt-in.
AI Ready discovers agent skills under public/skills/<name>/SKILL.md in your project and layers.
Project instructions under skills/ stay private unless you configure aiReady.agentSkills.dir.
Set aiReady.agentSkills: false to disable discovery.
If you configure an MCP server and site URL, AI Ready generates an API catalog.
Set aiReady.apiCatalog: false to disable the catalog, or configure aiReady.apiCatalog to publish other API entries.
Skew Protection retains old build assets and uses Nuxt's manifest polling.
The bundle disables version cookies. Connection, route, and IP tracking remain off.
Your skewProtection options take precedence over these defaults.
If CI starts from a clean checkout, preserve node_modules/.cache/nuxt-seo/skew-protection between builds.
You can also configure shared storage through skewProtection.storage.
Without build history, the module cannot retain previous deployments.
Migrate from v5
Nuxt SEO v6 requires Nuxt 4.6.1 or later, and Node ^22.22.3 || ^24.15.0 || >=26.0.0.
Nuxt 3 sites stay on Nuxt SEO v5.
Remove AI Ready and Skew Protection from modules if you listed them separately.
Keep their aiReady and skewProtection configuration.
To disable either module, use its own key:
export default defineNuxtConfig({
modules: ['@nuxtjs/seo'],
aiReady: false,
skewProtection: false,
})If you need server checks through isClientOutdated, enable skewProtection.cookie with a cookie configuration object.
If OG Image signs URLs, set NUXT_APP_SECRET in production, 32 characters or more.
Run npx nuxt-og-image generate-secret to create one.
The v5 to v6 migration guide covers every change.
Documentation
License
Licensed under the MIT license.