DifyでRSSフィードを取り込む方法を解説。HTTP RequestでRSSを取得し、CodeノードでXMLを解析してLLMへ渡す基本構成や、定期実行するときの考え方を紹介します。
Difyでニュースやブログの新着情報をAIに処理させたい場合は、RSSフィードをWorkflowへ取り込む方法があります。
基本的な流れは、
「RSSを取得する → XMLを解析する → 記事情報をLLMへ渡す」
です。
Difyでは外部データを取得するHTTP Requestノードや、Python・JavaScriptで処理できるCodeノードを組み合わせてRSSを扱えます。
RSSを扱うWorkflowは、次のような構成にできます。
開始
↓
HTTP Request
↓
Code
↓
Iteration
↓
LLM
↓
出力
HTTP RequestでRSSフィードを取得し、CodeノードでXMLから記事タイトルやURLなどを取り出します。
複数の記事を処理する場合はIterationで1記事ずつ処理し、LLMへ渡します。
最初に、取得したいWebサイトのRSS URLを用意します。
RSS URLはサイトによって異なります。
たとえば、
など、複数のフィードが用意されている場合があります。
RSS URLが分からない場合は、RSS URLの見つけ方を参考にしてください。
WorkflowへHTTP Requestノードを追加します。
RSSは通常GETリクエストで取得できるため、
を設定します。
正常に取得できれば、レスポンス本文としてRSSやAtomのXMLデータを受け取れます。
まずはHTTP Requestノードだけを実行して、レスポンスが返ることを確認してください。
RSS URLによっては403や404などが返る場合があります。
RSSはXML形式なので、そのままLLMへすべて渡すより、必要な項目だけ取り出してから処理した方が扱いやすくなります。
一般的には、
などを取得します。
PythonでRSS 2.0を解析する場合は、たとえば次のような形で処理できます。
import xml.etree.ElementTree as ET
def main(xml_text: str) -> dict:
root = ET.fromstring(xml_text)
items = []
for item in root.findall(".//item")[:20]:
items.append({
"title": item.findtext("title", default=""),
"link": item.findtext("link", default=""),
"description": item.findtext("description", default=""),
"published_at": item.findtext("pubDate", default="")
})
return {
"items": items
}
HTTP Requestノードのレスポンス本文をxml_textへ渡し、解析結果のitemsを次のノードで利用します。
実際のCodeノードの入力変数名は、Workflow側の設定に合わせて変更してください。
すべてのフィードがRSS 2.0とは限りません。
Atomでは、
itemではなくentrypubDateではなくupdatedやpublishedlink要素のhref属性など、XML構造が異なります。
RSSとAtomの両方を扱う場合は、フィード形式を判定して処理を分ける必要があります。
登録するフィードが固定なら、そのフィード形式だけに合わせて実装する方がシンプルです。
Codeノードから記事の配列を返したら、Iterationノードを使って1記事ずつ処理できます。
たとえば各記事について、
といった処理をLLMへ実行できます。
RSSは記事を発見するための仕組みなので、AI処理との相性がよいデータ源です。
RSSフィードに記事全文が含まれているとは限りません。
サイトによっては、
など、配信内容が異なります。
そのため、RSSのdescriptionだけをLLMへ渡しても、十分な要約ができない場合があります。
記事本文まで必要なら、
という追加処理が必要です。
RSSは一度取得するだけでなく、定期的にチェックすることで新着情報の収集に使えます。
Difyの環境やバージョンでスケジュール実行を利用できる場合は、
定時トリガー
↓
HTTP Request
↓
RSS解析
↓
新着判定
↓
LLM処理
という構成も考えられます。利用中の環境に定時トリガーがない場合は、外部スケジューラーからWorkflow APIを呼び出す方法を検討します。
たとえば毎朝RSSを取得し、その日の記事を要約するといったWorkflowです。
ただし、毎回RSS内の全記事を処理すると、同じ記事を何度もLLMへ送ることになります。
RSSを定期取得するときに重要なのが重複処理です。
RSSには直近の記事が複数件含まれているため、前回取得した記事も次回のRSSに残っています。
そのため、
などを使って、すでに処理済みの記事か判定する仕組みが必要になります。
試すだけなら最新1件を処理する方法でも構いません。
継続運用する場合は、外部データベースなどへ処理済みIDを保存しておく方が安全です。
RSSは外部Webサイトから取得するため、常に成功するとは限りません。
たとえば、
などが発生する可能性があります。
HTTP Requestが失敗した場合に、そのまま後続のLLMを実行しないよう分岐を入れておくと安定します。
RSS側の問題を確認する方法は、RSSが更新されない・取得できないときの原因と確認方法でも紹介しています。
RSSをDifyで扱うために、必ずRSS専用の機能を用意する必要はありません。
RSSはHTTPで取得できるXMLなので、
という一般的な機能だけでも処理できます。
一方で、複数のフィード形式への対応や重複管理まで共通化したい場合は、RSS取得処理をプラグインや外部サービスとして切り出す方法もあります。
Difyには外部サービスと連携するTool、Datasource、Triggerなどのプラグイン方式も用意されています。
DifyへRSSを取り込む目的は、記事をAIで処理したり、自動化したりすることです。
単純にRSSの記事を読みたいだけなら、RSSリーダーを使う方が簡単です。
| 目的 | 向いている方法 |
|---|---|
| RSSの記事を読む | RSSリーダー |
| RSSを要約する | Dify |
| RSSを分類する | Dify |
| RSSから特定情報を抽出する | Dify |
| 複数サイトの新着を眺める | RSSリーダー |
| 新着記事を自動処理する | Dify Workflow |
「読む」と「処理する」で使い分けると分かりやすくなります。
Difyで自動処理するRSSも、普段読むRSSも、元になるのは同じRSSフィードです。
NagooFeedでは、自分で選んだRSSを登録して、新着記事をブラウザから一覧で確認できます。
まずRSSにどんな記事が流れてくるか確認してから、自動化するフィードを選ぶ方法もあります。
情報確認日:2026年8月29日