LINE Notify終了後、RSSを自分のLINEへ送るまで|移行で詰まったこと

お疲れ様です、田村です。以前はLINE Notifyを使って、RSSで集めたニュースを自分のLINEへ送っていました。Notifyの終了を機にMessaging APIへ移行し、今も通知を使っています。

移行中は「自分のLINEに送るためのIDはどれ?」「Webhookの検証が通らない」と迷いました。さらに、今の通知には長いと途中で切れることがあるという課題も残っています。この記事では、実際に詰まった順番と、現在の仕組みをまとめます。

先に結果:RSS → Python → LINE公式アカウントのMessaging API → 自分のLINE、という流れで動いています。移行は成功しましたが、長い通知の途中切れは未解決です。

RSSニュースを自分のLINEへ送る仕組み。5つのRSSをPythonでまとめ、Messaging APIを通じて自分のLINEへ届ける

もともと何をしていたか

複数のRSSからニュースを拾い、あとでLINEから読めるようにしていました。自分一人への通知です。LINE Notifyが2025年3月31日に終了したため、送信先をMessaging APIへ切り替えました。

ここで思った以上に手間取ったのが、送信に使うトークンと、受け取る自分のユーザーIDは別物という点です。画面に複数のIDが出てきて、最初はどれを使うのか分かりませんでした。

つまずき1:自分のユーザーIDを確認できない

私は、LINE公式アカウントを友だち追加し、ローカルにWebhookを受ける小さなPythonサーバーを立てました。ngrokで外からアクセスできるURLを作り、自分から届いたイベントでユーザーIDを確認しました。

この途中で、ngrok が見つからない、Pythonに flask がない、Webhook検証で 502 や 400 が出る、と順に詰まりました。ログだけでは各HTTPエラーの原因を一つに断定できません。ただ、LINEの設定、ngrokの転送先、Pythonサーバーの起動状態を別々に確認する必要があると分かりました。

Webhook URLの検証では、イベントが空のPOSTでも正常に受け付けてHTTP 200を返す必要があります。公開する受信処理では署名の検証も必要です。当時の手元コードで署名検証まで実装していたかは確認できていません。ユーザーIDを取得するために使ったWebhookは、今のRSS送信処理そのものではありません。

つまずき2:RSS側のPythonが動かない

送信先を確認した後、RSS側では dotenv や feedparser が見つからないエラーが出ました。実際にスクリプトを動かすPython環境へ必要なパッケージを入れ直し、通知できるようになりました。作業ログにはこの段階で「出来た」と残っています。

その後、トピック別の通知をまとめ、今は rss_all_topics.py を使っています。チャネルアクセストークンと自分のユーザーIDは環境設定から読み込んでおり、記事には載せません。

今も使っている。ただし通知が途中で切れる

現在のコードでは、5つのRSSから各最大10件を取り、ひとつの長い文章にまとめています。その文章を500文字ずつに分け、先頭の最大5通だけ送ります。

私は通知が途中で切れていることがあります。一方で、届く記事の個数は毎回だいたい同じように感じています。コード上は、合計が約2500文字を超えた部分を送らない作りです。これが途中切れの有力な原因ですが、実際の送信ログと各回の通知を照合していないため、原因はまだ確定していません。

通知漏れを直すなら、まず「何件取得し、何通作り、何通送れたか」を記録するところから始めたいです。送信結果も確認し、長い日は次回へ持ち越すか、要約して送るかを決める必要があります。現在のスクリプトはその改善前の状態です。

同じ移行をする人へ

私の例では、次の順に確認すると整理しやすいと思います。

  1. LINE公式アカウントとMessaging APIチャネルを用意し、自分が友だち追加する。
  2. チャネルアクセストークンと、送信先の自分のユーザーIDを区別する。
  3. ユーザーIDをWebhookで調べる場合は、受信サーバー、公開URL、HTTP応答を一つずつ確認する。
  4. RSSを読むPython環境と、メッセージを送るPython環境をそろえる。
  5. 送信できた後も、長い日の通知が欠けていないか確認する。

公式のプッシュ送信方法を見ながら進めるのが確実です。Messaging APIには送信通数と料金の条件もあるので、通知を増やす前に確認してください。

技術メモ:私が見たエラー

表示 私が確認した箇所
ngrok が見つからない 実行ファイルの場所とコマンドを打つ場所
No module named 'flask' Webhook用Pythonの依存パッケージ
Webhook検証 502 サーバーの起動、ポート、ngrokの転送先
Webhook検証 400 受信処理とHTTP応答。原因はログだけでは未確定
No module named 'dotenv' / 'feedparser' RSS側を動かすPython環境

Webhookを実装する場合は、URL検証と署名検証の公式説明を参照してください。認証情報や受信した個人IDをログ・記事・画像へ載せないよう注意が必要です。

コメントする

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA