add rss feed

Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
Hadi
2026-03-20 21:03:29 +01:00
parent 292f69ad2d
commit 19e9671dfc
5 changed files with 62 additions and 2 deletions

View File

@@ -63,6 +63,14 @@ const origin = Astro.url.origin;
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<meta name="twitter:image" content={`${origin}/images/og_home.png`} />
<!-- RSS Feed -->
<link
rel="alternate"
type="application/rss+xml"
title="Another Hadi RSS Feed"
href="/rss.xml"
/>
</head>
<body class="min-h-screen">
<slot />

35
src/pages/rss.xml.ts Normal file
View File

@@ -0,0 +1,35 @@
import rss from "@astrojs/rss";
import { getCollection } from "astro:content";
import type { APIContext } from "astro";
export async function GET(context: APIContext) {
const blog = await getCollection("blog");
const projects = await getCollection("projects");
const blogItems = blog.map((post) => ({
title: post.data.title,
pubDate: post.data.publishDate,
description: post.data.description,
link: `/blog/${post.id}/`,
}));
const projectItems = projects.map((project) => ({
title: `[Project] ${project.data.title}`,
pubDate: new Date(),
description: project.data.description,
link: `/projects/${project.id}/`,
}));
const allItems = [...blogItems, ...projectItems].sort(
(a, b) => b.pubDate.getTime() - a.pubDate.getTime(),
);
return rss({
title: "Another Hadi",
description:
"Thoughts, insights, and tutorials on cybersecurity, OSINT, and technology.",
site: context.site!,
items: allItems,
customData: `<language>en</language>`,
});
}