NTTドコモR&Dの技術ブログです。

自分専用のAIニュースエージェントをサクッと作ってみた(OpenAI&n8n)

テック関連のニュース毎日多すぎ!

毎日、AI関連のアップデートがすごいですね。ワクワクと同時についていくのが精一杯です。
皆さんはどのようにしてテックニュースを追っていますか?

私の場合、AIはもちろんのこと、量子コンピュータや宇宙開発も興味の範囲でして、チェックしているソースが国内外合わせて数十あリます。ちょっとサボるとFeedly(RSSリーダー)の未読がすぐに4桁になります。

SNS・RSS・ニュースサイト・メールマガジンなど情報は溢れていますが、「自分に必要なものを効率よくまとめて受け取る」方法があったらなぁと思っていました。

そこで個人開発で「国内外のテクノロジー関連ニュースを収集し、イイ感じに纏めてくれて、ついでに音声でも配信してくれるエージェント」を作ってみた、というのが今回の話です。

⭐️ どんなものをつくったか

OpenAIのAPIとn8nを組み合わせ、自動でニュースを収集・要約・翻訳・音声化し、毎朝7時に以下のようなメッセージがGmailとLINEに届く仕組みを作りました。

テーマごとにピックアップされた概ね10件前後のニュースの要約とともに、記事タイトル(和訳)とリンクが送られます。便利。

音声ファイルも添付されており、朝食や移動の合間にながら聴きで情報収集できます。便利。

✏️ この記事の内容とターゲット

今回は、プラットフォームとして利用したn8nと実装の概要をご紹介します。
読者ターゲットとしては、「OpenAIのAPIキーを取得したことがある」「n8nでどんなことができるのかザックリ知りたい」という方を想定しています。詳細な説明は省いておりますので、ご了承ください。


🔍 n8nとは何か

n8nはワークフロー自動化を実現するオープンソースのツールです。「If This Then That(IFTTT)」や「Zapier」と類似する部分もあり、さまざまなサービス間の連携・自動化を簡単に構築できるのが特徴です。
上記サービスの違いとしては、n8nはJavascriptやPython処理を自由に追加してより高度な処理を実現できたり、自分のローカル環境上でホストできる柔軟性も持ち合わせている点です。また、今回は利用していませんが、例えばAWSとの連携機能なども豊富です。

主な特徴

  • オープンソース:無料でセルフホスト可能(有料のクラウド版もあり)
  • 多様なノード:700以上のサービス連携ノード(API/DB/ファイル/AI等)
  • 高度な分岐・ループ処理:条件分岐やループ、関数ノードで柔軟なフロー設計
  • セキュリティと拡張性:ローカル運用でデータ管理も安心、独自ノード追加も容易
  • 日本語UI対応:最近はUIも日本語化が進み、扱いやすい

n8n / Zapier / IFTTT 比較表

項目 n8n Zapier IFTTT
価格 無料(セルフホスト)/ 有料クラウド 有料(無料枠あり) 無料/有料
サービス数 700+ 6000+ 800+
自由度 高い(関数/分岐) 中(分岐あり) 低(単純連携)
セルフホスト 可能 不可 不可
AI連携 標準対応 一部対応 一部対応
日本語UI
ユーザー数 公表なし 200万人以上 2000万人以上

※記事執筆時点


🎯 プロジェクトの目的

目的はシンプルで「世界中のテックニュースを、毎朝自分に合った形で届ける」ことです。
私はAI/量子コンピュータ/宇宙開発関連などをテーマに沿った30〜40程度の国内外のサイトをRSSリーダーに登録しているのですが、まずはそれらを要約して配信することに取り組みました。

これを実現するために次の機能を設計しました:
- RSSフィードからのニュース収集
- 記事タイトルの日本語翻訳とテーマ別分類
- 各テーマの要約(150〜300文字程度)
- Gmail/LINEへの配信
- Text-to-Speechによる音声生成
- Cloudflare R2への保存
- Podcastフィード(RSS)出力 ※実装中


🧩 システム構成(全体像)

とてもシンプルで、以下の要素で構成されています。

  • 基盤:n8n(クラウド版) ※無料期間内で作りました
  • RSSリスト:Googleスプレッドシート
  • 概要生成:OpenAI API(モデル: gpt-4o-mini)
  • 音声生成:OpenAI API(モデル: gpt-4o-mini-tts)
  • 音声ファイル用ストレージ:Cloudflare R2
  • 配信チャネル:Gmail, LINE, Podcast※ ※Podcastは実装中

🧠 ワークフロー全体の流れと各モジュールの役割

本プロジェクトのワークフローの全体像は下図のとおりです。
主に「入力」「編集」「出力」の3段階で構成されています。各モジュールがどのような役割を担っているか、順を追って解説します。

1. 入力:RSS取得

