こんにちは。
今回は、第3回で加工したニュースデータを、スマートフォンのメッセンジャーに送る方法を扱います。
データを集めて整えたら、次は読みやすい形でユーザーに届けます。
この記事では、開発者が扱いやすいTelegramを使い、自動化パイプラインの最終段階を設定します。
すべてWebブラウザで設定するため、macOS、Windows、Linuxで同じ手順を試せます。
Telegramボットを作成してAPIを連携する 🔗
Telegramでは、ボットの作成とAPIトークンの発行が簡単です。
公式の管理ボットであるBotFatherから、新しいボットを作り、固有の認証キーを発行できます。
Telegramアプリの検索欄で
BotFather
を探し、公式アカウントのチャットを開きます。
/newbot コマンドを入力すると、ボットの名前とユーザー名(username)を順に設定できます。

Telegramボットの作成
設定が終わると、英数字が混ざった長い
APIトークン
が発行されます。
このトークンはボットを操作するパスワードに相当するため、外部に公開しないよう注意します。
n8nのワークフロー画面に
Telegram
ノードを追加し、前のノードにつなげます。
操作には
Send Message
を選びます。
設定画面の認証情報(Credentials)のドロップダウンを開き、新規作成を選びます。
発行したAPIトークンを貼り付けて保存すると、n8nがTelegramのサーバーと通信できるようになります。

認証情報の作成
あとは、受信先のチャットを識別するChat IDを入力すれば、基本的な連携は完了です。
Telegramでボットとやり取りするチャットを開き、チャンネル管理の「チャンネルの種類」から「リンク」へ進むと、
t.me/ で始まるURLを確認できます。
Chat IDには、URLの最後の部分を使います。例えば
t.me/your_channel_name なら、Chat IDは
@your_channel_name です。
データをそのまま送ると読みにくくなります。
Markdownで読みやすく整え、サーバーとの通信で発生する制限にも備えます。
メッセージの入力欄で式(Expression)を有効にします。
次のようにMarkdownとJSONの変数を組み合わせて、メッセージのテンプレートを作ります。
메시지 템플릿 표현식 예시// 대괄호에 텍스트를 넣고 소괄호에 URL을 넣어 하이퍼링크를 생성합니다.
*오늘의 기술 동향 뉴스*
제목: [{{ $json.title }}]({{ $json.link }})
발행일: {{ $json.pubDate }}
こうすると長いURLがテキストの背後に隠れ、モバイルでも読みやすくなります。

テンプレートを使ったTelegramメッセージ
メッセンジャーのサーバーへ、1秒間に数百件のメッセージを送るとどうなるでしょうか。
サーバーは過負荷を防ぐため、
Rate Limit
(呼び出し回数制限)を適用し、要求を遮断します。
これはネットワーク工学で使われる
Token Bucket
(トークンバケット)アルゴリズムに関係します。
一定時間ごとに、利用可能なトークン(要求を送る権利)がバケツに補充され、要求を送るたびに1つ消費されます。
トークンがなくなると、サーバーはそれ以上の要求を受け付けず、エラーを返します。
この制限に達しないようにするには、n8nの
Loop Over Items(Split In Batches)
ノードと
Wait
ノードが使えます。
データを小さなグループに分け、その間に数秒の待ち時間を入れると、サーバーに制限されずにデータを送れます。
今回は、TelegramメッセンジャーのAPIを使い、パイプラインのデータを外部に送る方法を見てきました。
API通信とWebhookの仕組みを理解し、レート制限などのネットワーク上の制約を考慮して設計することは、バックエンド開発や自動化に欠かせない力です。
第5回では、LLMのハルシネーションを抑え、専門知識を補うRAGシステムの構築を扱います。