RSSをWebhookに送信する方法

2026年10月12日に更新 読了時間:2分

RSSをWebhookに送るには、定期的にフィードを確認して新しい記事を検出し、それぞれをHTTP POSTで指定したURLに送る仕組みが必要です。 Feederの「Webhookに投稿」ルールなら、キーワードで絞り込みながら、いくつでもフィードを監視できます。再試行機能も備わっています。Zapier、Make、IFTTT、n8nなどの自動化ツールや、自分のサーバーで動かす短いスクリプトでも実現できます。

RSSをWebhookに送る方法

方法適している用途知っておきたいこと
Feederの「Webhookに投稿」ルール複数のフィード、キーワードによる絞り込み、全フィード共通のJSON形式Feeder Professionalの機能です。詳しくは以下をご覧ください。
Zapier、Make、IFTTT、n8nコードを書かずに、各記事をほかのアプリに渡すフィールドの対応付けは自分で行います。各ツールにはそれぞれ異なるプランと制限があります。
スクリプト細かく制御したい開発者スクリプトの設置や実行スケジュールの設定、送信済み記事の管理は自分で行います。

Feederの「Webhookに投稿」ルールの仕組み

「Webhookに投稿」は、Feederのルールで実行できるアクションのひとつです。ルールを作成し、どうするべき?でWebhookに投稿を選択して、エンドポイントのURLを入力します。監視するフィードやフォルダー、またはすべてのフィードを選びます。特定の記事だけを対象にする場合は、キーワードを追加してください。設定後は、条件に一致する新しい記事がFeederからURLに送信されます。

Webhookを使って独自の連携を作成するでは、スクリーンショット付きですべての手順を確認できます。機能の公開記事では、ルールの動作を紹介しています。このページの技術情報は、Webhookを送信するコードに基づいています。

FeederからWebhookに送られるデータ

記事ごとにHTTPのPOSTリクエストが1件送信されます。リクエストにはJSON形式の本文と、次のヘッダーが含まれます。

POST /hooks/rss HTTP/1.1
Content-Type: application/json
User-Agent: Feeder-Webhooks/1.0
X-Feeder-Signature: sha256=<HMAC-SHA256 of the body, in hex>

以下は、Feederブログの記事を送る場合の本文例です。contentは短縮しています。実際には1行で送信されますが、読みやすいように改行しています。

{
  "version": "2023-06-26",
  "message_id": "3f1c9a52-7e4b-4d0a-9b6e-2c8d51f0a7e4",
  "post": {
    "id": "aff2424a-abc9-11f1-afb3-1a21cf3a468a",
    "title": "Feed your AI",
    "url": "https://feeder.co/blog/1208-feed-your-ai",
    "published": "2026-09-08T20:19:59Z",
    "content": "\u003cp\u003eWith Feeder's MCP server, you can connect Feeder to your AI client of choice.\u003c/p\u003e",
    "audio_url": null,
    "image_url": "https://uploads.feedercdn.com/8XSXZN92WHeb2d17f3440d-feedyourai-1024x538.png"
  },
  "feed": {
    "id": "21f058e947",
    "source_url": "https://feeder.co/blog.rss",
    "public_url": "https://feeder.co/blog",
    "title": "Feeder.co",
    "favicon": "https://icons.feedercdn.com/feeder.co"
  }
}
フィールド内容
version形式のバージョンです。2023-06-26が指定されます。
message_idメッセージごとに新しいIDが付与されます。同じメッセージの再試行ではIDは変わらないため、重複を除外できます。
post.id記事を識別するFeederのIDです。
post.title記事のタイトルです。
post.urlウェブサイト上の記事へのリンクです。
post.published記事の公開日時です。RFC 3339形式のタイムスタンプ、またはnullが入ります。
post.contentフィードに含まれる記事のHTMLです。記事全文または概要が入ります。
post.audio_urlポッドキャストのエピソードなど、記事に添付されたMP3のURL、またはnullです。
post.image_url記事に添付された画像のURLです。添付画像がない場合は、記事本文の最初の画像のURL、またはnullが入ります。
feed.idフィードを識別するFeederの短いIDです。
feed.source_urlフィードのURLです。
feed.public_urlフィードが属するウェブサイトのURLです。
feed.titleフィードのタイトルです。
feed.faviconサイトのアイコンのURLです。

content内の<、>、&は、それぞれ\u003c、\u003e、\u0026として送信されます。これは有効なJSON表現であり、JSONパーサーでHTMLに戻せます。

