【株式投資】LINEに届く自分専用AI通知BOTの作り方【Dify×Messaging API】

AI投資

管理人より:以前紹介したDify(Difyとは?登録方法から使い方まで、AI初心者にやさしく解説)を使って、実際に「自分専用の投資ニュースBOT」を作っていきます。今回は、Difyの登録が済んでいる前提で、LINEに自動で通知が届く仕組みそのものにフォーカスして解説します。


山田さん、市場が閉まったあとのニュースを見落とす

山田さん
山田さん

ナビネコ君、正直に言うと、株のニュースって市場が閉まったあとにまとめて出てくることが多い気がするんだよね。仕事から帰った頃にはタイムラインが情報だらけで、自分が持ってる銘柄の重要なニュースを見落とさずに拾うのが結構大変なんだよ

ナビネコ君
ナビネコ君

それ、投資してる人ならほぼ全員ぶつかる悩みにゃ。見落としが命取りになることもあるし、逆に情報を追いすぎて疲れて、その疲れが感情的な売買にもつながりやすいにゃ

山田「まさにそれ。疲れてる日ほど、変な判断しちゃう気がする」

ナビネコ「だからこそ、これが役に立つにゃ。自分の保有銘柄に関係あるニュースだけを、AIが勝手に拾って、要点を整理して、市場が閉まったあとの18時ごろにLINEに届けてくれる仕組みにゃ。見落としの不安が減るし、疲れて判断力が落ちてる状態で無理に情報を追いかける必要もなくなるにゃ」

山田「それができたら、投資の質そのものが上がりそうだね」

ナビネコ「しかも、これは前回紹介したDifyと、今回組み合わせるLINEの仕組みが繋がって初めて完成するにゃ。Difyが『AIに考えさせる頭脳』、LINEが『結果を届ける窓口』という役割分担にゃ。この2つを繋げることで、ニュースを見に行く手間そのものをゼロに近づけられるにゃ」

山田「別々のツールがちゃんと繋がって、一つの仕組みになるんだね」

ナビネコ「そうにゃ。しかも一度作ってしまえば、内容は完全に自分専用にゃ。他の誰かの持ってる銘柄のニュースは一切混ざらない、自分の資産のためだけに動く通知BOTになるにゃ。これ、実際に自分のLINEに届くようになると、結構な満足感があるにゃ」

山田「自分だけの投資新聞、みたいな感覚か。それは作ってみたくなるな」

全体の流れをおさらい

ナビネコ「作る前に、全体像を整理しておくにゃ。やることは3つだけにゃ」

  • 集める:保有銘柄に関するニュースと株価を自動で取得する
  • 考える(Dify):ニュースと株価の中身をAIが読み込んで、要点を要約する
  • 届ける(LINE):要約されたテキストが、市場が閉まったあとの18時ごろに自動でLINEに送られてくる

山田「Difyの基本操作はもう前回の記事で覚えたから、今回はこの3ステップを実際に組んでいけばいいんだね」

ナビネコ「そうにゃ。前回のDifyの登録がまだの人は、先にそちらを済ませておいてほしいにゃ」

🔗 関連記事:Difyとは?登録方法から使い方まで、AI初心者にやさしく解説

【重要】まず知っておいてほしいこと:LINE Notifyはもう使えない

⚠️ 「LINE Notify」は2025年3月末でサービス終了済みです。通知の送信には「LINE公式アカウント」を作り、その中の「Messaging API」という機能を使います。無料の範囲で十分使えます。

【実践】具体的な作り方

Step1:LINE公式アカウントを作り、Messaging APIを有効にする

ナビネコ「最初に一つ整理しておくにゃ。普段スマホで使ってる個人のLINEアカウントは、ほとんどの人がもう持ってると思うにゃ。これは新しく作る必要はなくて、そのままログインや通知の受け取りに使うにゃ。今回新しく作るのは、通知を送る側専用の『LINE公式アカウント』にゃ。個人アカウントが『受け取る側』、公式アカウントが『送る側』、と役割が分かれてるイメージにゃ」

  1. LINE Official Account Manager」のサイトにアクセスして、無料でLINE公式アカウントを新規作成するにゃ(普段使ってる個人のLINEアプリでQRコードを読み取ってログインすると早いにゃ)

山田「作成の途中で『ビジネスID』っていう文字が出てきたんだけど、これは何?」

ナビネコ「そこ、最初につまずきやすいポイントにゃ。『ビジネスID』は、LINE公式アカウントを含めた、LINEヤフーのビジネス向けサービス全般に共通で使うログインIDのことにゃ。難しいものじゃなくて、要は『このサービス群にログインするための、専用の鍵』というだけにゃ」

