AI 辅助 MDX 模板设计:10 个版式模式

用 Claude 或 Codex 设计真正贴合你内容的 MDX 文章模板——10 个可复用版式模式、每种适合什么场景,以及能让 LLM 出干净组件而非样式糊汤的 prompt 结构。

AI 生成的 MDX 模板大多一开始很漂亮,写到第 30 篇就难看了——一次性组件太多、间距不统一、版式跟内容打架。这篇给 10 个能扛到 1000+ 篇的版式模式,以及让 LLM 干净产出的 prompt 结构。

背景

MDX 是 Markdown 加组件,所以一个文章模板本质上就两个决定:哪些 Markdown 元素做全局样式,哪些专门组件对外暴露。AI 这两件都能做好,前提是你给它约束。让它”设计一个漂亮的文章模板”,出来就是渐变背景加 Tailwind 糊汤。给它一份固定组件清单加一篇内容样本,出来的东西真的能维护。下面 10 个模式是我们一个 1200 篇双语站正在用的。

模板漂移的成本是非线性的。50 篇时不一致还像”差一口气的修饰”。500 篇时每次漂移都要改几百个文件。1000+ 篇之后就停止 refactor 转而用样式覆盖绕过去——这是最差的中间状态。词汇表早定。

怎么判断你需要这个

  • 在搭新内容站,或想刷一遍老站的版式。
  • 当前模板每篇文章里有 6+ 个临时样式 div,自己都在反复调。
  • 新作者(或 AI)每次都自创标题层级,因为模板没有清晰词汇表。
  • 想用同一套模板撑教程、故障排查、清单、评测四类内容。

一句话结论

从下面 10 个里挑 5-7 个核心模式。每种定义成一个组件(或标准 HTML 元素上的 CSS 类)。禁止其他临时样式块。让 AI 在这个固定词汇表里生成文章,而不是每篇自创新形状。

10 个模式

  1. 步骤清单——带粗体起手短语的有序列表。用普通 <ol><strong> 首句即可。不需要专门组件。
  2. 对比表——最多 3 列(选项、何时用、何时不用)。普通 Markdown 表格,全局加斑马纹和小写大写体头。
  3. 决策树——带条件缩进的列表。嵌套最多 2 层,更深就单独开一节。
  4. 结论盒——单段 <aside>,左侧边线样式。每篇文章靠前位置只放一个。
  5. 带说明的代码块——code block 紧跟一行斜体说明。不需要专门组件,用 CSS 兄弟选择器。
  6. 诊断表——症状 - 原因 - 修法,三列 Markdown 表格。故障排查类必用。
  7. 行内复选清单——- [ ] 任务列表。「开始前准备」一类章节常用。
  8. 引用块——真实的平台报错或拒绝原因截图文字。样式做成 callout,不是普通 blockquote。
  9. 对比示例——Bad / Good 代码或文本对。用 text code block 加 Bad: / Good: 前缀就行,越简单越好。
  10. 相关链接组——## 相关 下的 3-6 条链接,总是在末尾,每篇形状一致。

让 LLM 出干净输出的 prompt 结构

给模型三样:固定模式清单、一篇真实 MDX 样本、新文章选题。用下面约束锚定 prompt:

- 只用列出的 10 个模式。不要发明新组件或样式 div。
- 标题:只用 ## 层级,内容确实超 4 个子节再用 ###。
- 不用 emoji,不用感叹号,不用营销腔。
- 首段:2-3 句,无标题。
- 末节始终是 "## 相关",含 3-6 条链接。
- 语气和样本文一致。

不挂样本文章,模型会在它训练数据上做平均,出来的就是通用 SaaS 博客腔。挂上样本,它会模仿你的风格——通常好到每篇 10 分钟微调就能用。

怎么强制执行词汇表

  • 写一个 lint 脚本扫所有 MDX:数 ## 标题数、检查末节是不是 ## 相关、标记 allowlist 之外的组件、标记正文里的裸 <div> 标签。
  • lint 挂到 prebuild。文件失败就 build 失败。这是 1000 篇文章保持齐整最便宜的办法。
  • 新文章 PR 附一份小清单:用了 10 个模式里的哪几个,没用哪几个,为什么。
  • 留一个 examples/ 目录,每个模式一份 MDX 当作活文档。AI 生成新内容时能读到。

老模板迁移

  • 盘点现有所有文章里用到的组件。多数老模板有 30+ 个组件,一半只出现一次。
  • 把每个现有组件映射到 10 个模式里的一个,或标记删除。目标 5:1 缩减。
  • 跑一遍 codemod,把废弃组件替换成标准等价物。给 AI 3-5 个 before/after 例子,让它写 codemod 很容易。
  • 50-100 篇一批迁。每批 build 一次;一篇意外炸了通常是 codemod 漏了某个边角情况。

容易踩的坑

  • 让模型为「视觉多样性」自创新组件。多样性会杀掉一致性。模式清单本身就是多样性。
  • 让模型「设计一个漂亮的模板」无约束。出来是渐变 + 动效 + 三种字体。
  • 生成的组件没在 MDX 里实测。有些库会破坏 MDX 的花括号——先在一篇文章里跑通。
  • 跳过样本文章。模型默认套用它训练集里流行的博客模板,不是你的风格。
  • 每节之间加装饰性分隔线(---)。MDX 渲染成 <hr>,纯视觉噪声没信息量。

常见问答

  • 能让模型直接设计组件吗?: 第一版可以。最终样式自己来或者跟设计师配模型。AI 提形状还行,挑间距和配色不行。
  • 怎么防止 1000 篇里模板漂移?: 每个 MDX 文件 lint:标题层级对不对、末节是不是 ## 相关、有没有用 allowlist 外的组件。30 行脚本能挡住 90% 的漂移。
  • EN 和 ZH 能共用一套模板吗?: 能。间距、字体栈、行高定义一次。中文版通常需要更紧的行高和不同的字体回退;其他完全一致。
  • 暗色模式怎么处理?: 定义语义色变量(background, foreground, muted, accent),组件全部用变量。绝不在组件里硬编颜色。
  • 要不要用 shadcn 还是自己写?: 文章为主的内容站自己写。shadcn 适合应用 UI,文章站用它多余。200 行 CSS 加 5 个组件比挂一个组件库强。
  • 代码高亮怎么处理?: 用构建期的 Shiki,不要浏览器期的 Prism。Shiki 不往客户端发任何 JS,渲染效果完全一样。配两套主题(明、暗),用 CSS 变量切换。
  • 需要 MDX provider 注册全局组件吗?: 看实际复用度。Aside Callout 之类跨多文件用的组件再考虑。5 个组件的小词汇表,每文件 import 就行,build 更简单。
  • MDX 里怎么处理响应式?: 响应式全放在 layout 层,MDX 里不要。文章正文就是 Markdown + 组件。外面的容器 layout 决定断点、流式字号、间距。
  • 模板要不要做版本?: 非正式地做。大改动记到 CHANGELOG.md,知道哪些文章是在 v1 写的、哪些是在 v2 写的。排查老文章样式异常时帮助大。

相关

标签: #独立开发 #ai-assisted #building #MDX