diff --git a/src/config/seo.ts b/src/config/seo.ts
new file mode 100644
index 0000000..aec9753
--- /dev/null
+++ b/src/config/seo.ts
@@ -0,0 +1,7 @@
+export const seoConfig = {
+ lastmod: "2025-06-01T00:00:00Z",
+} as const;
+
+export function getLastmod(): string {
+ return process.env.SITEMAP_LASTMOD ?? seoConfig.lastmod;
+}
diff --git a/src/pages/robots.txt.ts b/src/pages/robots.txt.ts
index 8e2d3dd..d8c93d8 100644
--- a/src/pages/robots.txt.ts
+++ b/src/pages/robots.txt.ts
@@ -1,5 +1,5 @@
import type { APIRoute } from "astro";
-import { siteConfig } from "../config/site";
+import { siteConfig } from "@/config/site";
export const GET: APIRoute = () => {
const robotsTxt = `User-agent: *
diff --git a/src/pages/sitemap.xml.ts b/src/pages/sitemap.xml.ts
index 557aa8d..dd9dd4b 100644
--- a/src/pages/sitemap.xml.ts
+++ b/src/pages/sitemap.xml.ts
@@ -1,27 +1,33 @@
import type { APIRoute } from "astro";
-import { siteConfig } from "../config/site";
+import { siteConfig } from "@/config/site";
+import { getLastmod } from "@/config/seo";
+
+const ALWAYS = [
+ { loc: siteConfig.url, priority: "1.0" },
+ { loc: `${siteConfig.url}/downloads`, priority: "0.8" },
+];
export const GET: APIRoute = () => {
+ const lastmod = getLastmod();
+
+ const urls = ALWAYS.map(
+ (page) => `
+ ${page.loc}
+ ${lastmod}
+ weekly
+ ${page.priority}
+ `
+ ).join("\n");
+
const sitemap = `
-
- ${siteConfig.url}
- ${new Date().toISOString()}
- weekly
- 1.0
-
-
- ${siteConfig.url}/downloads
- ${new Date().toISOString()}
- weekly
- 0.8
-
-
-`;
+${urls}
+`;
return new Response(sitemap, {
headers: {
"Content-Type": "application/xml; charset=utf-8",
+ "Cache-Control": "public, max-age=86400, s-maxage=3600",
},
});
};