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} blog: %{title}。名前の変更はサイレント(リビジョン、バンプ、通知なし)で行われ、古いリンクは引き続き機能します。
  6. 表示名: 管理画面のページでは、公開されている名前付きのすべての RSS Polling フィードがリスト表示され、%{source} に使用される名前を設定できます。保存すると、そのフィードのタイトルが再レンダリングされます。
  7. フィード更新からの保護: 編集されたソース投稿や変更されたフィード形式により、onebox 化されたトピックが上書きされなくなります。
  8. 既存トピック用の Rake タスク: rss_onebox:convert は以前のインポートを onebox に変換し、rss_onebox:enhance は概要、説明、タイトルをバックフィルします。どちらもデフォルトではドライランです。

背景

私たちは、メンバーのブログと YouTube チャンネルを1つのカテゴリに集めるフォーラムを運営しています。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. Discourse に同梱されている RSS Polling が必要です。
  3. 一部の機能は、文書化されたフックが存在しないため、RSS Polling と TopicEmbed の内部をラップしています。RSS Polling: extension points for plugins を参照してください。
  4. RSS Polling での YouTube 説明のネイティブ読み取りは、RSS Polling: read the video description from YouTube channel feeds で議論中です。コアに実装された場合、このプラグインはそれを使用します。
  5. Onebox の品質は、各記事ページの Open Graph タグに依存します。

質問や問題がある場合は、ここに返信するか、GitHub で issue を開いてください。

「いいね!」 3

いいアイデアだと思います。LLMを使って、恣意的な抜粋ではなく、設計された要約を作るのはどうでしょうか?

私の浅はかな見解ですが、リンクを貼り付けるだけではフォーラムの本来の目的が損なわれるような気がします。ちょうど中間の落とし所になるのではないでしょうか。

共有してくださってありがとうございます!

「いいね!」 2

とても素晴らしいですね。サイトが公開されている場合、実際に動作している様子を確認させていただけませんか?

RSS Pollingプラグインが必要とのことですが、フィードの設定は両方のプラグインで行う必要があるのでしょうか?それともあなたのプラグインだけで大丈夫ですか?

「いいね!」 1

ありがとうございます!ただし、そのテキストは恣意的なものではなく、記事自体の説明や、著者自身のフィードの要約です。そのため、メンバーが見るのはパラフレーズではなく、ブロガー自身の言葉になります。トピック自体がメンバーが投稿について議論する場所であり、ワンボックスはそこへの入り口です。

LLMによる要約をオプションとして提供するのは興味深いアイデアです。Discourse AIのgistはトピックの内容を要約しますが、ここではそれがリンクだけなので、プラグインが記事を読み取り、フォーラムに設定されたモデルに渡すことを意味します。トークンを消費し、著者の言葉を生成されたものに置き換えることになるため、オプトイン制にしたいと考えています。ただし、このアイデアはメモしておきました。

残念ながらできません。私たちのフォーラムはメンバー限定のため、上記のスクリーンショットはライブトピックから直接取得したものです。特に知りたいことがあれば、さらにスクリーンショットを投稿します。

RSS Pollingだけです。フィードの追加と管理はこれまで通りRSS Pollingで行います。このプラグインには独自のフィードはありません。選択したカテゴリにRSS Pollingがインポートしたコンテンツに対して動作し、Display namesページではRSS Pollingのフィードがリストアップされるだけで、名前を付けることができます。

「いいね!」 1

Peterさん、検討してくださってありがとうございます! プロンプトを工夫することで、著者のトーンを変えずに、リンクから取得した指定されたデータのみから結果を生成するようにすることが可能です。

これは https://ask.discourse.com で採用されているアプローチで、回答はドキュメントや厳選されたベースに厳密に紐付けられています。モデルはほぼトレーニングデータを一切使用せず、これがこの技術を本当に活用するための最も賢く生産的な方法だと私は考えています。

また、要約が非常に得意な安価なモデルも存在します。そのため、実装されることを期待しています。これにより、読み手の体験が向上するだけでなく、SEO/IA-SEOの実践にも役立つはずです。