直接答案:10 个站点、36 个文章页中,8 页没有 H1(22.2%),4 页有 3–4 个 H1;28 个有 H1 的页面里,20 页的 H1 包含在 title 中,8 页的 H1 与 title 讲的不是同一件事:其中 5 页 H1 是占位文字“这里是标题一h1占位文字”,3 页把 H1 写成“联系我们”。
其余 Head 项:title 36 页都有,长度中位数 23 字符;description 36 页都有,但 18 页不足 50 字符(最短 4 字符),中位数 60;canonical 缺 6 页(有 canonical 的 30 页全部自指);lang 缺 5 页;OG title/description 各缺 6 页;没有页面声明 robots meta。
方法:复用第 45 期抓取的原始 HTML
样本与第 45 期相同:第 28 期文章框,10 个站点、36 个可用文章页(另一站 5 个 JS 外壳页已单列)。本期不重新抓取,直接读取 2026-11-03 08:40–08:41 保存的原始 HTML,零网络请求。
用正则读取 title、全部 H1、meta description(两种属性顺序都识别)、canonical、html lang、og:title、og:description 与 meta robots。H1 与 title 的关系分四类:完全一致、包含、无关、缺失;包含只说明文字有重叠,不判断语义。
| 指标 | 口径 | 边界 |
|---|---|---|
| H1 数量 | 统计页面内全部 <h1> | 不判断视觉大小与位置 |
| H1/title 关系 | 完全一致 / 包含 / 无关 | 包含不证明语义一致 |
| description 长度 | 去标签、反转义、压缩空白后的字符数 | 长度不等于质量 |
| canonical 自指 | 主机去 www、路径去尾斜杠后比较 | 不跟随跳转 |
结果:H1 是最大问题
| H1 数量 | 页面数 | 说明 |
|---|---|---|
| 0 | 8 | 22.2% |
| 1 | 24 | 66.7% |
| 3–4 | 4 | 同一站点,最多 4 个 |
| H1 与 title | 页面数 | 说明 |
|---|---|---|
| 完全一致 | 0 | title 通常追加品牌后缀,不必逐字相同 |
| 包含 | 20 | H1 是 title 的一部分,或反之 |
| 无关 | 8 | 5 页占位文字、3 页写成“联系我们” |
| 无 H1 | 8 | — |
占位文字集中在 E09 的 5 个页面;E23 的 3 个页面把“联系我们”当作发展历程、行业资讯与新闻资讯页的 H1。这两类不是“写得不够好”,而是模板没有替换或复用了错误区块,验收时应直接判为未完成。
description 都有,但一半偏短
| description 长度 | 页面数 | 说明 |
|---|---|---|
| < 50 字符 | 18 | 50.0%;最短 4 字符 |
| 50–99 字符 | 9 | — |
| 100–136 字符 | 9 | 最长 136 字符 |
| 合计 | 36 | 中位数 60 字符 |
4 字符的 description 基本等于没有摘要;15 字符的 5 页来自同一站点。长度不是唯一标准,但过短时搜索结果里的说明只能由引擎自行拼凑。
canonical、lang 与 OG
| 项 | 有 | 缺 | 说明 |
|---|---|---|---|
| canonical | 30 | 6 | 30 个全部自指,无跨页指向 |
| html lang | 31 | 5 | 有值的均为 zh |
| og:title | 30 | 6 | 与 canonical 缺失页面一致 |
| og:description | 30 | 6 | 同上 |
| meta robots | 0 | 36 | 未声明,按默认可索引处理 |
站点分布
| 站点 | 页数 | 无 H1 | 多 H1 | H1 异常 | 缺 canonical / lang | 短描述 |
|---|---|---|---|---|---|---|
| E03 | 5 | 1 | 4 | 0 | 0 / 0 | 5 |
| E06 | 5 | 0 | 0 | 0 | 0 / 0 | 0 |
| E09 | 5 | 0 | 0 | 5 占位 | 0 / 0 | 0 |
| E14 | 5 | 0 | 0 | 0 | 0 / 0 | 5 |
| E16 | 3 | 3 | 0 | 0 | 3 / 3 | 0 |
| E19 | 1 | 0 | 0 | 0 | 1 / 1 | 1 |
| E22 | 5 | 1 | 0 | 0 | 0 / 0 | 1 |
| E23 | 5 | 2 | 0 | 3 错误 | 0 / 0 | 5 |
| E26 | 1 | 0 | 0 | 0 | 1 / 0 | 0 |
| E28 | 1 | 1 | 0 | 0 | 1 / 1 | 1 |
只有 E06 的 5 个页面在 H1、canonical、lang 与描述长度上都没有本期命中的问题;这不等于页面整体合格,只说明这几项没有异常。
对验收的启示
- H1 占位与错用要判失败。 5 页占位文字、3 页 H1 与文章主题无关,属于模板未替换。
- 没有 H1 的 8 页先补。 22.2% 的文章页缺少唯一主标题。
- 多 H1 要收敛。 4 页有 3–4 个 H1,通常是模板把侧栏标题也用成了 H1。
- description 不要只当“有就行”。 18 页不足 50 字符,4 页只有 4 字符。
- canonical、lang、OG 一起查。 缺失页面高度重合,适合一次性模板修复。
局限
- 零请求复用:原始 HTML 抓取于 2026-11-03 08:40–08:41,之后若改版未反映。
- 正则解析:不处理注释、脚本内文本与动态插入的 Head 标签。
- 关系判断较粗:“包含”只说明文字重叠,不证明语义一致;H1 位置与视觉层级未测。
- 长度不是质量:description 字符数不代表可读性或关键词覆盖。
- 10 站 36 页 pilot:不外推行业。
数据与复算
匿名数据:equipment-article-meta-2026.csv(36 行 × 12 列:title 长度、H1 数量与关系、description 长度、canonical、lang、OG 与 robots)。仓库内为 docs/research/2026-11-article-meta.csv。原始 HTML 留在站外,不随站点部署。
解析:scripts/article_meta_probe.py;单元测试 scripts/test_article_meta_probe.py(7 项,无网络)。运行:
python -m unittest scripts.test_article_meta_probe
配套:文章页链接结构 pilot、文章页可见日期 pilot、首页锚文本 pilot。
数据来源与口径
- 样本:第 28 期文章框,第 45 期 2026-11-03 08:40–08:41 抓取的 36 个可用页面。
- Head 口径:title、全部 H1、description、canonical、lang、OG 与 robots。
- H1 关系:完全一致 / 包含 / 无关 / 缺失,仅按文字判断。
- 扫描时间:2026-11-03,零网络请求。