Webhookが実行されるタイミング

  • 新しい記事だけが対象です。ルールの保存後にFeederが検出した記事に対して実行されます。すでにフィードにある記事は送信されません。
  • 記事ごとに1回送信されます。条件に一致する記事はそれぞれ個別のリクエストになります。複数の記事がまとめて送られることはありません。サイト側で記事が後から編集され、Feederが変更を検出した場合は、編集後の記事も送信されます。
  • フィードの次回チェック後に送信されます。Professionalでは、Feederは初期設定で10分ごとにフィードを確認します。フィードの更新頻度は最短1分ごとに設定できます。詳しくはFeederがフィードを確認する頻度をご覧ください。
  • 条件に一致した記事だけが対象です。キーワードを設定すると、一致する記事だけが送信されます。設定しない場合は新しい記事がすべて送信されます。投稿をフィルターまたは重複フィルターのルールで非表示になった記事は送信されません。

エンドポイントが停止している場合

Feederは応答を最大60秒待ちます。2xxステータスが返ると配信成功とみなされます。404や500などのエラーが返るか、応答がない場合、Feederはさらに最大8回再試行します。

試行回数前回の試行からの待ち時間
25秒
330秒
41分
55分
610分
730分
830分
930分

初回を含めて9回目の試行後、最初の送信から約1時間47分で、その記事の再試行は終了します。失敗した試行はそれぞれルールのエラーログに記録されます。ルールを開いてエラーログを開くを選択してください。再試行待ちの間にルールのURLを変更すると、次回以降の再試行は新しいURLに送信されます。テストメッセージを投稿ではテストを1回だけ送信し、再試行は行いません。

エンドポイント側で必要な対応

  • すばやく応答する。まず2xxステータスを返し、その後に時間のかかる処理を行ってください。60秒の応答時間を十分に下回るようにします。
  • 重複を除外する。サーバーがメッセージを処理した後、応答が遅れて再試行されると、同じメッセージがもう一度届きます。受信済みのmessage_idまたはpost.idを記録してください。
  • 最終的なURLを使う。https://example.com/hooks/rssのようにパスを含むURLを指定し、パブリックインターネット上のサーバーを参照する必要があります。Feederはローカルネットワークやプライベートネットワークのアドレスには投稿しません。リダイレクトも避けてください。301、302、303リダイレクトの後は、JSON本文を含まないGETリクエストとして到着します。
  • 署名を確認する。URLを知っている人なら誰でもリクエストを送れるため、有効なX-Feeder-Signatureがあるリクエストだけを信頼してください。確認方法は次のセクションで説明します。

リクエストがFeederから届いたことを確認する

FeederはルールのWebhookシークレットを使って、すべてのリクエストに署名します。確認するには、ルールを開き、アドバンストをオンにして、Webhook Secretをコピーし、ルールを保存します。X-Feeder-Signatureヘッダーにはsha256=に続いて、シークレットを使ってリクエスト本文から計算したHMAC-SHA256の16進数表現が入ります。

確認するには、JSONを解析する前の未加工の本文に対して同じHMACを計算し、2つの値を一定時間で比較します。Pythonの場合は次のとおりです。

import hashlib, hmac

def from_feeder(body, header, secret):
    expected = "sha256=" + hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, header or "")

ここでbodyは、バイト列として受け取ったリクエスト本文です。from_feederがFalseを返した場合はリクエストを拒否してください。再試行の署名にはその時点でルールに設定されているシークレットが使われるため、シークレットを変更すると再試行にも新しい値が適用されます。

FeederからWebhookにダイジェストを送信できますか?

いいえ。「Webhookに投稿」は、Feederが記事を検出すると、記事ごとに1件のリクエストを送信します。ダイジェストを作成するには、次の3つの方法があります。

  • 受信側でまとめる。エンドポイントが受信した記事を保存し、スケジュールに合わせて独自のまとめを送信します。
  • メールのダイジェストを使う。Feederでは、PlusおよびProfessionalで、選択したフィードの日次、週次、月次のまとめをメールで受け取れます。詳しくは新着記事の通知を受け取るをご覧ください。
  • フィードを公開する。Professionalでは、フォルダーまたはコレクションをRSSフィードまたはJSONフィードとして公開し、任意のツールで設定したスケジュールに合わせて読み込めます。詳しくは記事をRSSフィードやJSONフィードとしてエクスポートする方法をご覧ください。

