diff --git a/app/api/blog/feed.xml/route.ts b/app/api/blog/feed.xml/route.ts new file mode 100644 index 000000000..6b6b48067 --- /dev/null +++ b/app/api/blog/feed.xml/route.ts @@ -0,0 +1,30 @@ +import Rss from "rss"; +import { allBlogs } from "contentlayer/generated"; + +const siteUrl = 'https://leerob.io'; + +export async function GET(request: Request) { + const feed = new Rss({ + title: "Lee Robinson", + description: "Developer, writer, and creator.", + feed_url: `${siteUrl}/api/blog/feed.xml`, + site_url: siteUrl, + language: "en", + }); + + allBlogs.forEach((post) => { + feed.item({ + title: post.title, + description: post.summary, + url: `${siteUrl}/blog/${post.slug}`, + date: post.publishedAt, + }); + }); + + return new Response(feed.xml(), { + status: 200, + headers: { + 'Content-Type': 'application/xml' + } + }) +} diff --git a/app/layout.tsx b/app/layout.tsx index 5cd1c0e8b..812aabb66 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -56,6 +56,11 @@ export const metadata: Metadata = { google: 'eZSdmzAXlLkKhNJzfgwDqWORghxnJ8qR9_CHdAh5-xw', yandex: '14d2e73487fa6c71', }, + alternates: { + types: { + 'application/rss+xml': 'https://leerob.io/api/blog/feed.xml', + } + } }; export default function RootLayout({ @@ -71,13 +76,13 @@ export default function RootLayout({ graphik.variable )} > -
-