ここでやっていることは非常にシンプルです。

  • GoogleスプレッドシートからRSSのURL一覧を取得。
  • ループ処理でURL毎にRSSフィードから記事のメタ情報(XML)を取得。
  • 取得件数が多くなりすぎないよう「Limit」ノードで取得・保持する記事件数を制限。
  • 全URL分の取得を終えるとデータはJSON形式で次の【編集】段階に渡す。

2. 編集:データ整形・記事要約・和訳

データを整形/分類する中間処理と、後続のアウトプットのベースとなる「テーマごとの要約」「記事タイトルの和訳」を行っています。
サイトによって配信されるRSSの構造が若干異なったり、後続処理で無駄となる情報があるので、データ構造を整えたりお掃除しています。

  • データ掃除・整形(PreCleanArticles)
    • 記事本文から不要なタグや記号を正規表現で除去し、テキストを整形。
    • ここで必要十分な量にデータを絞っておくことが、「要約・和訳」処理時のトークン消費を抑えたり、全体の実行時間の短縮に繋がります。
  • テーマ別に分類(CategorizeTheme, GroupByTheme, SplitThemes)
    • 記事タイトル/本文を元に、あらかじめ定めたテーマ別に記事を分類。(キーワードを利用してルールベースで行っています。)
  • 要約・和訳(ループ処理)
    • テーマごとに記事のタイトル・概要をOpenAI API(gpt-4o-mini)を利用して、①テーマごとの要約 ②記事タイトルの和訳 を生成。

この段階を経て「テーマごと」にまとめられたデータが【出力】段階にJSONで渡されます。

3. 出力:メール・LINE・音声・Podcast等

出力したいチャンネルに合わせて最終整形して配信します。音声の生成もこの中で行っています。

  • Gmail送信
    • JSONデータを元にHTMLメールを生成。(GenerateHTML)
    • 音声ファイル(後述)を添付。(MergeForGmail)
    • Gmailへ送信。(SendToGmail)
  • LINE配信
    • LINEメッセージ用にデータを最終整形。(GenerateLineMessage)
    • LINE Messaging APIを利用してLINE公式アカウントへ配信。(BroadcastLineMessage)
  • 音声生成
    • 音声読み上げ用のスクリプト(原稿)を生成。(ArrangeTextForSpeech, GenerateNewsScript, cleanForTTS)
      • 息継ぎの「間」のための改行を入れたり、反対に間が生まれにくいようにスペースを除去しています。(例:Windows Server → WindowsServer, Falcon 9 → Falcon9)
      • LLMだけだと不安定なので、前後でルールベースの処理を入れています。
    • OpenAI API(gpt-4o-mini-tts)で原稿から音声(MP3)を生成。(GenerateVoice)
  • Cloudflare R2への保存
    • 音声ファイルをオブジェクトストレージへPUTし、署名付きURLを発行。
    • Podcastへの配信のために実装したが、いまは貯めているだけ。
  • Podcast用RSSフィード生成
    • 複数音声ファイルをまとめてRSSフィードとして出力。(執筆時点では未実装。記事公開される頃にはきっと実装されているはずと思いたい)


💰 運用コストと費用感

ほとんどコストはかかっていません。以下はこの記事でご紹介した構成で利用しているサービスとコストの内訳です。
この程度のコストで情報収集が効率化されるのであれば、個人的には満足しています。おかげでFeedlyを開かなくなりました。

サービス 用途・補足説明 費用目安
n8n ワークフロー実行基盤。クラウド版の無料期間中に開発。期間終了後はセルフホストに変えれば無料。 無料
Googleスプレッドシート 記事を取得したいサイトのRSSのリスト 無料
OpenAI API ①テーマ別の要約生成 ②TTS用の原稿生成 ③ 音声ファイル生成 計約 $0.08/日
Cloudflare R2 生成された音声ファイルを保存。1ファイルあたり5MB前後なので、無料枠(月間10GB)の範囲内。 無料
Gmail メール配信 無料
LINE Messaging API LINEアカウントへの配信。個人で利用する分には月間配信上限に抵触しない。 無料

💡 n8n × OpenAIで感じたこと

このプロジェクトを始めたとき、まずは最小限の構成(MVP)から試しました。
Googleスプレッドシートに登録したRSSリストを読み込み、そこから記事タイトルを取得し、OpenAI APIでタイトルの日本語翻訳だけを行い、Gmailで一覧を送信する──というだけの流れです。
n8nを初めて触りましたが、1時間強で実装できましたのでn8n便利だなーと感じました。

その後はChatGPTと壁打ちしながら機能追加を進めました。言わずもがな、ところどころの整形処理のコードもGPTを使っています。便利な時代です。 個人が従来の何倍もの生産性を手に入れようとしていることを身をもって体感するいい機会になりました。

今後もこのツールは改修を続けるつもりです。
インプットとしては、会員制サイト(The Information等) / メルマガ / YouTubeに対応させ、アウトプットとしてはスライドやショート動画生成ができればと模索しています。

n8n、楽しいのでぜひ触ってみることをおすすめします!