Zapier、Make、IFTTT、n8nでRSSをWebhookに送る

それぞれのツールで、RSSトリガーとHTTPアクションを組み合わせます。以下の名称は、2026年9月28日に各ツールの公式サイトで確認したものです。

ツールトリガーアクション補足
ZapierRSS by Zapier: フィード内の新しいアイテム、または複数フィード内の新しいアイテムWebhooks by Zapier: POSTWebhooks by Zapierはプレミアムアプリで、有料プランでのみ利用できます。
MakeRSS: RSSフィードのアイテムを監視HTTP: リクエストを実行RSSモジュールはRSSフィードとAtomフィードを読み込みます。
IFTTTRSS Feed: 新しいフィードアイテムWebhooks: ウェブリクエストを実行IFTTTは無料プランでは1時間ごと、ProおよびPro+では5分ごとにフィードを確認します。
n8nRSS Feed TriggerノードPOSTメソッドを指定したHTTP RequestノードPoll Timesでフィードの確認頻度を設定します。

すでにいずれかのツールを使っている場合は、これらのツールを使うのが手早い方法です。Feederと組み合わせることもできます。「Webhookに投稿」ルールの送信先に、ZapierのCatch Hookトリガーまたはn8nのWebhookノードを指定してください。フィードの監視と記事の絞り込みはFeederが行い、その後の処理はワークフローに任せられます。

スクリプトでRSSをWebhookに送る

次のPythonスクリプトは、1つのフィードにある新しいアイテムをWebhookに送信します。送信済みのアイテムをseen.txtに記録し、各アイテムを1回だけ送信します。初回実行時は、その時点でフィードに含まれているすべてのアイテムが送信されます。

import json, pathlib, urllib.request
import feedparser  # pip install feedparser

FEED_URL = "https://example.com/feed.xml"
WEBHOOK_URL = "https://example.com/hooks/rss"
seen_file = pathlib.Path("seen.txt")
seen = set(seen_file.read_text().split()) if seen_file.exists() else set()

for entry in reversed(feedparser.parse(FEED_URL).entries):
    key = entry.get("id") or entry.get("link")
    if not key or key in seen:
        continue
    payload = {"title": entry.get("title"), "url": entry.get("link"), "published": entry.get("published")}
    request = urllib.request.Request(WEBHOOK_URL, data=json.dumps(payload).encode(),
                                     headers={"Content-Type": "application/json"})
    urllib.request.urlopen(request, timeout=30)
    seen.add(key)
    seen_file.write_text("\n".join(seen))

実行にはPython 3とfeedparserパッケージが必要です(pip install feedparser)。スケジュールを設定して実行してください。たとえばcronで15分ごとに実行する場合は、次のようにします。*/15 * * * * cd /path/to/folder && python3 rss_to_webhook.py。エンドポイントからエラーが返るとスクリプトは停止し、次回の実行で同じアイテムを再試行します。

よくある質問

「Webhookに投稿」からSlack、Teams、DiscordのWebhookにRSSを送信できますか?

直接は送信できません。Feederが送信するJSON形式は、これらのアプリが求めるメッセージ形式とは異なります。代わりにFeederのSlackに投稿、Microsoft Teamsに投稿、Discordに投稿するルールを使うか、Zapier、Make、n8nを間に挟んでください。

Webhookを使えるFeederのプランはどれですか?

「Webhookに投稿」はProfessionalの機能です。記事をフィルターしたり、スターを付けたり、収集したりするルールはPlusでも利用できます。

Webhookには記事全文が含まれますか?

フィードに掲載されている内容が含まれます。フィードに記事全文がある場合、contentには全文が入り、概要のみの場合はその概要が入ります。

ルールを保存する前にエンドポイントをテストできますか?

できます。テストメッセージを投稿を選ぶと、登録したフィードの記事を1件、実際に指定したURLへ送信します。アカウントに記事が含まれるフィードが少なくとも1つ必要です。

Feederを試す

Feederはウェブ、iOS、Androidで使えるRSSリーダーです。Chrome、Firefox、Edge向けの拡張機能もあります。無料プランでは広告なしで最大200件のフィードをフォローでき、フィードは最短30分ごとに更新されます。Plusでは2,500件のフィードをフォローでき、最短5分ごとの更新とメールダイジェストを利用できます。

Feederを無料で始める

関連記事

まだサポートが必要ですか?

サポートチームがすべてのメッセージに目を通しています。困っていることを教えてください。解決をお手伝いします。

サポートに連絡して