spb/autoscholar
Public
1import { allPublishedForFeeds, listSeries, listTopics } from "@autoscholar/core";2import type { MetadataRoute } from "next";3import { db } from "@/lib/server/db";45export const dynamic = "force-dynamic";67export default async function sitemap(): Promise<MetadataRoute.Sitemap> {8 const base = process.env.APP_BASE_URL ?? "http://localhost:8470";9 if (process.env.STAGING_MODE === "1") return [];10 const d = db();11 const statics = [12 "",13 "/research",14 "/topics",15 "/series",16 "/about",17 "/methodology",18 "/infrastructure",19 "/transparency",20 "/legal/privacy",21 "/legal/terms",22 "/legal/research-disclaimer",23 ].map((p) => ({ url: `${base}${p}`, changeFrequency: "weekly" as const, priority: p === "" ? 1 : 0.6 }));24 const papers = (await allPublishedForFeeds(d, 5000)).map((r) => ({25 url: `${base}/research/${r.p.slug}`,26 lastModified: r.p.updatedAt,27 changeFrequency: "monthly" as const,28 priority: 0.8,29 }));30 const topics = (await listTopics(d)).map((t) => ({31 url: `${base}/topics/${t.slug}`,32 changeFrequency: "weekly" as const,33 priority: 0.5,34 }));35 const series = (await listSeries(d))36 .map(() => ({ url: `${base}/series`, changeFrequency: "weekly" as const, priority: 0.4 }))37 .slice(0, 1);38 return [...statics, ...papers, ...topics, ...series];39}40