新闻站给正文前两段加了 Speakable 标记,用 cssSelector 指定段落,富媒体测试通过,但助理播报时仍读整页,流量也没有任何变化。试过换成 xpath 写法,测试直接报错。

一开始怀疑是「正文段落外面包了广告容器,选择器命中的是空壳节点」,查了一圈,方向不对。

这类报错背后常见的原因有几处,逐个排除就行。Speakable 只在少数地区和设备生效,桌面搜索看不到任何反馈。另一种情况是cssSelector 写成 .article p 命中多个节点,整段标记被判无效。

还有一种情况,标记写进 JSON-LD 但正文是动态渲染,抓取时节点并不存在。

动手时先确认页面里有没有这个字段

curl -s https://www.example.com/news/1 | grep -c speakable

数一下选择器命中的节点

curl -s https://www.example.com/news/1 | grep -o "class=\"article-body\"" | wc -l

再往下把选择器收窄到具体段落

{"@type":"WebPage","speakable":{"@type":"SpeakableSpecification","cssSelector":[".article-body > p:nth-of-type(1)"]}}

复核输出的选择器内容

curl -s https://www.example.com/news/1 | grep -o '"cssSelector":[^]]*]'

恢复的判定其实很直接。选择器在页面里只命中两个段落,测试工具不再给警告,助理播报从整页缩到这两段,页面本身的收录没有受到影响。

这里还有个坑。它对排名没有直接作用,别为了这个字段改版正文结构,收益和改动成本并不匹配。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189