Tuesday, October 20, 2026
finlight の Webhooks でニュースを Slack や Discord に送る
finlight の Webhooks でニュースを Slack や Discord に送る
ニュースをチームの目に最速で届ける方法は、彼らがすでに見ているチャットへ流し込むことです。finlight の webhooks を使えば、ポーリングは不要です。記事がフィルター条件に一致した瞬間に、finlight があなたの エンドポイントを呼び出します。このチュートリアルでは、webhook を検証して Slack や Discord に転送する、 小さな Python エンドポイントを構築します。
finlight webhooks の仕組み
ダッシュボードで webhook を作成し、そのフィルター(ティッカー、カテゴリ など)を設定して、エンドポイント URL を finlight に渡します。記事が一致すると、finlight はその記事を あなたのエンドポイントに POST し、リクエストに署名するので、それが本当に finlight から来たものだと確認 できます。各リクエストには 2 つのヘッダーが付きます。
X-Webhook-Signature— ボディの HMAC-SHA256 署名です。X-Webhook-Timestamp— リプレイを拒否するために使われます(5 分間の許容ウィンドウ)。
公式 SDK がこの両方をあなたの代わりに検証します。
エンドポイント
import os
import requests
from flask import Flask, request
from finlight_client import WebhookService, WebhookVerificationError
app = Flask(__name__)
WEBHOOK_SECRET = os.environ["FINLIGHT_WEBHOOK_SECRET"]
CHAT_WEBHOOK_URL = os.environ["CHAT_WEBHOOK_URL"]
@app.route("/finlight-webhook", methods=["POST"])
def finlight_webhook():
raw_body = request.get_data(as_text=True)
signature = request.headers.get("X-Webhook-Signature")
timestamp = request.headers.get("X-Webhook-Timestamp")
try:
article = WebhookService.construct_event(
raw_body, signature, WEBHOOK_SECRET, timestamp
)
except WebhookVerificationError:
return "", 400
text = (
f"*{article.title}*\n"
f"{article.sentiment} · {article.source}\n"
f"{article.link}"
)
# Slack incoming webhook expects {"text": ...}
requests.post(CHAT_WEBHOOK_URL, json={"text": text})
return "", 200
WebhookService.construct_event(...) は署名をチェックし、タイムスタンプを検証して、パース済みの
Article を返します。いずれかの段階で失敗すると WebhookVerificationError を送出するので、その場合は
400 を返します。
代わりに Discord へ送る
Discord の incoming webhook は text ではなく content フィールドを使います。この post を入れ替える
だけです。
requests.post(CHAT_WEBHOOK_URL, json={"content": text})
それ以外はすべて同じです。
必ず検証する
検証は重要です。これがないと、あなたの URL を見つけた誰もが偽の記事をチャンネルに投稿できてしまいます。
必ず生の、未パースのボディを construct_event に渡してください(先に再シリアライズしないこと)。エンド
ポイントのシークレットは環境変数に入れ、finlight を待たせないよう素早く応答を返しましょう。
エンリッチ版とロー版
finlight はエンリッチ版 webhook(センチメントとエンティティ付き)とロー版 webhook(軽量で高速)を提供 しています。アラートにセンチメントや関係する企業を表示したいときはエンリッチ版を、とにかく見出しを できるだけ速く受け取りたいときはロー版を使いましょう。
次に読むもの
- REST、WebSocket、Webhooks、MCP の比較 で、webhook がストリーミングに勝る場面を確認しましょう。
- 完全なドキュメントで、webhook のセットアップ、ペイロード、テストを学べます。
