GEO
返回博客
技术 AEO 实施评估

让 AI 更容易提取的干净 HTML:减少 div 嵌套、理顺标题层级、用好数据属性

AI 引擎读取网页时,会先把 HTML 解析成树状结构,剥离为纯文本,再决定是否引用你的内容。本文拆解如何编写便于 AI 检索的干净 HTML:减少 div 嵌套、理顺标题层级、用好语义化标签和数据属性,并附上一份可直接执行的清理清单。

Tenten GEO 团队发布于 2026-03-295 分钟阅读
抽象封面以简洁的光影结构,象征 AI 能够轻松读取网页内容。

先说结论:AI 引擎读取网页时,第一步不是欣赏你的文案写得有多好,而是把 HTML 拆成树状结构,丢弃它判定为噪声的部分,再将剩余内容转换成纯文本或 Markdown。如果页面堆了几十层 div,标题也只是放大加粗的普通文本,那么内容在这一步就可能被切碎,甚至被误判为侧边栏,自然进不了 AI 的参考来源候选名单。干净 HTML 不是工程师的洁癖,而是内容能否被 AI 引用的一道门槛。

关键在于,大多数 AI 引擎不会像浏览器那样完整渲染页面。它们通常采用一套近似 Readability 的提取流程:定位主体内容,剥离导航栏和页脚,把 h1 至 h3 当作骨架,把段落和列表当作正文。你用 CSS 精心设计的视觉层级,它根本看不到;它识别的是 HTML 标签本身呈现出的结构。这也解释了为什么两个视觉效果完全相同的页面,一个反复被引用,另一个无论怎么改文案都进不了答案。

div 嵌套太深,检索器也会迷路

现代前端框架很容易生成“div 汤”:每个元素外面都包一层 div,原本应该连贯呈现的一段说明,最后被埋在八到十层毫无语义的 div 之下。提取器依靠文本密度、标签类型等启发式规则判断“主体内容在哪里”。嵌套越深,再混入按钮、标签等短文本片段,它的判断置信度就越低。结果可能是选错内容区域,也可能把连续段落拆成三个互不相关的片段分别处理。

解决办法并不复杂:用语义化标签包裹主体内容。<main> 表示整个页面最重要的内容,<article> 表示可以独立阅读的文章,<section> 用于划分章节,<figure> 则承载图片及其说明。这些标签相当于直接告诉提取器:“重点在这里。”框架生成的包装层不可能全部清除,但至少要确保主体内容的最外层是 <main> 或 <article>,而不是一个名为 wrapper 的第十二层 div。能用一层语义化标签解决,就不要再套三层 div。

标题层级,就是你替 AI 整理的目录

提取器会把 h1 至 h6 视为整篇内容的目录,并据此分块。分得清楚,AI 才能准确引用某个段落来回答特定问题;分得混乱,整篇文章就会被揉成一团,引用时也容易丢失上下文。真正需要遵守的原则只有三条。

  1. 每个页面只设置一个 h1,通常就是文章标题;其余章节从 h2 开始向下展开。
  2. 不要跳级:h2 下面应接 h3,不要直接跳到 h4;跳级会让提取器误判段落之间的从属关系。
  3. 标题承担的是结构功能,不是视觉样式:想放大某行文字,请使用 CSS。不要为了字号更大就使用 h2,也不要为了 SEO 堆放一批同级标题。

最常见的错误是:整个页面只有一个 h1,其余部分全靠 div 和粗体做成看似标题的“假标题”。在爬虫眼中,这篇文章没有章节,只有一整段连续文本,因此只能整段抓取或整段丢弃。把假标题换成真正的 h2 和 h3,就相当于给 AI 递上一份目录,让它知道每一部分从哪里开始。

杂乱的 div 嵌套与干净的语义化标签在 AI 提取结果中的对比示意图
同一个页面,div 堆砌的内容被切得七零八落,语义化标签中的内容则能被完整提取。

语义化标签与属性:不依赖 CSS,也能让机器理解含义

