Claude Code 团队的 Thariq 发布文章《Using Claude Code: The Unreasonable Effectiveness of HTML》(中文翻译看宝玉的这篇: 使用 Claude Code:HTML 难以置信的奇效【译】),带火了AI时代HTML 将取代 Markdown的讨论,HTML比markdown更适合用于输出的格式。
这里有个典型的使用场景,可以让AI在生成内容时,生成带 data-* 属性的 HTML。这样内容本身就具有可检查性,AI高效且省token的发现问题,解决问题。而不需每次检查的时候,反复阅读整个文本。并且不看源码人也看不到~不影响人阅读体验。
这个方案解决了一个关键趋势:输出格式不仅要考虑人怎么读,更要考虑机器(AI)怎么“理解”和“修改”。这个思路的核心就是利用 HTML 的 data-* 属性,给内容打上隐形的、可机读的元数据标签。这个改变看似简单,却可能彻底颠覆AI内容生产的协作方式。
一、Markdown的尴尬:人看得爽,AI读得累
Markdown之所以流行,是因为它简洁、易读、适合人类书写。可当AI成为内容的主要生产者时,问题就暴露了:Markdown本质上是纯文本,没有隐藏的结构化信息。
AI要修改之前生成的内容,必须重新解析整个文本的语义。比如你想让它“把关于成本的段落移到后面”,它得反复阅读全文,靠标题或关键词去猜哪部分是成本。这种模式匹配很脆弱,标题稍微变一下,AI就可能找错。
更致命的是,可能初次生成比生成HTML省token,但是持续修改时,这个过程极度浪费token。每次检查、修改、核查,都要把整篇文档作为上下文传进去,AI才能重新理解。文档越长、修改次数越多,开销就越大。这就像你每次修改一份合同,都要从头到尾逐字重读一遍,而不是直接翻到金额那页。
Markdown 本质是纯文本,没有隐藏的结构化信息。当 AI 需要检查或修改之前生成的内容时,它必须:
- 重新解析整个文本的语义
,比如找出“哪个段落是结论”“哪个数字是预算”。 - 依赖模式匹配
(比如找“## 预算”这个标题),但这很脆弱,万一标题稍有变化就会失败。 - 消耗大量 token
,因为每次都要把整篇文档作为上下文输入,才能定位到要修改的地方。
二、解法:给内容装上“隐形的骨架”
如果AI在生成内容时,就能给每个段落打上只有机器能读懂的标记呢?
HTML的 data-* 属性正是为此而生的。它是HTML的标准扩展机制,浏览器在渲染时会完全忽略它,但程序却能轻松读取。这就好比你在纸质文件上,用隐形墨水写满了编号和标签,人看不见,扫描仪却能一秒定位。
来看一个例子,AI生成的HTML:
<div data-section="intro" data-topic="overview"> <p>这是一篇关于项目规划的文章。</p></div><div data-section="cost" data-topic="budget" data-amount="5000" data-verified="true"> <p>项目预算为 <span data-value="5000">5000</span> 美元。</p></div><div data-section="conclusion" data-depends-on="cost"> <p>综上所述,预算在可控范围内。</p></div>这时候,AI“修改预算”这件事就变成了一行清晰的指令:找到 data-section="cost" 的区块,修改里面的数字。它不再需要阅读理解,不需要猜测,更不需要把整篇文章重新读一遍。内容本身就变成了带有索引的数据库。
此时,AI 的“检查”和“修改”就变成了高效的属性查询,而不是重读全文:
- 快速定位
:要改预算段落,直接查找 data-section="cost",无需理解上下文。 - 省 token
:AI 只需要读取或输出属性值,甚至可以对大量内容只做属性级修改,而不重新传输正文。 - 逻辑验证
:可以写规则“所有 data-verified="false"的段落需要附上来源”,AI 瞬间筛出问题部分。 - 关系追踪
:通过 data-depends-on="cost",AI 知道如果成本变了,结论也必须更新。
这就是 “内容本身就具有可检查性” —— 元数据已经显式声明了内容的身份和属性,AI 就像操作数据库一样操作文档,而不用每次都做复杂的自然语言理解。
关键点在于 data-* 属性是标准的 HTML 特性,浏览器在渲染时完全忽略它们:
- 对人不可见
:读者看到的网页干净整齐,没有任何多余符号。不像 Markdown 里如果用 HTML 注释 <!-- -->来标记,虽然也能隐藏,但很多 Markdown 渲染器在某些环境下会暴露注释,或者干扰导出。 - 对 AI 完全透明
:当需要 AI 处理时,可以直接把这份 HTML 源码传给模型,模型能立刻利用这些结构化提示。
这完美实现了“不看源码人看不到,AI 却能高效工作”。
三、这个思路到底妙在哪里?
1. 检查内容像查字典,而不是读小说
AI可以直接根据属性提取需要核查的部分。比如所有标记了 data-verified="false" 的段落需要补充来源,AI能瞬间筛出,而不用从第一行找起。元数据已经显式声明了内容的身份和属性,验证效率成倍提升。
2. 省token就是省钱省时间
在长文档、多轮修改的场景下,每次只传递属性摘要或只针对特定区块做增删改,而不必每次都传输全文。AI生成时多花的几个标记属性的token,能在后续数十次交互中换来数百倍的节约。这笔账,怎么算都划算。
3. 对人完全不可见,阅读体验零损伤
用浏览器看这份HTML,你看到的只是干净整洁的文字。没有多余的符号,没有乱入的标记,和普通网页毫无区别。这种“所见非所读”的设计,完美平衡了人类阅读和机器处理的双重需求。
4. 让内容关系一目了然
通过属性还能建立内容之间的依赖关系。比如 data-depends-on="cost" 标记了结论依赖于成本数据,当成本更新时,AI能自动触发结论的重新核查。这已经有些像智能协作文档了。
四、哪些场景最适合这个方案?
这套“隐形标记”打法并非万能,但在下面这些场景里,优势会被极度放大:
多轮AI写作与修改长报告、论文、营销文案等需要反复调整的内容。每次修改不用重读全文,通过属性精准定位,极大降低沟通和计算成本。
事实核查与数据验证可以用属性标记具体的数据点:data-fact="GDP" data-year="2023"。核查脚本或AI能自动提取这些数值并与数据库比对,快速生成校验报告。
合规性审查在生成法律、医疗、金融相关文本时,标记 data-compliance="gdpr" 等属性,AI或审核系统能瞬间过滤出需要审查的区域,不必依赖自然语言理解去排查敏感词。
多语言内容管理用 data-lang="en" data-translated="true" 跟踪翻译状态,哪些段落已译、哪些待审一目了然,大幅提升本地化流程的自动化程度。
自动排版与多平台发布通过 data-style="warning-box" 预定义样式,后端渲染系统可直接套用对应的视觉模板,实现内容与呈现的彻底分离,一键输出到Web、PDF、移动端。
多Agent协作流水线多个AI分工协作时(一个写初稿、一个做核查、一个做优化),通过统一的属性规范,它们可以像接力赛一样传递带有元数据的内容,无需反复解析。
五、从文本到容器:一场静悄悄的变革
这个思路的本质,是把输出内容从“待解读的文本”升级为“自描述的容器”。AI在生成时多花一点点力气注入属性,就让后续所有的读取、检查、修改操作变得极度精准和省力。
Markdown诞生于人类作者时代,它轻量、单纯、面向人眼。而当AI成为协作主体时,我们需要一种既能被人流畅阅读,又能让机器高效理解的新格式。HTML加 data-* 属性,或许正是这个时代最优雅的“暗语”。
下一次你让AI写东西时,不妨试试告诉它:“请输出带有 data-section 和 data-topic 属性的HTML。”你可能会发现,人机协作的效率,突然就跳上了一个新台阶。
夜雨聆风