diff options
| author | iza <59828082+izadoesdev@users.noreply.github.com> | 2025-07-23 20:46:02 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-23 20:46:02 +0300 |
| commit | 81ad5c1782bfed92c2fdcd78b5131748871f098e (patch) | |
| tree | 64484ef01958bd660462d821e645bd3a87911ca3 /apps/web/src | |
| parent | 41a78b4e4c128e45353a0a1a516ea3ac4b796623 (diff) | |
| parent | 17d1336c8068b42cb0f48dad511dec41d2285bfb (diff) | |
| download | opencut-81ad5c1782bfed92c2fdcd78b5131748871f098e.tar.gz | |
Merge pull request #443 from OpenCut-app/feat/sitemap
feat: add sitemap and robots generation
Diffstat (limited to 'apps/web/src')
| -rw-r--r-- | apps/web/src/app/robots.ts | 13 | ||||
| -rw-r--r-- | apps/web/src/app/sitemap.ts | 61 | ||||
| -rw-r--r-- | apps/web/src/constants/site.ts | 1 |
3 files changed, 75 insertions, 0 deletions
diff --git a/apps/web/src/app/robots.ts b/apps/web/src/app/robots.ts new file mode 100644 index 00000000..ad6c31c8 --- /dev/null +++ b/apps/web/src/app/robots.ts @@ -0,0 +1,13 @@ +import type { MetadataRoute } from "next"; +import { SITE_URL } from "@/constants/site"; + +export default function robots(): MetadataRoute.Robots { + return { + rules: { + userAgent: "*", + allow: "/", + disallow: ["/_next/", "/projects/", "/editor/"], + }, + sitemap: `${SITE_URL}/sitemap.xml`, + }; +} 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, + ]; +} diff --git a/apps/web/src/constants/site.ts b/apps/web/src/constants/site.ts new file mode 100644 index 00000000..61ec29c1 --- /dev/null +++ b/apps/web/src/constants/site.ts @@ -0,0 +1 @@ +export const SITE_URL = "https://opencut.app";
\ No newline at end of file |
