Add content pages to a Nuxt sitemap

Nuxt Sitemap can read URLs from a server endpoint. With Nuxt Content v3, query your page collection and return each entry's path as loc.

sh
npm install @nuxtjs/sitemap
ts
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@nuxt/content', '@nuxtjs/sitemap'],
  site: { url: 'https://example.com' },
  sitemap: { sources: ['/api/sitemap-urls'] }
})
ts
// server/api/sitemap-urls.ts
import { queryCollection } from '@nuxt/content/server'

export default defineEventHandler(async (event) => {
  const pages = await queryCollection(event, 'content')
    .select('path')
    .all()

  return pages.map(page => ({ loc: page.path }))
})

Replace the domain and collection name with your own. Only include public pages. If you provide lastmod, use the page's actual modification date, not the time of the request.

Nuxt Sitemap documentation.