Generate an RSS feed from Nuxt Content
Query a Nuxt Content v3 page collection from a server route and pass the results to rss.
npm install rss
npm install -D @types/rss
// server/routes/rss.xml.get.ts
import RSS from 'rss'
import { queryCollection } from '@nuxt/content/server'
export default defineEventHandler(async (event) => {
const siteUrl = 'https://example.com'
const feed = new RSS({
title: 'Engineering notes',
site_url: siteUrl,
feed_url: `${siteUrl}/rss.xml`
})
const pages = await queryCollection(event, 'content').all()
for (const page of pages) {
const url = new URL(page.path, siteUrl).href
feed.item({
title: page.title,
description: page.description ?? '',
url,
guid: url
})
}
setHeader(event, 'content-type', 'application/rss+xml; charset=utf-8')
return feed.xml({ indent: true })
})
Use your own domain and collection name, and query only public entries. If your schema includes publication dates, pass them as each item's date and sort the query by that field.