Skip to content

docs: add og:title and fix punctuation in docs#58

Closed
Aibeto wants to merge 12 commits into
mainfrom
update/aibeto-docs
Closed

docs: add og:title and fix punctuation in docs#58
Aibeto wants to merge 12 commits into
mainfrom
update/aibeto-docs

Conversation

@Aibeto

@Aibeto Aibeto commented May 16, 2026

Copy link
Copy Markdown
Member

Changes

  • Update env configuration instructions.
  • Add og:titile.
  • Update develop setup guide with env notes.
  • Added Open Graph metadata across docs: added og:title fields in many Markdown and JSON front-matter files under apps/docs/content/ (internal, legacy, crawler, workflow, style-guide, index, etc.) to standardize social sharing titles (pattern: "Project CVSA {page-description}").
  • Standardized metadata JSON: updated multiple meta.json files (developers, developers/crawler, internal, legacy) to include og:title.
  • Developer guide updates (apps/docs/content/internal/developers/guide.md):
    • Expanded environment variable guidance (added/clarified MEILI_API_URL, REDIS_URL, and notes about keeping MEILI_MASTER_KEY, cvsa, and password consistent with .env.docker).
    • Updated required external service versions: PostgreSQL 18, Redis 7, MeiliSearch 1.40.
    • Clarified Docker Compose usage and added instructions for starting services on a remote host (docker-compose-remote.yml and copying .env.docker).
    • General wording and container-count corrections.
  • 404 / Not-found improvements:
    • Added Next.js metadata export for the docs 404 page (apps/docs/app/not-found.tsx) including noindex via robots and updated localized content/layout.
    • Added og:title to the not-found Markdown pages (not-found.md, not-found.en.md). (A prior fix removed an empty og:image entry.)
  • Site-level SEO and PWA assets:
    • Added robots.txt (apps/docs/public/robots.txt).
    • Added sitemap.xml (apps/docs/public/sitemap.xml) and updated build script to generate sitemap after static export.
    • Updated site.webmanifest (apps/docs/public/site.webmanifest): set name and short_name.
  • Next.js metadata refactor:
    • Replaced hardcoded <title> usage by using Next.js Metadata API in landing layout (apps/docs/app/(landing)/layout.tsx) and enhanced generateMetadata in the page route (apps/docs/app/(docs)/[lang]/[[...slug]]/page.tsx) to include canonical/alternates, Open Graph, and Twitter card fields.
  • Additional docs and tooling:
    • Added a Git commit message specification and Trae commit message rules (.trae/rules/git-commit-message.md) to enforce commit format and allowed types.
  • Miscellaneous documentation edits:
    • Minor punctuation and description fixes across several legacy/internal docs (e.g., trailing punctuation adjustments).
  • Summary of risk/effort:
    • Mostly documentation and metadata updates — low to medium review effort. Files updating build/metadata behavior (Next.js metadata exports, sitemap/robots additions, not-found component) warrant a quick functional check in the docs preview/build.

Review Change Stack

Aibeto added 3 commits May 16, 2026 17:56
add redis and meilisearch env config examples, update required services list, add notes about remote docker compose and env customization
Standardized OG title metadata by adding the 'Project CVSA' prefix across all docs, fixed trailing punctuation on select pages, and improved SEO presentation and formatting consistency.
revise the notes about manual env config and variable consistency requirements
@coderabbitai

coderabbitai Bot commented May 16, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@Aibeto has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 28 minutes and 28 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: bf24377b-7c21-4439-9b67-6586a3b9dbe6

📥 Commits

Reviewing files that changed from the base of the PR and between 1bca05c and 765b4aa.

📒 Files selected for processing (2)
  • .trae/rules/git-commit-message.md
  • apps/docs/app/sitemap.ts
📝 Walkthrough

Walkthrough

Documentation pages receive standardized Open Graph metadata (og:title fields). The developer guide is expanded with environment/service setup details (Postgres 18, Redis 7, MeiliSearch 1.40, MEILI_API_URL, REDIS_URL, config consistency, remote Docker Compose). App-level metadata, landing layout, NotFound page, robots/manifest/sitemap, and a Trae commit message rule are added/updated.