山田「普段使ってる個人のLINEアカウントとは別物ってこと?」

ナビネコ「そうにゃ。作り方は2通りあって、①普段の個人LINEアカウントと連携して作る、②メールアドレスだけで新しく作る、のどちらかにゃ。個人アカウントに友だちがバレたりすることはないから、心配しなくて大丈夫にゃ。①の方が手早く終わるから、特にこだわりがなければ個人アカウント連携がおすすめにゃ」

山田「じゃあ、案内に沿って作っちゃえば大丈夫なんだね」

ナビネコ「そうにゃ。一度作れば、この後もずっと同じビジネスIDでログインすることになるにゃ」 2. 作成した公式アカウントで、そのまま「LINE Official Account Manager」にログインするにゃ 3. 対象のアカウントを選んで、画面右上にある「設定」をクリックするにゃ 4. 左側のメニューから「Messaging API」を選ぶにゃ 5. 「Messaging APIを利用する」というボタンをクリックするにゃ 6. 「プロバイダー」(自分のアプリやチャネルをまとめておく、いわば『フォルダ』のようなもの)を選ぶ画面が出るので、持っていなければ新しい名前で作成するにゃ(初回は名前とメールアドレスの入力を求められることもあるにゃ)

山田「『プライバシーポリシー』と『利用規約』を登録する欄も出てきたんだけど、これは何を書けばいいの?」

ナビネコ「そこは両方とも任意項目にゃ。空欄のままで大丈夫にゃ。これは本来、不特定多数の人が友だち登録するような一般公開のアカウント向けに、運営者の情報の取り扱い方針を知らせるための項目にゃ。今回は自分専用の通知BOTだから、わざわざ用意する必要はないにゃ。何も入力せず、そのまま次に進んで大丈夫にゃ」

  1. 進めると、「LINE Developersコンソールでチャンネルが作成されます」という案内が出るので、そのまま「同意する」などのボタンを押して進めるにゃ

ナビネコ「ここまでで、LINE公式アカウント側の設定は完了にゃ。裏側で、対応するMessaging APIチャネルが自動的に作られてるにゃ。次は『LINE Developers』で、そのチャネルの中身(トークンなど)を確認するにゃ」

  1. LINE Developers」にアクセスして、普段使ってる個人のLINEアカウントでログインするにゃ(LINE公式アカウントはログイン用のIDやパスワードを持つものではなく、個人アカウントでログインした先で管理する対象にゃ)
  2. ログインすると、さっき自動作成されたチャネルがコンソール画面に表示されてるはずにゃ。それをクリックして開くにゃ
  3. チャネルの画面が開いたら、上部のタブから「Messaging API設定」を開いて、そこにある「チャネルアクセストークン」の『発行』ボタンを押すにゃ
  4. 同じ画面の「チャネル基本設定」タブを開いて、「チャネルシークレット」という文字列もメモしておくにゃ
  5. 「Messaging API設定」タブの中に「Webhook URL」を入力する欄がありますが、今回の方法では使わないので、空欄のままで大丈夫にゃ(この後Step4で使うのは「送信専用」のやり方で、LINEからの受信は必要ないからにゃ)
ナビネコ君
ナビネコ君

この『チャネルアクセストークン』と『チャネルシークレット』の2つが、あとの設定で必ず必要になる合言葉みたいなものにゃ。メモ帳か何かに控えておくといいにゃ

Step2:Difyでニュースと株価データを自動取得するワークフローを作る

ナビネコ「ここは工程が多いから、もう少し細かく分けて説明するにゃ」

① ワークフローの土台を作る

  1. Difyにログインして、「スタジオ」画面の右上にある「作成」ボタンを押すにゃ
  2. 「最初から作成」を選ぶにゃ
  3. アプリの種類を聞かれるので「Workflow(ワークフロー)」を選ぶにゃ
  4. アプリの名前を決めて(例:「保有銘柄ニュースBOT」)「作成する」を押すにゃ
  5. 作成すると、編集用のキャンバス画面が開くにゃ。最初から「開始」というブロックが1つ置かれた状態になってるにゃ

② 「開始」ノードをスケジュールトリガーにする

  1. 「開始」ブロックをクリックするにゃ
  2. 出てくる一覧の中から「スケジュールトリガー」を選ぶにゃ
  3. 実行時刻の設定画面になるので、時刻を「18:00」、繰り返しを「毎日」に設定するにゃ

山田「これだけで、毎日18時に自動で動くようになるんだね」

ナビネコ「そうにゃ。他のツールを別に用意する必要はないにゃ」

