SPB Git

spb/autoscholar

Public
1.5 KB · 23 lines typescript
1import { allPublishedForFeeds } from "@autoscholar/core";2import { db } from "@/lib/server/db";34export const runtime = "nodejs";5export const dynamic = "force-dynamic";6const esc = (s: string) =>7  s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");89export async function GET() {10  const base = process.env.APP_BASE_URL ?? "http://localhost:8470";11  const rows = await allPublishedForFeeds(db(), 100);12  const items = rows13    .map(14      (r) =>15        `<item><title>${esc(r.v.title)}</title><link>${base}/research/${r.p.slug}</link><guid isPermaLink="true">${base}/research/${r.p.slug}</guid><pubDate>${new Date(r.v.publishedAt).toUTCString()}</pubDate><description>${esc(`${r.p.publicId} v${r.v.versionNo}. AI-generated working paper; not formally peer reviewed. ${r.v.abstract}`)}</description>${r.v.keywords.map((k) => `<category>${esc(k)}</category>`).join("")}</item>`,16    )17    .join("");18  const xml = `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AutoScholar.ai working papers</title><link>${base}/research</link><atom:link href="${base}/feed.xml" rel="self" type="application/rss+xml"/><description>AI-generated working papers, verified by deterministic quality gates. Research computed on MacLustr.</description><language>en</language>${items}</channel></rss>`;19  return new Response(xml, {20    headers: { "content-type": "application/rss+xml; charset=utf-8", "cache-control": "public, max-age=300" },21  });22}23
Files · main
Menu

Theme