diff options
| author | Dominik Koch <dominik@koch-bautechnik.de> | 2025-07-23 19:33:21 +0200 |
|---|---|---|
| committer | Dominik Koch <dominik@koch-bautechnik.de> | 2025-07-23 19:33:21 +0200 |
| commit | 45096b7b6596da1eeb00d1aad209cd20756382e6 (patch) | |
| tree | bfa75913a879520947b69d311ab94d34f52d0e89 /apps/web/src/app/sitemap.ts | |
| parent | cabf86033032f0a396569cce9165cd656be791d6 (diff) | |
| download | opencut-45096b7b6596da1eeb00d1aad209cd20756382e6.tar.gz | |
feat: add robots/sitemap generation
Diffstat (limited to 'apps/web/src/app/sitemap.ts')
| -rw-r--r-- | apps/web/src/app/sitemap.ts | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/apps/web/src/app/sitemap.ts b/apps/web/src/app/sitemap.ts new file mode 100644 index 00000000..81a5ebf4 --- /dev/null +++ b/apps/web/src/app/sitemap.ts @@ -0,0 +1,61 @@ +import { SITE_URL } from "@/constants/site"; +import { getPosts } from "@/lib/blog-query"; +import type { MetadataRoute } from "next"; + +export default async function sitemap(): Promise<MetadataRoute.Sitemap> { + const data = await getPosts(); + + const postPages: MetadataRoute.Sitemap = + data?.posts?.map((post) => ({ + url: `${SITE_URL}/blog/${post.slug}`, + lastModified: new Date(post.publishedAt), + changeFrequency: "weekly", + priority: 0.8, + })) ?? []; + + return [ + { + url: SITE_URL, + lastModified: new Date(), + changeFrequency: "weekly", + priority: 1, + }, + { + url: `${SITE_URL}/contributors`, + lastModified: new Date(), + changeFrequency: "daily", + priority: 0.5, + }, + { + url: `${SITE_URL}/roadmap`, + lastModified: new Date(), + changeFrequency: "weekly", + priority: 1, + }, + { + url: `${SITE_URL}/privacy`, + lastModified: new Date(), + changeFrequency: "monthly", + priority: 0.5, + }, + { + url: `${SITE_URL}/terms`, + lastModified: new Date(), + changeFrequency: "monthly", + priority: 0.5, + }, + { + url: `${SITE_URL}/why-not-capcut`, + lastModified: new Date(), + changeFrequency: "yearly", + priority: 1, + }, + { + url: `${SITE_URL}/blog`, + lastModified: new Date(), + changeFrequency: "weekly", + priority: 1, + }, + ...postPages, + ]; +} |