③ ニュースと株価データを取ってくるブロックを追加する

  1. スケジュールトリガーの右側にある「+」マークをクリックするにゃ
  2. 出てくるブロックの一覧から「HTTPリクエスト」を選んで追加するにゃ
  3. 追加したブロックの「URL」の欄に、ニュース取得先のURLを入力するにゃ。「東証TDnet(適時開示情報) WEB-API by やのしん」という個人運営の無料サービスを使うと、URLの末尾に証券コードをハイフンで繋げるだけでRSSが取得できるにゃ(例:https://webapi.yanoshin.jp/webapi/tdnet/list/7203-6758.rss/自分の銘柄コードをここに並べるにゃ)
  4. 「スケジュールトリガー」ブロックにもう一度マウスを合わせて、その右側に出てくる「+」から2つ目の「HTTPリクエスト」ブロックを追加するにゃ(1つ目のHTTPリクエストブロックからではなく、スケジュールトリガーから直接、2本目の枝として伸ばすイメージにゃ。ニュースと株価は同時に取りに行く、並列の関係だからにゃ)
  5. こちらのURL欄には、株価データを取得できるAPIのURLを入力するにゃ。今回は『前日の終値』が分かれば十分にゃ。Yahoo Financeのチャート用APIを使うと、銘柄コードの末尾に.Tを付けるだけで指定できるにゃ(例:トヨタ自動車ならhttps://query1.finance.yahoo.com/v8/finance/chart/7203.T
  6. このブロックの設定画面に「ヘッダー(Headers)」という項目があるので、キーにUser-Agent、値にMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36を追加するにゃ。これがないと、アクセスを弾かれてエラーになることがあるにゃ

山田「ヘッダーって何?」

ナビネコ「普通のブラウザからのアクセスに見せかけるための、いわば『名札』にゃ。名札がないと、プログラムからの機械的なアクセスだと判断されて、ブロックされることがあるにゃ。だからこの名札を付けて、人間がブラウザで見に来たように見せてるにゃ」

山田「なるほど、そもそも秒単位のリアルタイム性がいらないから、終値だけ届けばいいサービスの方が向いてるんだね」

ナビネコ「そういうことにゃ。ちなみに、そもそも証券取引所が配信するリアルタイムの株価データって、取引所自体がライセンス販売してる商品にゃ。無料の株価サイトが軒並み『15〜20分遅れ』表示になってたり、証券会社がリアルタイム表示を有料オプションにしてたりするのは、その裏側のコストが理由にゃ。今回みたいに『市場が閉まったあとの終値が分かればいい』という用途なら、そのコストを気にする必要はないにゃ」

山田「銘柄が複数あるときは、その分だけHTTPリクエストブロックを並べればいいんだね」

ナビネコ「そうにゃ。『ニュース担当』と『株価担当(銘柄の数だけ)』を、スケジュールトリガーから並列に伸ばしていくイメージにゃ」


保有銘柄が複数ある場合、実際にはこんな感じで、スケジュールトリガーから複数のHTTPリクエストブロックが並列に伸びる形になります。


ナビネコ「ここまでで、『自分の銘柄に関係あるニュース』と『前日の株価の動き』の両方が、毎日18時に自動で集まってくる状態になるにゃ」

山田「株価の理由まで知りたかったから、これは嬉しいな」

ナビネコ「にゃ。次のStepで、この2つの情報をAIに渡して、『なぜその値動きになったのか』まで考えさせるにゃ」

Step3:AIに要約させるプロンプトを設定する

  1. ワークフローの中に「LLM」ブロックを追加するにゃ
  2. 集めたHTTPリクエストブロック(ニュース用・株価用、すべて)のそれぞれの右端から、線をこのLLMブロックに繋げるにゃ。LLMは取ってきたデータの中身を読んで要約する必要があるから、データそのものを渡す必要があるにゃ
  3. プロンプト欄に、以下の内容を貼り付けるにゃ
【指示】
あなたは優秀な投資アナリストです。以下の保有銘柄に関する「前日の株価情報」と
「最新ニュース」を読み、個人投資家向けに要約してください。

【出力フォーマット】
■[銘柄名・コード] 前日終値:{{前日終値}}(前日比:{{騰落率}})
・[値動きの理由] なぜこの値動きになったのか、考えられる要因を1〜2行で
・[要約1] ニュースで何が起きたか(業績上方修正、新製品発表、不祥事など)
・[要約2] 数値的なインパクト(売上〇%増、○億円の赤字など)
・[要約3] 投資家としての短期的・中長期的な注目ポイント

【前日の株価情報】
{{ここに自動で株価データが挿入される}}

【ニュース本文】
{{ここに自動でニュースが挿入される}}
  1. 「{{ここに自動で株価データが挿入される}}」「{{ここに自動でニュースが挿入される}}」の部分は、②の各HTTPリクエストで取得した変数を、それぞれ挿入するにゃ

山田「これなら、ただニュースを読むだけじゃなくて『結局それで株価はどう動いたのか、なぜ動いたのか』まで一目でわかるね」

ナビネコ「そうにゃ。ニュースと値動きをセットでAIに考えさせることで、『材料は出たけど株価には反映されてない』みたいな、ニュースだけ見てても気づきにくいズレにも気づきやすくなるにゃ」

山田「このプロンプトの文章、自分の好みに変えてもいいの? もっとカジュアルな口調で要約してほしいとか」

ナビネコ「もちろんにゃ。『個人投資家向けに』の部分を『中学生にもわかるように』とか『関西弁で』みたいに変えれば、要約の雰囲気も自分好みに変えられるにゃ。ここが完全にカスタマイズできるところが、既製のニュースアプリにはない魅力にゃ」

Step4:プロンプトの結果をLINEに送信する

ナビネコ「ここが一番間違えやすいところだから、一つずつ丁寧にいくにゃ」

① 自分のLINEユーザーIDを確認する

  1. 「LINE Developers」の対象チャネルを開き、「チャネル基本設定」タブを開くにゃ
  2. その中にある「あなたのユーザーID」という項目を探すにゃ。Uから始まる文字列が、あなた自身のLINEユーザーID(送信先の指定に使う)にゃ
  3. その文字列をコピーしておくにゃ

② LLMブロックの後に、送信専用のHTTPリクエストブロックを追加する

  1. LLMブロックの右側にある「+」から、新しい「HTTPリクエスト」ブロックを追加するにゃ
  2. メソッドを POST に変更するにゃ
  3. URL欄に、以下を入力するにゃ
https://api.line.me/v2/bot/message/push

③ ヘッダー(Headers)を設定する ※ここが一番の注意ポイント

  1. 「ヘッダー」欄に、2行を追加するにゃ
キー
AuthorizationBearer チャネルアクセストークン
Content-Typeapplication/json

⚠️ 重要な注意点Authorizationの値を入力するときは、必ず日本語入力(IME)をオフにしてから入力してください。「Bearer」の後ろのスペースが、IMEがオンのまま入力すると全角スペースになってしまうことがあり、これが原因で'ascii' codec can't encode character '¥u3000'という、一見なぜ起きているのか分かりにくいエラーが出ます。半角スペース1つで区切られているか、必ず確認してください。

④ Body(本文)を設定する

  1. 「Body」タブを開いて、データ形式で「JSON」を選ぶにゃ
  2. 以下の内容を入力するにゃ

json

{
  "to": "①で確認した自分のユーザーID",
  "messages": [
    {
      "type": "text",
      "text": ""
    }
  ]
}
  1. 最後の"text": ""の、2つの引用符の間にカーソルを置いて、そこで「/」を押すにゃ
  2. 出てきた変数の一覧から、「LLM」というグループの中の「text」を選ぶにゃ(他の候補(reasoning_contentやusageなど)は選ばないにゃ)
  3. 挿入されたあと、変数チップの前後に余計な{}の文字が残っていないか、必ず見直すにゃ

山田「"to"のユーザーIDは、書き換えるのを忘れないようにしないとね」

ナビネコ「そこもよくある間違いにゃ。サンプルの文字列のまま送ってしまうと、当然届かないにゃ。必ず①でコピーした自分のIDに書き換えるにゃ」

⑤ うまくいかないときのチェックリスト

ナビネコ「ここまで設定してテスト実行しても届かない場合、よくある原因はこの3つにゃ」

  • 401エラーが出る:チャネルアクセストークンが古い、またはコピー時に前後へ余計な空白・改行が入っている可能性があるにゃ。LINE Developersでトークンを再度確認・再発行し、コピーし直すにゃ
  • ascii codecのエラーが出る:③で説明した、Authorizationヘッダーの中に全角スペースが紛れ込んでいないか確認するにゃ
  • エラーは出ないのに届かない:LINE公式アカウントを、自分のスマホでまだ「友だち追加」していない可能性があるにゃ(Step5で案内するにゃ)

ナビネコ「これで、集める→要約する→LINEに届く、という一連の流れが全部自動でつながるにゃ」

全部組み終わると、実際にはこんな全体像になります。左のスケジュールトリガーから、ニュースと株価の取得が並列に伸びて、すべてLLMに集まり、最後にLINE送信用のブロックへ繋がっています。

Step5:友だち追加して、公開する

山田「これで完成? あとは待つだけ?」

ナビネコ「その前に、あと2つだけやることがあるにゃ」

  1. 自分のLINE公式アカウントを、普段使ってる個人のLINEアプリで友だち追加しておくにゃ。これをしていないと、仕組みが動いてもメッセージが届かないにゃ。追加のためのQRコードは、「LINE Developers」の対象チャネルの「Messaging API設定」タブの中に表示されているにゃ。それをスマホのLINEアプリのQRコード読み取りで読み込めばOKにゃ
  2. Difyのワークフロー画面に戻り、右上の「公開する」ボタンを押すにゃ。ワークフローは公開しないと本番稼働にならず、スケジュールトリガーも自動実行されないにゃ

山田「公開する前に、ちゃんと動くか確認する方法はないの?」

ナビネコ「あるにゃ。画面上部の『テスト実行』ボタンを押せば、18時を待たずにその場で一度動かせるにゃ。エラーが出ないか、LINEに実際にメッセージが届くかを、その場で確認できるにゃ。まずはテスト実行してから、公開に進むのがおすすめにゃ」

ナビネコ「これで、一度組んでしまえば、あとは毎日18時になったら勝手に動いてくれるにゃ」

作る工程、最後にもう一度おさらい

Step1:LINE公式アカウントを作成し、Messaging APIを有効にする(チャネルアクセストークン・チャネルシークレットを取得) Step2:Difyでワークフローを作成し、スケジュールトリガーを18時に設定→ニュースと株価データを取得するHTTPリクエストブロックを追加 Step3:LLMブロックにプロンプトを設定し、ニュースと株価をAIに要約させる Step4:LLMブロックの後にHTTPリクエストブロックを追加し、LINEの「push(プッシュ)」APIに直接送信する設定をする Step5:LINE公式アカウントを友だち追加し、テスト実行で確認してから公開する

ナビネコ「難しく見えるけど、やってることはこの5段階だけにゃ。あとは中身を自分好みに育てていくだけにゃ」

その日の夜、山田さんの景色が変わった

山田「実際にやってみたよ。今日の18時、帰りの電車の中でLINEに『【ナビネコ投資新聞】〇〇商事、純利益30%上方修正!』ってきれいに要約された通知が届いてて、ちょっと感動した」


実際に届いたLINE通知はこんな感じです。
前日終値と値動きの理由、ニュースの要約まで、銘柄ごとにきれいにまとまって届きます。


ナビネコ「にゃ、それでこそ作った甲斐があるにゃ」

山田「自分の銘柄だけに絞られてるし、文章の雰囲気も自分で決めたから、本当に自分専用の新聞をもらってる感じがするよ」

ナビネコ「そこがこの仕組みの一番いいところにゃ。誰かが作った既製のアプリじゃなくて、自分の持ち物・自分の好みに合わせて育てられるにゃ。通勤電車のわずか1駅分の時間で、自分の資産に直結する重要ニュースのチェックが終わる快感を、ぜひ味わってほしいにゃ」

マネックス証券

注意点と運用のコツ

山田「これ、お金かかったりしないの?」

ナビネコ「保有銘柄が数銘柄〜10銘柄程度なら、Difyの無料プラン、LINE公式アカウントの無料メッセージ通数の範囲で十分運用できるにゃ。ただしLINE公式アカウントは、無料で送れるメッセージ数に月あたりの上限があるから、銘柄数が多い人や配信頻度を増やしたい人は、その点だけ確認しておくといいにゃ」

山田「他に気をつけることは?」

ナビネコ「一番大事なのは、AIの要約を鵜呑みにしすぎないことにゃ。『これは大ごとだ』と思うようなニュースが届いたら、必ずリンクから元の公式IR(一次情報)を確認する癖をつけてほしいにゃ。AIは要約が得意なだけで、内容の重要度を最終判断してくれるわけじゃないにゃ」

山田「便利になった分、最後の確認は自分の役目ってことだね」

ナビネコ「そこは変わらないにゃ」


管理人より:AIによる情報収集の自動化は、時間を節約できるだけでなく、「自分の持ち物だけに特化した情報源を、自分の手で育てられる」という満足感も得られます。仕組みを作る手間は多少かかりますが、一度組んでしまえば毎日のニュースチェックの負担は大きく減らせるはずです。なお、LINE Notifyはすでにサービスを終了しているため、必ずLINE公式アカウントのMessaging APIを使って構築してください。本記事は情報提供を目的としたものであり、特定のツールやサービスへの加入を推奨するものではありません。

コメント

タイトルとURLをコピーしました