标题与链接提取工具
按 URL 提取页面的标题结构和全部链接。
🌐 sitekits fetches the URL server-side (private/internal addresses are blocked). The HTML is parsed as delivered — JavaScript is not executed, so client-rendered headings will not appear.
概述
页面的标题层级就是它的目录,而读取它的东西比多数人以为的要多:构建摘要的搜索引擎、
提供可跳转标题列表的屏幕阅读器、判断页面主题的 AI 回答引擎。层级出错时,这些会同时
退化,而且屏幕上完全看不出来——被排版成小节标题模样的 h3,读起来与 h2 毫无区别。
本工具在服务器端获取 URL,按交付的原样解析 HTML,返回完整的标题树、h1 的数量、
每一处被跳过的层级,以及按内部/外部区分并标出 nofollow 的全部链接。
使用方法
- 粘贴 URL。可省略协议,默认按
https处理。 - 阅读摘要行:
h1数量、标题总数、层级跳跃数。 - 在 Outline 与 Links 之间切换查看明细。
「按交付的原样」是什么意思
不执行 JavaScript。这是刻意设定的约束,而不是需要绕开的限制:它呈现的是所有不执行 脚本的东西所看到的页面。
如果您的标题来自客户端框架,这里的层级会几乎是空的——而这正是结论。搜索引擎确实会 渲染 JavaScript,但按它们自己的节奏且没有保证,而消费您 HTML 的许多其他东西从不渲染: 链接预览、订阅阅读器、文本模式浏览器,以及多数 AI 爬虫。服务器端渲染出的层级,是 所有消费者都能看到的那一个。
<script> 与 <style> 的内容以及 HTML 注释在解析前即被移除,因此被注释掉的区块或
模板字符串中的标题不会出现在层级里。标题文本中的标签会被剥除,HTML 实体会被解码,
因此 <h2>Pricing & plans</h2> 读作 Pricing & plans。
层级跳跃的读法
只要某个标题比前一个深超过一级就会报告:h1 到 h3,或 h2 到 h5。回到更浅的
层级从不算跳跃——h3 之后的 h2 只是在收束一个小节。
值得在意的原因是,在 HTML 中标题层级是唯一表示嵌套的信号。屏幕阅读器用户按层级
穿行文档,被跳过的一级会告诉他们存在一个内容里并不存在的小节。常见原因是视觉上的:
当初选 h4 是因为字号合适,而那个字号后来又在 CSS 里改掉了。
对策是按结构选层级、用 CSS 定字号。这样层级对所有读者都正确,外观也不受影响。
链接列表的读法
每个链接都按页面的最终 URL 解析,因此相对 href 会以爬虫跟随的绝对 URL 形式出现。
协议相对链接(//host/path)继承页面的协议。格式错误的 href 会被丢弃而不是作为
链接报告。
rel="nofollow" 的检测不区分大小写,且能在多值 rel 属性中识别,因此
rel="NoFollow noopener" 也会被标出。请注意,自 2019 年起 nofollow 对抓取而言是
提示而非指令:它已不再可靠地阻止链接被跟随。如果您原本依赖它把某个 URL 挡在索引之外,
这一点很关键。能做到这件事的只有目标页面上的 noindex。
空文本会被明确标出。没有文本的链接——通常是缺少 aria-label 的纯图标锚点——对屏幕
阅读器用户不可达,也不携带任何关于目的地的信号。
示例
- 审查模板而非页面 — 每个模板跑一个页面。标题缺陷几乎总在模板里,因此少量 URL 就能覆盖整个站点。
- 确认内容是否服务器端渲染 — 若层级为空而页面上满是标题,那么任何跳过 JavaScript 的东西都读不到它。
- 迁移之前 — 记录关键页面的层级与链接数,迁移后再比对。丢掉一个
h1、或某个小节 被降了一级,都极容易不被注意地发布出去。 - 发现意外的外部链接 — 外部列表里混进预发布或 CDN 的主机,通常意味着某个硬编码的 绝对 URL 在部署中存活了下来。
- 为 AI 回答引擎准备内容 — 正确的标题层级是可用的结构信号中成本最低的一个,也是 最常被破坏的一个。标记错误由 HTML 验证负责,分享时的呈现由 OG 预览负责。
不予统计的内容
只收集 <a href> 元素。<link>、<form action>、<iframe src> 与由 JavaScript
驱动的跳转均排除在外,因为它们不是爬虫从文档出发跟随的链接。
说明
最多跟随五次重定向,且每一跳都重新执行同样的地址判定,因此公开 URL 无法重定向进 私有网络。层级描述的是最终响应,同时显示跳转链。
读取到 1 MB 即停止,报告上限为 300 个标题与 500 个链接。达到任一上限都会告知, 因为被静默截断的层级与完整的层级看不出区别。
对私有地址、回环地址、链路本地地址与保留地址的请求,在建立任何连接之前即被拒绝。 响应正文仅在内存中解析以生成本报告,绝不保存——见隐私政策。