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.
npm install @nuxtjs/sitemap
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@nuxt/content', '@nuxtjs/sitemap'],
site: { url: 'https://example.com' },
sitemap: { sources: ['/api/sitemap-urls'] }
})
// 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.