Discourse 日历/事件插件的“即将发生的事件”(Upcoming Events)路由似乎从初始服务器端渲染的 HTML 响应中省略了所有 Open Graph 和 Twitter 卡片元数据。
在托管的 Discourse 站点上可以复现此问题,其中普通页面能正确输出社交元数据,且已配置有效的站点 OpenGraph 图片。
受影响的路由示例:
https://www.mbacommons.com/upcoming-events/month/2026/8/1
复现步骤
- 配置有效的站点 OpenGraph 图片。
- 确认首页或普通主题在原始 HTML 中输出了正常的 Open Graph 元数据。
- 打开
/upcoming-events/month/2026/8/1。 - 检查原始
view-source:/ 初始服务器响应,而非 JavaScript 执行后的 DOM。
实际结果
“即将发生的事件”路由返回 HTTP 200,但原始 HTML 中不包含:
og:imageog:titleog:descriptionog:urltwitter:cardtwitter:image
我还使用 LinkedInBot/1.0 进行了测试,结果相同。
对该站点进行的原始 HTML 生产环境审计统计如下:
- 首页:11 个社交元数据标签
- 普通主题:14 个
- 即将发生的事件:0 个
首页和普通主题正确使用了已配置的站点 OpenGraph 图片,因此站点级别的 branding 配置本身是正常工作的。
预期结果
“即将发生的事件”路由应输出爬虫可见的、服务器端渲染的社交元数据,至少包括:
og:titleog:descriptionog:urlog:image,若未设置则回退到已配置的站点 OpenGraph 图片- 对应的 Twitter 卡片元数据
这些元数据必须包含在初始 HTML 中,因为 LinkedIn 和类似的社交爬虫无法依赖客户端主题 JavaScript。
LinkedIn 帖子检查器当前报告:
Add an og:image tag to the page to have control over the content's image on LinkedIn.
全局主题 head_tag 注入似乎并不合适,因为普通页面已经具有正确的元数据,且这可能导致标签重复或冲突。这似乎需要对“即将发生的事件”路由进行路由感知的服务器端处理,或使用 Discourse 的标准社交元数据渲染路径。