diff --git a/components/china/ChinaLanding.tsx b/components/china/ChinaLanding.tsx
new file mode 100644
index 000000000..c2c74ef3d
--- /dev/null
+++ b/components/china/ChinaLanding.tsx
@@ -0,0 +1,405 @@
+"use client";
+
+import { motion } from "framer-motion";
+import { Card, CardContent } from "@/components/ui/card";
+import { Button } from "@/components/ui/button";
+import { ProductUpdateSignup } from "@/components/productUpdateSignup";
+import { Background } from "@/components/Background";
+import { getGitHubStars } from "@/lib/github-stars";
+import { DOCKER_PULLS, SDK_INSTALLS_PER_MONTH } from "@/components/home/Usage";
+import {
+ BookOpen,
+ CalendarDays,
+ CloudCog,
+ Globe,
+ Handshake,
+ Rocket,
+ Users,
+} from "lucide-react";
+
+const valueProps = [
+ {
+ icon: BookOpen,
+ enTitle: "Open Source by Default",
+ zhTitle: "开源基因",
+ enDescription:
+ "Fully open source and transparent. Easy to inspect, extend, and integrate with your existing AI stack.",
+ zhDescription:
+ "Langfuse 走的是 OSS 路线,代码透明、可二开,接入现有 AI 技术栈成本低。",
+ },
+ {
+ icon: CloudCog,
+ enTitle: "Self-Hosted Ready",
+ zhTitle: "私有化部署友好",
+ enDescription:
+ "Deploy on your own infrastructure for stronger data control, enterprise security, and local compliance.",
+ zhDescription:
+ "支持私有化/自托管部署,数据可控,安全与合规更容易落地。",
+ },
+ {
+ icon: Users,
+ enTitle: "Strong China Momentum",
+ zhTitle: "国内落地规模持续增长",
+ enDescription:
+ "Already widely used by Chinese teams and enterprises running production AI applications.",
+ zhDescription:
+ "在国内,越来越多团队把 Langfuse 用在生产环境,覆盖评测、调试、观测等关键链路。",
+ },
+ {
+ icon: Handshake,
+ enTitle: "ClickHouse Ecosystem",
+ zhTitle: "与 ClickHouse 深度协同",
+ enDescription:
+ "Langfuse is part of ClickHouse. ClickHouse has a local business in China, collaborates with Alibaba, and is increasing market investment.",
+ zhDescription:
+ "Langfuse 已纳入 ClickHouse 体系。ClickHouse 在中国有本地团队,并与阿里云生态合作,市场投入持续加码。",
+ },
+];
+
+const stats = [
+ {
+ getValue: () => (getGitHubStars() / 1000).toFixed(0) + "K+",
+ en: "GitHub Stars",
+ zh: "GitHub 星标",
+ },
+ {
+ getValue: () => (SDK_INSTALLS_PER_MONTH / 1_000_000).toFixed(0) + "M+",
+ en: "SDK Installs / Month",
+ zh: "每月 SDK 安装量",
+ },
+ {
+ getValue: () => (DOCKER_PULLS / 1_000_000).toFixed(0) + "M+",
+ en: "Docker Pulls",
+ zh: "Docker Pull",
+ },
+];
+
+const marketItems = [
+ {
+ icon: CalendarDays,
+ enTitle: "Upcoming China-Focused Events",
+ zhTitle: "中国市场活动与线下交流",
+ enDescription:
+ "Upcoming: May 17 Shanghai Meetup, June 9 joint workshop with MongoDB and AWS, June 17 AWS Summit Hong Kong, and June 23-24 AWS Shanghai Summit.",
+ zhDescription:
+ "近期我们会在多场活动中分享 Langfuse + ClickHouse 的 Agent Observability 实践:5 月 17 日上海 Meetup、6 月 9 日与 MongoDB/AWS 联合工作坊、6 月 17 日香港 AWS Summit、6 月 23-24 日上海 AWS Summit。",
+ },
+ {
+ icon: Globe,
+ enTitle: "Localization & User Connection",
+ zhTitle: "本地化内容与开发者连接",
+ enDescription:
+ "We are investing in Chinese-language content, local channels, and direct feedback loops with users in China.",
+ zhDescription:
+ "我们会持续做中文内容、线上社群和线下交流,直接听一线开发者与企业用户的反馈。",
+ },
+ {
+ icon: Rocket,
+ enTitle: "Future Offerings",
+ zhTitle: "后续产品与合作机会",
+ enDescription:
+ "Subscribers hear first about meetups, local partnerships, and potential future offerings in China.",
+ zhDescription:
+ "订阅邮件列表后,你会优先收到活动邀请、本地合作进展,以及面向中国市场的后续产品/商业化信息。",
+ },
+];
+
+function SectionHeading({
+ enTitle,
+ zhTitle,
+ enSubtitle,
+ zhSubtitle,
+}: {
+ enTitle: string;
+ zhTitle: string;
+ enSubtitle: string;
+ zhSubtitle: string;
+}) {
+ return (
+
+
+ {zhTitle}
+
+
{enTitle}
+
+ {zhSubtitle}
+
+
+ {enSubtitle}
+
+
+ );
+}
+
+export function ChinaLanding() {
+ return (
+ <>
+
+
+
+ 🇨🇳
+
+
+ 🧧
+
+
+ 🐉
+
+
+ 🚀
+
+
+
+
+ 开源可观测性在中国 / Langfuse in China
+
+
+
+ Langfuse 在中国
+
+
+
+ Langfuse in China
+
+
+
+ Langfuse 在中国已经有不少真实落地案例。我们正在持续加大本地投入,做更好的中文内容、活动和用户连接。
+
+
+ Langfuse is already widely used in China. We are investing more in localization, local engagement, and market presence together with ClickHouse.
+
+
+
+
+
+ 加入中国邮件列表 / Join the China Mailing List
+
+
+
+
+
+
+
+
+
+
+
+ {valueProps.map((prop, index) => (
+
+
+
+
+
+ {prop.zhTitle}
+
+
+ {prop.enTitle}
+
+
+ {prop.zhDescription}
+
+
+ {prop.enDescription}
+
+
+
+
+ ))}
+
+
+
+
+
+
+ 广泛采用,持续增长
+
+
+ 全球开源社区验证,国内采用持续增长
+
+
+
+ {stats.map((stat, index) => (
+
+
+ {stat.getValue()}
+
+
+ {stat.zh}
+
+ {stat.en}
+
+ ))}
+
+
+
+
+
+
+
+
+ {marketItems.map((item, index) => (
+
+
+
+
+
+ {item.zhTitle}
+
+
+ {item.enTitle}
+
+
+ {item.zhDescription}
+
+
+ {item.enDescription}
+
+
+
+
+ ))}
+
+
+
+
+
+ 📬
+
+
+
+ 订阅中国动态,第一时间了解 Langfuse 在中国
+
+
+ Be the first to hear updates in China
+
+
+ 订阅后可获取活动信息、中文内容更新、用户案例,以及后续产品与合作进展。
+
+
+ Get notified about events, localization progress, user meetups, and potential future offerings from Langfuse + ClickHouse in China.
+
+
+
+ 您可随时取消订阅。 / You can unsubscribe at any time.
+
+
+
+
+
+ >
+ );
+}
diff --git a/components/china/index.tsx b/components/china/index.tsx
new file mode 100644
index 000000000..877371cdd
--- /dev/null
+++ b/components/china/index.tsx
@@ -0,0 +1 @@
+export { ChinaLanding } from "./ChinaLanding";
diff --git a/content/marketing/china.mdx b/content/marketing/china.mdx
new file mode 100644
index 000000000..a21b54fa5
--- /dev/null
+++ b/content/marketing/china.mdx
@@ -0,0 +1,7 @@
+---
+title: "Langfuse 在中国 - Langfuse in China"
+---
+
+import { ChinaLanding } from "@/components/china";
+
+
diff --git a/content/marketing/meta.json b/content/marketing/meta.json
index 5c06bac96..24c2fa441 100644
--- a/content/marketing/meta.json
+++ b/content/marketing/meta.json
@@ -4,6 +4,7 @@
"about",
"brand",
"careers",
+ "china",
"cn",
"community",
"cookie-policy",
diff --git a/lib/source.ts b/lib/source.ts
index 53a4360c4..c497b0abe 100644
--- a/lib/source.ts
+++ b/lib/source.ts
@@ -14,29 +14,20 @@ import {
handbook,
marketing,
} from "../.source/server";
-import { CONTENT_DIR_TO_URL_PREFIX } from "./content-dir-map.js";
-
-function baseUrl(contentDir: string): string {
- const prefix = CONTENT_DIR_TO_URL_PREFIX[contentDir];
- if (typeof prefix !== "string") {
- throw new Error(`Missing content-dir-map entry for "${contentDir}"`);
- }
- return prefix === "" ? "" : `/${prefix}`;
-}
export const source = loader({
- baseUrl: baseUrl("docs"),
+ baseUrl: "/docs",
source: docs.toFumadocsSource(),
pageTree: { idPrefix: "docs" },
});
export const selfHostingSource = loader({
- baseUrl: baseUrl("self-hosting"),
+ baseUrl: "/self-hosting",
source: selfHosting.toFumadocsSource(),
pageTree: { idPrefix: "self-hosting" },
});
-const SELF_HOSTING_BASE = baseUrl("self-hosting");
+const SELF_HOSTING_BASE = "/self-hosting";
/** Display names for self-hosting sidebar links to main docs (avoid duplicate "Overview"). */
const SELF_HOSTING_DOC_LINK_NAMES: Record = {
@@ -78,33 +69,33 @@ export function getSelfHostingPageTree(): ReturnType