论坛从 vBulletin 迁到 Discourse 3.2,主题页加了 DiscussionForumPosting,author 写成字符串 admin,Search Console 增强功能里有效项一直是 0。试过把 author 换成数组,报错更多。

真正麻烦的地方在于,几个原因的现象几乎一样。author 必须是 Person 或 Organization 对象,字符串会被判类型不符;datePublished 写成 2026-11-11 10:20,缺时区被当成格式错误;帖子正文放在 iframe 里,抓取端拿到的页面没有内容;一个页面标了两个主帖,@id 冲突后整组实体被丢弃。

第一件事是确认类型有没有输出

curl -s https://bbs.example.com/t/123 | grep -o '"@type":"DiscussionForumPosting"'

再往下把作者改成对象并补主页

{"author":{"@type":"Person","name":"admin","url":"https://bbs.example.com/u/admin"}}

日期补上时区偏移

"datePublished":"2026-11-11T10:20:00+08:00"

等前面都确认过,再用站点自带的 JSON 视图核对

curl -s https://bbs.example.com/t/123.json | head -40

中途换过一次思路,把范围缩到最小的那一层,反而快了。

恢复的判定其实很直接。增强功能里的有效项从零涨到帖子总量,随机抽二十个主题页测试都不再报作者类型错误,搜索里开始出现问答样式的摘要。

补一句。论坛列表页不要标这个类型,只标主题页,否则会生成大量内容重复的实体。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189