export default defineEventHandler(async (event) => { const config = useRuntimeConfig() const siteUrl = config.public.siteUrl || 'https://example.com' // Detect locale from path const locale = 'en' // Fetch published blog posts const posts = await serverQueryContent(event, `${locale}/blog`) .where({ draft: { $ne: true } }) .sort({ date: -1 }) .find() const escapeXml = (str: string) => { return str .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, ''') } const rssItems = posts .map((post) => { const link = `${siteUrl}${post._path}` const pubDate = new Date(post.date).toUTCString() return ` ${escapeXml(post.title)} ${escapeXml(link)} ${escapeXml(link)} ${pubDate} ${escapeXml(post.description || '')} ` }) .join('') const rss = ` Blog - ${escapeXml(config.public.siteName || 'My Site')} ${siteUrl}/blog Latest blog posts ${locale} ${rssItems} ` event.node.res.setHeader('Content-Type', 'application/rss+xml; charset=utf-8') return rss })