LINEで毎朝ニュースを自動配信!Dify×GASで簡単に最新LLM/AI情報キャッチアップ!

サステックスのエンジニア、鈴木です。
近年の生成AIバブルによって、様々な企業やユーザーがLLMやAIのツールやサービスを提供するようになってきました。昔からキャッチアップが大変な業界でしたが、さらに最新の情報をキャッチアップする必要が出てきました。
本記事では、Difyの活用事例の1つとして、LINE連携による最新LLM/AI情報のキャッチアップを行うためのワークフローに関して解説していきます。 あくまでもDifyの活用事例としてのご紹介となり、社内で活用しているLLM/生成AIキャッチアップのフローに関しては、近いうちにまた別の記事にする予定です。
はじめに
LINEで毎朝ニュースを自動化するメリット
スマートフォンの普及により、多くの人が朝一番でニュースをチェックする習慣を持つようになりました。しかし、複数のニュースサイトやアプリを確認するのは時間がかかり、重要な情報を見落としてしまう可能性もあります。
そこで今回は、毎日定時にLINEにニュースを自動配信するシステムを作成します。普段から使い慣れたLINEアプリで必要な情報をまとめて確認できるため、複数のアプリを行き来する手間も省けます。また、興味のある分野やキーワードに特化した情報を収集できるため、より効果的な情報収集が可能になります。
本記事では簡易的なLLMI/AIの情報収集を行うツールを作成しています。
社内ではより高度なワークフローを作成していますが、
必要なツールと費用(Dify、GAS、LINE Notify、Tavily Search)
本システムの構築には、主に4つのツールを使用します。まず、ワークフロー管理とLLM連携を担うDifyは、基本的な機能を無料で利用できます。自動実行の基盤となるGoogle Apps Script(GAS)、通知配信に使用するLINE Notifyも無料のサービスです。
ただし、ニュース検索に使用するTavily Search APIは月に1000リクエスト以上で課金が必要になります。(Tavily料金プラン)。 基本料金がかかることはないかと思いますが、利用頻度や検索量に応じて費用が変動する点には注意が必要です。
Dify活用ワークフロー:自動化システムの全体像
Difyによる開発全体像
本システムは、複数のサービスを連携させることで、完全自動化されたニュース配信を実現します。まず、設定した時刻になるとGASのトリガーが起動し、Difyのワークフローを開始します。Difyは、Tavily Search APIを使用して最新のニュースを収集し、LLMによって人間が読みやすい形に整形します。最後に、LINE Notifyを通じてユーザーに情報を届けます。
この一連の流れは完全に自動化されており、一度設定してしまえば人の手を介することなく動作し続けます。
Tavily Search APIを組み込む手順
Tavily Search APIは、AI開発に特化した高性能な検索エンジンです。通常の検索エンジンと異なり、AI開発者や自律型AIエージェント向けに最適化されており、単なる検索結果の提供だけでなく、関連性の高い情報を効率的に収集することができます。
APIの設定では、まず開発者ポータル( Tavily 公式サイト )からAPIトークンを取得します。取得したトークンは安全に管理し、プロジェクト内で適切に保護する必要があります。検索パラメータの設定では、検索の深さや結果の数、画像の含有有無などを細かく制御できます。これらのパラメータを適切に調整することで、より精度の高い検索結果を得ることができます。公式サイトのPlaygroundからレスポンスの動作確認ができるので、色々パラメータを調整して試してみてください!(Tavily 公式サイト Playground)
LLM(Large Language Model)の設定
LLMの設定は、ユーザーに届けるコンテンツの質を大きく左右する重要な要素です。今回はコストパフォーマンスが高いOpenAIのgpt-4o-miniを使用します。システムメッセージの設定では、LLMに対して「分かりやすく説明してくれる先生」としての役割を与え、ニュースの要点を簡潔に説明し、専門用語があれば補足説明を加えるよう指示します。
※ プロンプトの設定例
また、生成される文章の特性を制御するパラメータの設定も重要です。Temperature(創造性)は0.5程度に設定し、適度な創造性を保ちながら一貫性のある文章を生成します。最大トークン数は、LINE通知の読みやすさを考慮して適切な長さに設定します。これにより、ユーザーが通勤・通学中でも快適に読める長さの記事を提供できます。
※ パラメータの設定例(プリセットの読み込みからバランスを選択すると便利です)
※ ワークフローの全体像は以下のようになります。問題なければ、DifyのAPIキーを発行します。
Google Apps Script(GAS)による開発手順
新規GASプロジェクトの作成と初期設定
GASプロジェクトの作成は、Googleドライブから直接行うことができます。新規プロジェクトを作成したら、まずプロジェクトの基本構造を整えます。以下の2つのファイルを作成し、システムの基盤を構築します:
- api.gs : API連携用のメインロジック
- batch.gs : 定期実行用の制御ロジック
これにより、コードの管理が容易になり、将来の機能追加やメンテナンスも行いやすくなります。
Dify連携API実装:ニュース取得から整形まで
Difyとの連携部分は、システムの中核となる重要な実装です。以下のコードで、ニュースの取得からLINE通知までを実装します。
const fetchAndPostNews = (topic) => { // ニュース取得APIのエンドポイント const url = 'https://api.dify.ai/v1/workflows/run'; // APIリクエストの設定 const payload = { 'inputs': { 'query': topic, // 検索するニューストピック }, 'response_mode': 'blocking', // 同期実行モード 'user': 'abc-123' // ユーザー識別子 }; // HTTPリクエストオプションの設定 const options = { 'method': 'post', 'contentType': 'application/json', 'headers': { 'Authorization': 'Bearer ' + 'DifyのAPIトークンを入れる' }, 'payload': JSON.stringify(payload) }; // APIリクエストの実行とレスポンス処理 const response = UrlFetchApp.fetch(url, options); const data = JSON.parse(response.getContentText()); Logger.log(data); // デバッグログ // ニュースメッセージの抽出とLINE通知 const message = data['data']['outputs']['text']; sendLineNotification(message); // 4.3章で解説 };
fetchAndPostNews関数では、指定されたトピックについてDifyのワークフローを実行し、その結果を受け取ります。実装時は、APIリクエストのヘッダーやペイロードの形式に特に注意を払う必要があります。また、レスポンスデータの解析と、エラー発生時の適切な処理も重要です。
毎朝定期実行の自動化:トリガー設定
定期実行用の関数は以下の通りです。
const fetchNews = () => { // 生成AIニュースを取得して通知 fetchAndPostNews('生成AIニュース'); };
この関数をGASのトリガーに設定することで、指定した時間に自動実行されます。トリガーの設定についてはApp Scriptの画面から行ってください。
※ トリガーの設定手順
LINE Notifyで毎朝ニュースを配信する方法
LINE Notify APIの基本:導入とメリット
LINE Notify APIは、プログラムからLINEへの通知を簡単に実装できる優れたサービスです。個人やグループへのメッセージ配信に対応しており、テキストだけでなく画像やスタンプなども送信可能です。また、HTTPSリクエストを使用した単純な実装方法により、開発の手間を大幅に削減できます。
特筆すべきは、LINE Notifyが無料で提供されている点です。利用制限こそありますが、個人や小規模なチームでの利用であれば十分な機能を備えています。また、LINEアプリがインストールされているデバイスであれば、プラットフォームを問わず通知を受け取ることができます。
※ 注意
2025年3月31日にLINE Notifyサービスの提供が終了 となるようです。
アクセストークンの取得・管理手順
LINE Notify APIを利用するためには、まず LINE Notifyの公式サイト でアカウント登録を行い、アクセストークンを発行する必要があります。トークンの発行時には、通知を送信する対象(個人チャットまたはグループ)を選択します。発行されたトークンは、セキュリティ上の理由から再表示できないため、安全な場所に保管しておく必要があります。
※ 操作画面(LINE Notifyへログイン後)
GASでの通知処理:毎朝LINEに配信を実現
LINE Notifyへの通知処理は、HTTPSリクエストを使用して実装します。実装例は以下の通りです。
const sendLineNotification = (messageText) => { // LINE Notify APIの設定 const lineNotifyToken = 'LINEのAPIトークンを入れる'; const lineNotifyApiUrl = 'https://notify-api.line.me/api/notify'; // リクエストヘッダーの設定 const headers = { 'Authorization': 'Bearer ' + lineNotifyToken, 'Content-Type': 'application/x-www-form-urlencoded' }; // 送信メッセージの設定 const payload = { 'message': messageText }; // HTTPリクエストオプションの設定 const options = { 'method': 'post', 'headers': headers, 'payload': payload }; // LINE Notify APIにリクエストを送信 const response = UrlFetchApp.fetch(lineNotifyApiUrl, options); Logger.log(response.getContentText()); // 実行結果のログ };
sendLineNotification関数では、生成されたニュース記事をLINE Notifyのエンドポイントに送信します。この際、認証ヘッダーにアクセストークンを含め、適切な形式でメッセージを構築する必要があります。
また、通知の成功・失敗を確実に把握するため、レスポンスのステータスコードを確認し、適切なログ記録を行います。エラーが発生した場合は、再試行処理を実装することで、より確実な通知配信を実現できます。
ここまでできたらApp Script画面上部の実行を押してみましょう。LINEに通知が届けば成功です!
まとめ
いかがでしたか?
本記事で解説したシステムは、ニュース配信に限らず、様々な用途に応用可能です。例えば、企業における日次の売上レポート配信や、気象情報の定期通知、SNSでの特定キーワードの監視など、情報の自動収集・配信が必要なあらゆるシーンで活用できます。
またシステムの拡張性も魅力的です。新しいAPIやサービスとの連携を追加することで、より高度な機能を実現できます。例えば、機械学習モデルと組み合わせることで、ユーザーの興味関心に基づいた情報フィルタリングを実装することも可能です。
このように、Dify、GAS、LINE Notify、Tavily Searchを組み合わせることで、高度な自動化システムを比較的容易に構築できます。初期設定に多少の手間はかかりますが、一度構築してしまえば、長期的な運用コストは極めて低く抑えることができます。ぜひ、本記事を参考に、独自の自動化システムの構築にチャレンジしてみてください。