SPB Git

spb/autoscholar

Public
1.3 KB · 40 lines typescript
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
Files · 87b4e55c3b9fbcc2cd191a1e469b33de0a24ccc8
Menu

Theme