别吵了:Markdown 负责“存”,HTML 负责“秀”
你可能也见过这种争论:
- “写文档就该用 Markdown,HTML 太重。”
- “要上网页就得 HTML,Markdown 太简陋。”
听着像站队,其实没必要。
更好用的思路很简单:
- Markdown 用来保存信息(内容源、知识库、教程正文)。
- HTML 用来展示和交互(网页布局、按钮、表单、动效)。
把它俩当成“上下游”就通了,不是“你死我活”。
为什么做 AI 教程时,Markdown 更适合喂给 LLM?
你让模型读内容、改内容、续写内容,Markdown 基本是最省心的格式。
原因很现实:
- 信息密度高:同样一段内容,Markdown 几乎全是“有效文本”。
- 结构清楚:标题、列表、代码块,模型一眼能看懂层级。
- token 更省:HTML 一堆标签、属性、嵌套,白白烧 token。
举个常见场景:
你把一篇教程丢给模型,让它“把第 3 节改得更易懂,并补 2 个例子”。
- Markdown:模型能直接定位
##和列表,改得又快又稳。 - HTML:模型要在
<div><section><p>里钻来钻去,还要担心把标签搞坏。
你想的是“改文案”,模型却在“修 DOM”。这就很烦。
为什么别指望 LLM 一次性生成一个“大而全的 HTML”?
很多人踩过这个坑:
“我让 AI 给我生成一个完整页面(带布局、样式、交互),结果不是缺一半,就是结构乱成麻花。”
问题不在你不会写 prompt,而是 HTML 天生就臃肿:
- 标签嵌套深,一不小心就漏闭合
- 属性一多,模型容易丢细节
- 代码越长,越容易前后不一致
更关键的是:页面不是一个整体文件,页面是模块的组合。
你现在看到的很多“AI 生成 HTML 看起来不错”,背后通常是:
- 用 React/Vue/组件化拆成小块
- 每块交给模型生成或补全
- 再由工程化工具拼起来
一句话:
大模型更擅长做“模块”,不擅长徒手捏一个巨型 HTML 文件。
一套更舒服的工作流:Markdown 做内容源,前端负责渲染
想让你每天少加班一小时,这套流程很管用:
1)内容统一用 Markdown 管
你可以把它当“单一事实来源”(Single Source of Truth):
- 教程正文:
docs/*.md - 代码示例:代码块
- 注意事项:列表
- 配图:引用图片
你要改内容,就改 Markdown。
2)展示层交给渲染器(别硬写 HTML)
把 Markdown 转成 HTML 的方式很多:
- 静态站:VitePress / Docusaurus / MkDocs
- Next.js:
next-mdx-remote/ MDX - 任意后端:Markdown 渲染库 + 模板
你得到的是:
- 内容可读
- 页面可控
- 样式统一
- 交互该怎么做就怎么做(React 组件、按钮、折叠面板都行)
3)需要“交互块”?用组件嵌进去
比如教程里要一个“复制按钮”“可折叠答案”“在线运行区”。
别让模型写一坨 HTML。
你要做的是:
- 写一个 React 组件
CodeRunner.tsx - Markdown 里用 MDX 引用:
<CodeRunner code={`print("hello")`} />
内容归内容,交互归交互。清爽!😄
给 LLM 的输入输出建议(照抄就能用)
你要模型写教程内容,建议直接规定它输出 Markdown。
Prompt 模板(写教程)
请用 Markdown 输出一篇教程,包含:
- 标题
- 导语(3~5 句短句)
- 分段小标题(##)
- 要点列表
- 示例代码块
- 避坑清单
语言口语化,段落短。
Prompt 模板(改写某一节)
下面是教程的一个章节(Markdown)。
请只改写这一章:更口语、更短句,并补充 2 个更贴近实战的例子。
不要改变原有的小标题层级。
这种写法,模型输出更稳定,你也更好拼进文档系统。
避坑清单:这些操作真的很浪费时间
- ❌ 把 HTML 当“内容格式”存起来:后面改文案会崩溃。
- ❌ 让模型生成整页 HTML + CSS + JS:越长越不可信,返工率爆炸。
- ❌ 不做模块拆分:一个大文件交给 AI,结果只能祈祷。
- ❌ Markdown 里硬塞一堆内联样式:看着像能跑,维护像噩梦。
你该怎么选?一句话就够
- 你要写、存、改、喂给 LLM:用 Markdown。
- 你要上线页面、做样式、做交互:用 HTML(或组件化框架)。
别纠结站队。
把 Markdown 当“内容数据库”,把 HTML/React 当“展示机器”。这才是顺手的组合。