面向多语言 MDX 站点的 Git 化 CMS
英语内容作为 MDX 文件存在于代码库中。AI 翻译作为 SQLite 文件与它们并排存放。Zod 负责验证两者,带类型的运行时在构建时读取所有内容。无需 CMS 服务器,在请求时也没有网络延迟。
pnpm add scribe-cms zod better-sqlite3工作原理
- 1
定义 Schema
内容类型即 Zod Schema。你可指定哪些字段需要翻译,哪些仅保留英语,以及文档之间如何相互引用。
// scribe.config.ts defineContentType({ id: "blog", path: "/blog/{slug}", slugStrategy: "localized", schema: z.object({ title: field.translatable(z.string().min(1)), description: field.translatable(z.string().min(50)), author: field.relation("author"), heroImage: field.structural(z.string().optional()), }), }); - 2
编写内容
每篇文档对应一个 MDX 文件,直接提交至代码库。文件名即英语的 Slug,而 Frontmatter 则会根据 Schema 进行验证。
--- title: "Hello, world" description: "A first post that says hello to the world." author: jane publishedAt: "2026-01-15" --- The body is MDX. **Markdown** and <Components /> both work. - 3
增量翻译
待翻译内容会被哈希化,因此只有缺失或过期的页面才会发送至 Gemini,并通过 Batch API 享受半价 Token 优惠。提示词针对创译进行过优化,产出的文案读起来就像用目标语言原生创作的一样。输出结果在存储前会被解析为 MDX,如果响应有误只会让当前运行失败,而绝不会搞挂你的网站。
export GEMINI_API_KEY=... npx scribe translate --locale fr de --dry-run # show the worklist npx scribe translate --locale fr de # translate, validate, store git add .scribe/store.sqlite # translations live in git - 4
类型安全的读取
运行时将从配置中推断文档类型。列表、查询、关联、hreflang 备用链接及站点地图条目等返回时都自带完整类型。
const scribe = createScribe(config); const posts = scribe.blog.list("fr"); // BlogDoc[] const { document } = scribe.blog.resolve(slug, "fr"); // EN fallback built in const author = scribe.blog.related(document!, "author"); // AuthorDoc const hreflang = scribe.blog.alternates(document!);
功能特性
增量式翻译
翻译与英语源文的哈希值绑定。只需修改一个段落,系统便仅对该文档重新翻译,试运行功能还能提前为你预估成本。
如同原生母语般流畅
专为创译打造的提示词:以母语级文案的口吻重建地道表达,坚决摒弃逐字死板翻译。
入库前验证
每份翻译在入库前不仅会当作 MDX 进行解析,还会再度接受 Zod Schema 的校验。就算大模型出错也仅会导致命令失败,而绝不会影响线上生产环境。
端到端类型安全
Zod Schema、推断出来的文档类型,通通不需要代码生成。关系返回时已解引用且类型完备。
内联占位符 (Inline tokens)
直接在正文中嵌入链接、素材和不可译字符串。只需修改一次占位符,所有语言版本即可瞬间同步更新,毫无重新翻译之需。
内置 SEO 优化
全面支持 hreflang、带 x-default 的站点地图、Canonical 标签、noindex、JSON 重定向规则及本地化降级链。
一切皆在 Git 中
MDX 文件加上一个提交的 SQLite 库。快照功能会记录每份翻译的源文,scribe 历史记录则会为你展示清晰的时间线。
无服务器负担
所有数据均在构建时从磁盘读取,完美兼容 Next.js、Astro 或任何 Node 技术栈。配合本地 Studio 更能让你快速浏览、搜索并一目了然地掌握翻译进度。
AI 优先的底层架构
Agent 能用处理代码的同款工具去读取并编辑 MDX,每一次更改都会生成差异比对供你审查。大模型和内容之间没有任何复杂的 API 隔阂。
开源构建
scribe-cms 采用 MIT 协议并在 GitHub 上进行开发。本站正是基于它搭建而成。此处的每一页均由 scribe 驱动,背后是一个承载十种语言的受控 SQLite 库。欢迎阅读源码、提交 Issue 或发起 Pull Request。