结构解决的是“能否干净提取”,属性解决的是“提取之后能否看懂”。图片补充 alt,才能在纯文本环境中保留内容;日期使用 <time datetime>,才不会被当作一串含义不明的字符;表格配合 <table> 和 <th>,转换成 Markdown 后仍能保留字段关系;名词与定义用 <dl>、<dt> 和 <dd> 成对组织,模型便能将其提取为一组清晰的问答。ARIA 属性(aria-label、aria-labelledby)原本用于无障碍访问,也能为没有可见文字的元素提供机器可读的含义。

正确使用数据属性:别把它当成魔法

实话实说:大多数 AI 抓取器根本不会读取你自定义的 data-* 属性,因为这些工具并不是为你的私有命名规则设计的。真正得到广泛支持的“数据属性”,都是已有标准的方案,例如 Microdata 的 itemprop、data-nosnippet(用于告知引擎不要把这段内容用作摘要),以及最可靠的机器可读层 JSON-LD。与其发明一堆 data-geo-* 并期待 AI 自行理解,不如把作者、发布日期、价格、FAQ 等可引用的关键事实写入 JSON-LD,让检索结果获得一层不依赖页面布局的事实依据。

当然,data-* 依然有用,只是用途不同。你可以在自有分析系统或内部工具中,用它标记哪些段落适合引用,并追踪哪些内容真的被 AI 提取。它是供你查看的坐标,不是发给 AI 的指令。把这两件事分开,才不会把精力浪费在无人读取的属性上。

可直接执行的清理清单

  • 使用 <main> 或 <article> 包裹主体内容,确保它是一个边界清晰、内容单一的区域。
  • 删除仅为布局而存在的多余 div 嵌套,能用语义化标签就优先使用。
  • 每个页面只保留一个 h1,h2 与 h3 不跳级,并把所有假标题替换成真正的标题标签。
  • 图片使用 alt,日期使用 <time>,表格使用 <th>,名词定义使用 <dl>。
  • 把关键事实写入 JSON-LD,不要只依赖自定义 data-* 属性。
  • 内容完成后,将网页转换成 Markdown 检查一次。转换结果就是 AI 看到的页面。
AI 不会因为页面在浏览器里看起来漂亮就引用你;它引用的是那个被干净提取、并且能够理解的版本。Tenten GEO

在整套 GEO 工作中,干净 HTML 往往是回报率最高、也最容易被跳过的一环。它不需要重写内容,只要把现有内容整理成机器可读的格式,成本低、见效快。如果你想知道关键页面在 AI 提取器眼中缺少什么,我们会在 GEO 审计中实际跑一遍提取结果;你也可以先预约一次 30 分钟的 GEO 诊断,直接用自己的页面现场查看差距在哪里。

常见问题

AI 引擎真的看不懂我用 CSS 做出的视觉层级吗?
看不懂。大多数 AI 引擎不会完整渲染页面,只读取 HTML 标签本身呈现出的结构。你用粗体 div 做出的“假标题”,在它眼中只是普通文本。只有换成真正的 h2 和 h3,内容才会按章节分块并被引用。
自定义 data-* 属性能帮助 AI 检索吗?
几乎没有作用。AI 抓取器不会读取你私有命名的 data-* 属性。要让机器理解关键事实,应使用 JSON-LD 结构化数据,或 itemprop、data-nosnippet 等标准属性;自定义 data-* 更适合留给自有分析工具使用。
怎样快速查看页面被 AI 提取后是什么样子?
把 URL 放进任意“网页转 Markdown”工具运行一次。许多 AI 爬虫背后采用的正是这类转换。如果转换后的标题层级混乱、主体内容与导航栏混在一起、图片也没有替代文本,那么 AI 看到的就是这个残缺版本。

准备好了吗

你的品牌在 AI 答案中有多高的可见度?

通过 30 分钟 GEO 诊断,了解品牌在主要 AI 引擎中的可见度缺口,以及应该优先解决的问题。

预约 30 分钟诊断