RSS 轮询 Onebox

:information_source: 摘要 RSS Polling Onebox 将 RSS Polling 的导入内容渲染为原始文章的 Onebox,支持可选的源摘要、YouTube 描述以及标题格式
:hammer_and_wrench: 仓库链接 Peter-Petrik/discourse-rss-onebox
:open_book: 安装指南 如何在 Discourse 中安装插件

功能

  1. Onebox 渲染:在您选定的分类中,RSS Polling 导入的内容将显示为文章 URL 的 Onebox——包含文章页面的标题、图片和描述——而不是截断至第一段的源正文。其他分类中的导入内容保持不变。
  2. 隐藏“显示完整帖子”:仅在选定的分类中隐藏该按钮。
  3. 源摘要(可选):当文章页面本身没有描述时,源中的摘要会显示在 Onebox 内部;如果无法构建 Onebox,则显示在链接下方。
  4. YouTube 描述(可选):来自频道源的视频完整描述会显示在播放器下方,保留换行和可点击的链接。
  5. 标题格式(可选):为博客和 YouTube 主题提供独立的格式,使用 %{title} 和 %{source},例如 %{source} 博客: %{title}。重命名操作是静默的——不产生修订记录、不提升主题、不发送通知——且旧链接依然有效。
  6. 显示名称:管理页面列出所有 RSS Polling 源及其发布名称,您可以在此设置用于 %{source} 的名称。保存后,该源的标题将重新渲染。
  7. 防止源更新覆盖:已编辑的源帖子或更改的源格式不再覆盖已 Onebox 化的主题。
  8. Rake 任务(针对现有主题):rss_onebox:convert 将早期导入转换为 Onebox,rss_onebox:enhance 则回填摘要、描述和标题。两者默认均为试运行(dry run)。

设计初衷

我们运营一个论坛,将成员的博客和 YouTube 频道拉取到同一个分类中。RSS Polling 的摘录渲染了许多源的效果不佳——格式错乱、图片缺失、以及一个会重新抓取页面的“显示完整帖子”按钮——而将相同的 URL 粘贴到帖子中却能生成干净的 Onebox。此插件使所有导入内容看起来都像那个粘贴的链接,并补充了仅靠页面本身无法提供的信息。

配置

安装后,前往 管理 → 插件 → RSS Polling Onebox:

  1. 设置:启用插件,选择应进行 Onebox 渲染的分类,并开启可选功能。
  2. 显示名称:为每个源设置用于标题中 %{source} 的名称,或留空以使用源发布的名称。刷新发布名称 会读取所有已启用的源。

对于安装前已导入的主题,请在容器内运行 rake rss_onebox:convert,然后运行 rake rss_onebox:enhance(两者均为试运行;添加 APPLY=1 以写入更改)。README 记录了所有设置和任务,CHANGELOG 列出了所有发布版本。

注意事项

  1. 已在 Discourse 2026.7 ESR 上测试;截至 2026 年 9 月,代码已验证与 main 分支兼容。旧版本未经验证。
  2. 需要 RSS Polling,该功能已随 Discourse 捆绑提供。
  3. 由于文档化的钩子尚不存在,某些功能封装了 RSS Polling 和 TopicEmbed 的内部机制;请参阅 RSS Polling:插件扩展点。
  4. 在 RSS Polling 中原生读取 YouTube 描述正在 RSS Polling:从 YouTube 频道源读取视频描述 中讨论;如果该功能进入核心,此插件将使用它。
  5. Onebox 的质量取决于每个文章页面的 Open Graph 标签。

问题和反馈:请在此回复,或在 GitHub 上提交 issue。