Changes

Documentation metadata and setup

Layer / File(s) Summary
Developer guide setup improvements
apps/docs/content/internal/developers/guide.md
Frontmatter adds og:title. Setup section expanded with MEILI_API_URL and REDIS_URL guidance, Redis 7 + MeiliSearch 1.40 + PostgreSQL 18 requirements, config consistency notes, and remote Docker Compose instructions.
Open Graph metadata additions to docs
apps/docs/content/internal/developers/*, apps/docs/content/internal/*, apps/docs/content/internal/legacy/*, apps/docs/content/not-found.*, apps/docs/content/not-found.en.md
Multiple docs and meta JSON files now include og:title entries for Open Graph/social previews; several legacy pages have minor description punctuation edits.
App metadata, layout, and NotFound changes
apps/docs/app/(docs)/[lang]/[[...slug]]/page.tsx, apps/docs/app/(landing)/layout.tsx, apps/docs/app/not-found.tsx
generateMetadata returns richer Open Graph/Twitter/alternates (including canonical); landing layout exports typed metadata and removes inlined <title>; NotFound exports metadata and updates page JSX and robots directives.
Public assets: robots, manifest, sitemap
apps/docs/public/robots.txt, apps/docs/public/site.webmanifest, apps/docs/public/sitemap.xml
Add robots.txt (allow / + sitemap), populate site.webmanifest name/short_name and pretty-print JSON, and add a full sitemap.xml with timestamps and priorities.
Trae commit message rule
.trae/rules/git-commit-message.md
New rule document specifying commit message format and allowed types.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • project-cvsa/cvsa#29: Related edits to the developer guide (apps/docs/content/internal/developers/guide.md) and onboarding content.
  • project-cvsa/cvsa#34: Overlaps on environment/test setup guidance for the developer guide.
  • project-cvsa/cvsa#56: Related addition of a commit message/conventional commits rule (Trae configuration).

Suggested reviewers

  • alikia2x
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch update/aibeto-docs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (1)
apps/docs/content/internal/developers/guide.md (1)

60-60: ⚡ Quick win

Clarify env key names instead of literal values.

Line 60 mixes variable name (MEILI_MASTER_KEY) with literal values (cvsa, password), which is ambiguous. Please name the exact env keys to keep in sync (e.g., DB user/password/db name keys in .env.docker).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/docs/content/internal/developers/guide.md` at line 60, The sentence
currently mixes an env variable name (MEILI_MASTER_KEY) with literal credentials
(cvsa, password); update the text to reference the actual environment variable
keys that must match `.env.docker` (e.g., DB_USER, DB_PASSWORD, DB_NAME or
whatever keys are used there) and state that MEILI_MASTER_KEY and those specific
env keys in `.env.docker` must be kept in sync, so readers know which variables
to change rather than literal values.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/docs/content/internal/developers/crawler/overview.md`:
- Line 4: Update the social preview meta so it follows the new global prefix
convention: replace the existing line "og:title: 新爬虫架构概览" with the prefixed
title used across pages (e.g. "og:title: Project CVSA - 新爬虫架构概览") so the
og:title meta matches other updated pages; modify the "og:title" line in this
document accordingly.

In `@apps/docs/content/internal/developers/guide.md`:
- Line 4: The og:title meta value currently contains a duplicated word ("开发") —
update the og:title entry (the "og:title" meta line) to remove the extra "开发" so
it reads "Project CVSA 开发者指南" instead of "Project CVSA 开发开发者指南".
- Around line 64-65: 文本中对服务数量的描述不一致:在“你需要准备一个 PostgreSQL 18 、Redis 7 以及
MeiliSearch 1.40
实例来辅助开发和调试。”之后的句子使用了“这两个容器”,会造成歧义;请将“这两个容器”改为“这三个容器”或改为不带数字的表述(例如“这些容器”),以保持与前句中列举的服务(PostgreSQL
18、Redis 7、MeiliSearch 1.40)一致并消除歧义。

In `@apps/docs/content/internal/legacy/crawling-lifecycle.md`:
- Line 4: Update the og:title metadata value to match the standardized "Project
CVSA …" pattern by replacing the current line `og:title: 一次完整爬取的生命周期` with the
unified format (for example `og:title: Project CVSA — 一次完整爬取的生命周期`), editing the
`og:title` metadata entry in the markdown header so social preview titles are
consistent.

In `@apps/docs/content/not-found.md`:
- Line 4: The frontmatter contains an empty og:image value which is likely
accidental; either remove the empty og:image key, replace it with a valid
absolute image URL (a publicly accessible Open Graph image) or, if you intend to
keep a placeholder, add a clear comment or placeholder value (e.g., a TODO or
placeholder URL) so the intent is explicit; update the og:image entry in the
not-found.md frontmatter accordingly and ensure the URL is reachable and correct
when adding an image.

---

Nitpick comments:
In `@apps/docs/content/internal/developers/guide.md`:
- Line 60: The sentence currently mixes an env variable name (MEILI_MASTER_KEY)
with literal credentials (cvsa, password); update the text to reference the
actual environment variable keys that must match `.env.docker` (e.g., DB_USER,
DB_PASSWORD, DB_NAME or whatever keys are used there) and state that
MEILI_MASTER_KEY and those specific env keys in `.env.docker` must be kept in
sync, so readers know which variables to change rather than literal values.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 8a393ab0-99ed-43da-8019-664ff5ab9580

📥 Commits

Reviewing files that changed from the base of the PR and between 829c8d9 and ba6bb44.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (21)
  • apps/docs/content/internal/developers/architecture.md
  • apps/docs/content/internal/developers/crawler/meta.json
  • apps/docs/content/internal/developers/crawler/overview.md
  • apps/docs/content/internal/developers/guide.md
  • apps/docs/content/internal/developers/meta.json
  • apps/docs/content/internal/developers/style-guide.md
  • apps/docs/content/internal/developers/workflow.md
  • apps/docs/content/internal/index.md
  • apps/docs/content/internal/legacy/architecture-overview.md
  • apps/docs/content/internal/legacy/crawling-lifecycle.md
  • apps/docs/content/internal/legacy/database-schema-reference.md
  • apps/docs/content/internal/legacy/message-queue-reference.md
  • apps/docs/content/internal/legacy/meta.json
  • apps/docs/content/internal/legacy/network-proxy-architecture.md
  • apps/docs/content/internal/legacy/snapshot-execution.md
  • apps/docs/content/internal/legacy/snapshot-scheduling.md
  • apps/docs/content/internal/legacy/song-collection-pipeline.md
  • apps/docs/content/internal/legacy/video-discovery-pipeline.md
  • apps/docs/content/internal/meta.json
  • apps/docs/content/not-found.en.md
  • apps/docs/content/not-found.md

---
title: 新爬虫架构概览
description: CVSA 2.0 爬虫系统的总体设计、核心设计目标与节点角色定义
og:title: 新爬虫架构概览

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Align og:title with the new global prefix convention.

Line 4 uses 新爬虫架构概览, while other updated pages use Project CVSA .... This creates inconsistent social preview titles.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/docs/content/internal/developers/crawler/overview.md` at line 4, Update
the social preview meta so it follows the new global prefix convention: replace
the existing line "og:title: 新爬虫架构概览" with the prefixed title used across pages
(e.g. "og:title: Project CVSA - 新爬虫架构概览") so the og:title meta matches other
updated pages; modify the "og:title" line in this document accordingly.

---
title: 开发者指南
description: 了解如何参与档案馆的开发工作。
og:title: Project CVSA 开发开发者指南

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix duplicated wording in og:title.

Line 4 currently has Project CVSA 开发开发者指南; 开发 is duplicated and will surface in social previews.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/docs/content/internal/developers/guide.md` at line 4, The og:title meta
value currently contains a duplicated word ("开发") — update the og:title entry
(the "og:title" meta line) to remove the extra "开发" so it reads "Project CVSA
开发者指南" instead of "Project CVSA 开发开发者指南".

Comment thread apps/docs/content/internal/developers/guide.md Outdated
title: 一次完整爬取的生命周期
description: 从视频发现到成就追踪的全流程示例,展示爬虫系统如何处理一个新视频的完整生命周期
description: 从视频发现到成就追踪的全流程示例,展示爬虫系统如何处理一个新视频的完整生命周期。
og:title: 一次完整爬取的生命周期

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Unify og:title format with the rest of docs metadata.

Line 4 uses a different pattern from the standardized Project CVSA … format used in this PR cohort. Please align it to keep social preview titles consistent.

Suggested fix
-og:title: 一次完整爬取的生命周期
+og:title: Project CVSA 一次完整爬取的生命周期
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
og:title: 一次完整爬取的生命周期
og:title: Project CVSA 一次完整爬取的生命周期
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/docs/content/internal/legacy/crawling-lifecycle.md` at line 4, Update
the og:title metadata value to match the standardized "Project CVSA …" pattern
by replacing the current line `og:title: 一次完整爬取的生命周期` with the unified format
(for example `og:title: Project CVSA — 一次完整爬取的生命周期`), editing the `og:title`
metadata entry in the markdown header so social preview titles are consistent.

Comment thread apps/docs/content/not-found.md Outdated
Aibeto added 2 commits May 16, 2026 20:33
1. remove empty og:image field from not-found page
2. correct the count of containers to 3 instead of 2 in dev guide
Enhance documentation site SEO configuration: add robots.txt, refine site manifest, and generate a complete sitemap.
Comment thread apps/docs/public/sitemap.xml Outdated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does it appear here instead of being generated at build time?

Aibeto and others added 6 commits May 16, 2026 22:45
- Add robots.txt and sitemap generation script for search engine discoverability
- Replace hardcoded <title> with Next.js Metadata API on landing page
- Add Open Graph and Twitter Card metadata to landing and docs pages
- Add canonical URLs and JSON-LD structured data
- Add sr-only description text on landing page for search engine indexing
- Remove client-side document.title setting (now handled by Metadata API)
- Improve 404 page with metadata, noindex directive, and homepage link
- Update build script to generate sitemap.xml after static export
add the full git commit message specification rules file to the project
add the full git commit message specification rules file to the project
- Add complete Next.js Metadata configurations to landing page layout components, including titles, descriptions, canonical URLs, multilingual adaptation, Open Graph and Twitter Card information.
- Remove hardcoded title tags in HTML templates and adopt unified metadata configurations instead.
- Revise the main text and footnote notes in the Git commit specification document to use English description requirements.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.trae/rules/git-commit-message.md:
- Around line 10-16: Update the commit message template placeholders from
Chinese to English: replace occurrences of "<类型>(<作用域>): <描述>" with
"<type>(<scope>): <description>", change "[正文(英文描述)]" to "[body]" and
"[脚注(英文描述)]" to "[footer]", and remove the "(英文描述)" annotations so the template
uses consistent English placeholders (look for the template block containing
those placeholder tokens).

In `@apps/docs/app/`(docs)/[lang]/[[...slug]]/page.tsx:
- Around line 86-95: The canonical/alternate URL construction uses url =
`${baseUrl}/${lang}/${currentPage}` and yields an extra trailing segment when
currentPage is empty; change the URL assembly to omit the "/{currentPage}"
portion for root pages (e.g., compute a normalized segment like currentPage ?
`/${currentPage}` : '' and use `${baseUrl}/${lang}${normalizedSegment}`) and
apply the same normalization for alternates.languages entries so root docs use
`${baseUrl}/en` and `${baseUrl}/zh` (no extra trailing segment).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: c19dfd30-5fe5-405e-b603-a6aa27f65681

📥 Commits

Reviewing files that changed from the base of the PR and between ba6bb44 and 1bca05c.

📒 Files selected for processing (9)
  • .trae/rules/git-commit-message.md
  • apps/docs/app/(docs)/[lang]/[[...slug]]/page.tsx
  • apps/docs/app/(landing)/layout.tsx
  • apps/docs/app/not-found.tsx
  • apps/docs/content/internal/developers/guide.md
  • apps/docs/content/not-found.md
  • apps/docs/public/robots.txt
  • apps/docs/public/site.webmanifest
  • apps/docs/public/sitemap.xml
✅ Files skipped from review due to trivial changes (3)
  • apps/docs/public/robots.txt
  • apps/docs/public/sitemap.xml
  • apps/docs/content/not-found.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/docs/content/internal/developers/guide.md

Comment on lines +10 to +16
```text
<类型>(<作用域>): <描述>

[正文(英文描述)]

[脚注(英文描述)]
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Template placeholders should use English to match the requirement.

The template on line 11 uses Chinese placeholders (<类型>(<作用域>): <描述>), but line 8 requires all commit messages to be in English. This inconsistency could confuse developers about what language to use.

Consider updating the template to use English placeholders for clarity:

 ```text
-<类型>(<作用域>): <描述>
+<type>(<scope>): <description>
 
-[正文(英文描述)]
+[body]
 
-[脚注(英文描述)]
+[footer]

The "(英文描述)" annotations on lines 13 and 15 would also become unnecessary with this change.

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.trae/rules/git-commit-message.md around lines 10 - 16, Update the commit
message template placeholders from Chinese to English: replace occurrences of
"<类型>(<作用域>): <描述>" with "(): ", change "[正文(英文描述)]"
to "[body]" and "[脚注(英文描述)]" to "[footer]", and remove the "(英文描述)" annotations
so the template uses consistent English placeholders (look for the template
block containing those placeholder tokens).


</details>

<!-- fingerprinting:phantom:triton:puma -->

<!-- This is an auto-generated comment by CodeRabbit -->

Comment on lines +86 to 95
const url = `${baseUrl}/${lang}/${currentPage}`;
return {
title: page.data.title,
description: page.data.description,
alternates: {
canonical: url,
languages: {
zh: `${baseUrl}/zh/${currentPage}`,
en: `${baseUrl}/en/${currentPage}`,
"x-default": `${baseUrl}/en/${currentPage}`,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Normalize root-page canonical/alternate URLs.

At Line 86, when slug is empty, URLs become .../en/ and .../zh/. Keeping root docs URLs normalized (no extra trailing segment) avoids inconsistent canonical signals.

Suggested fix
-	const currentPage = cleanSlug.join("/");
-	const url = `${baseUrl}/${lang}/${currentPage}`;
+	const currentPage = cleanSlug.join("/");
+	const slugPath = currentPage ? `/${currentPage}` : "";
+	const url = `${baseUrl}/${lang}${slugPath}`;
 	return {
@@
 		alternates: {
 			canonical: url,
 			languages: {
-				zh: `${baseUrl}/zh/${currentPage}`,
-				en: `${baseUrl}/en/${currentPage}`,
-				"x-default": `${baseUrl}/en/${currentPage}`,
+				zh: `${baseUrl}/zh${slugPath}`,
+				en: `${baseUrl}/en${slugPath}`,
+				"x-default": `${baseUrl}/en${slugPath}`,
 			},
 		},
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/docs/app/`(docs)/[lang]/[[...slug]]/page.tsx around lines 86 - 95, The
canonical/alternate URL construction uses url =
`${baseUrl}/${lang}/${currentPage}` and yields an extra trailing segment when
currentPage is empty; change the URL assembly to omit the "/{currentPage}"
portion for root pages (e.g., compute a normalized segment like currentPage ?
`/${currentPage}` : '' and use `${baseUrl}/${lang}${normalizedSegment}`) and
apply the same normalization for alternates.languages entries so root docs use
`${baseUrl}/en` and `${baseUrl}/zh` (no extra trailing segment).

replace static sitemap file with dynamic Next.js sitemap generation, remove old sitemap.xml
@Aibeto Aibeto closed this Jun 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants