はじめに:なぜn8nとGemini自動化なのか
この記事では、ノーコードツール「n8n」とGoogleの高性能AI「Gemini」を連携させ、あなたが本当に興味のあるニュースを自動で取得・要約するAIワークフローを構築します。特に、ノードの接続順序と操作の選択肢で迷わない、ビギナー向けの完全な手順を提供します。
🚨 重要な事前知識:Gemini APIのコスト
- 課金対象: Gemini APIはOpenAIと同様に従量課金制です。AIに送る入力(ニュース記事の内容)と、AIから返る出力(日本語の要約)のトークン数で費用が発生します。
- コスト削減策: ノード設定で「Gemini 2.5 Flash」など、処理速度が速く安価なモデルを選択することで、コストを抑えることができます。
ワークフローの全体像とノード接続順序
構築するワークフローは、以下の6つのステップ(ノード)が一本の線で繋がった構造になります。
text{Schedule Trigger (起動)>Google Sheets (取得)>IF (絞込)>HTTP Request (ニュース取得)>Google Gemini (AI処理)>Google Sheets (記録)
ステップ | 選択すべきノード名 | 実行する操作 (Operation) | 主要な設定項目 | 目的 |
1. 起動 | Schedule Trigger | 操作設定は不要 | N/A | 決まった日時にワークフローを自動起動。 |
2. 検索ワード取得 | Google Sheets | Get Rows | N/A | スプレッドシートからキーワードを取得。 |
3. 絞り込み | IF | 操作設定は不要 | N/A | 「検索が必要」なキーワードのみを抽出。 |
4. ニュース取得 | HTTP Request | 操作設定は不要 | Method: GET | News APIを通じて海外ニュースを取得。 |
5. AI処理 | Google Gemini | Generate Content | N/A | 記事を日本語で要約・翻訳。 |
6. 記録 | Google Sheets | Append Row | N/A | AI処理後の結果をニュース一覧シートに追記。 |
【解説】 この表は、構築するワークフロー全体の設計図です。ノードの主なアクションを「実行する操作」とし、Operationとは別に重要な設定項目を「主要な設定項目」欄に分離しました。
ステップ0:事前準備(APIキーとGoogle Sheets)
1. Gemini APIキーの作成(詳細手順)
AI連携の要となるAPIキーを以下の手順で作成します。
- Google AI Studioにアクセス: Google AI Studioにアクセスし、Googleアカウントでログインします。
- APIキーの作成画面へ移動: サイト内の「Get API key」または「APIキーを作成」メニューを選択します。
- キーを作成: 「Create API Key in new project」ボタン等をクリックし、キーを生成します。
- キーをコピー: 表示されたAPIキー(AIza…から始まる文字列)を必ずコピーし、安全な場所に控えてください。このキーは、画面を閉じると二度と表示されません。
2. News APIキーの取得(詳細手順)
海外ニュースのデータソースとなるAPIキーを取得します。
- News API公式サイトにアクセス: 公式サイトの「Get API Key」ボタン等からアカウント登録ページへ進みます。
- アカウント登録: 氏名、メールアドレス、パスワードを入力し、個人利用(I am an individualなど)を選択して登録します。(クレジットカードは不要です)
- APIキーの確認: 登録完了後、アカウントページまたはメールアドレスにAPIキーが送付されるので、これを控えておきます。
3. Google Sheetsの準備
以下のシート名(タブの名前)でスプレッドシートを作成します。
シート名 | 項目 (A列, B列, C列…) |
01 検索 | 検索ID, 検索ワード, 検索要否 |
02 一覧 | 日付, 検索ワード, 記事内容, URL |
【解説】 ワークフローで使用するGoogleスプレッドシートの構造を示しています。シート名はn8nでの指定に必要となるため、この通りの名称(01 検索、02 一覧)で作成してください。
ステップ1:ワークフローの起点とデータ取得
キャンバス上でノードを検索し、以下の順に接続していきます。
ステップ | 選択すべきノード名 | 実行する操作 (Operation) | 主要な設定項目 | 目的 |
1. 起動 | Schedule Trigger | 操作設定は不要 | N/A | 決まった日時にワークフローを自動起動。 |
2. 検索ワード取得 | Google Sheets | Get Rows | N/A | スプレッドシートからキーワードを取得。 |
3. 絞り込み | IF | 操作設定は不要 | N/A | 「検索が必要」なキーワードのみを抽出。 |
4. ニュース取得 | HTTP Request | 操作設定は不要 | Method: GET | News APIを通じて海外ニュースを取得。 |
4.5. 記事の分割 | Split Out (Item Lists) | Split Out Items | Field to Split Out: articles | 取得した記事の配列を、記事ごとのアイテムに分割。 |
5. AI処理 | Google Gemini | Generate Content | N/A | 記事を日本語で要約・翻訳。 |
6. 記録 | Google Sheets | Append Row | N/A | AI処理後の結果をニュース一覧シートに追記。 |
【解説】 この表は、ワークフローの最初の3つのノード(起動、データ取得、条件分岐)の設定方法を示しています。ステップ3のValue 2は、スプレッドシートの検索要否列に入力した文字と完全に一致させる必要があります。
ステップ2:ニュースの取得とAIによる要約(Google Gemini)
IFノードのTrue Branchから線を引いて、以下の2つのノードを接続します。
1. HTTP Request (News API) の設定
IFノードのTrue Branch側に「HTTP Request」ノードを追加します。
- Methodを「GET」に設定します。(これがニュース取得の操作となります)
- URLに、News APIの「Everything」エンドポイントのURLを貼り付け、動的な値を埋め込みます。
コード スニペット
https://newsapi.org/v2/everything?q={{ $json["検索ワード"] }}&sortBy=publishedAt&language=en&apiKey={APIキー}
q={検索ワード}
の部分:IFノードの出力から検索ワードの値をドラッグ&ドロップ。apiKey={APIキー}
の部分:取得したご自身のNews APIキーを直接入力。
2. Split Out (Item Lists)ノードによる記事の分割
HTTP Requestノードの直後に「Item Lists」ノードを追加し、その機能を強調するために「Split Out」として解説します。
- Operation:
Split Out Items
を選択します。 - Field to Split Out: News APIのJSONの配列名である
articles
を、左側のインプットデータからドラッグ&ドロップで指定します。(例:{{ $json.articles }}
) - 【Split Out ノードの役割】 News APIの出力は、複数記事を1つの配列にまとめた単一のアイテムとしてn8nに渡されます。このノードは、その配列を記事の数だけ独立したアイテムに分割します。これにより、後続のGeminiノードは、記事を一つずつ順番に処理できるようになります。
3. Google Gemini の設定
Split Outノードの後に「Google Gemini」ノードを接続します。
ノード検索名 | 選択すべきノード名 | 実行する操作 (Operation) | 詳細な設定のポイント |
---|---|---|---|
google gemini | Google Gemini | Generate Content | 1. CredentialでGemini APIキーを連携。2. Modelは「gemini-2.5-flash」または「gemini-2.5-pro」を選択。3. Promptにプロンプトと動的なタイトル・記事内容を組み込む。 |
【Gemini Credentialの設定】 Google Geminiノードの設定画面で「Credential to connect with」から「Create New Credential」を選択し、ステップ0-1で控えておいたAPIキーを貼り付けます。
【プロンプト設定】 Prompt欄に、以下の指示文とデータを入力します。Split Outノードを経由したため、ドラッグ&ドロップでインデックスなしの変数(title
、description
など)が取得できるようになります。
記事の内容をそのまま出力してください。
{Split Outノードの出力から`title`をドラッグ&ドロップ}
{{ $json.title }}
{Split Outノードの出力から`description`をドラッグ&ドロップ}
{{ $json.description }}
ステップ3:最終結果のGoogle Sheetsへの記録
Google Geminiノードから線を引いて、最後のノードを接続します。
ステップ | ノード検索名 | 選択すべきノード名 | 実行する操作 (Operation) | 詳細な設定のポイント |
---|---|---|---|---|
6. 記録 | google sheets | Google Sheets | Append Row | 1. Sheetで「02 一覧」を指定。2. 下部のMappingで、AIの出力データなどを正確に紐付け。 |
【データマッピングの詳細】
Google SheetsノードのMappingで、シートの列とデータを紐付けます。
02 一覧シートの列 | 取得元ノードとデータ項目 |
---|---|
日付 | Split Outノードの出力から publishedAt |
検索ワード | Google Sheetsノード(最初のノード)から 検索ワード |
記事内容 | Google Geminiノードから text (AIが生成した出力) |
URL | Split Outノードの出力から url |
【解説】 この表は、ワークフローの最終段階で、AIやNews APIから得られたデータを、Google Sheetsのどの列に挿入するかを示す「データマッピング」の詳細です。publishedAt
やurl
といった記事データは、Item Listsノードの出力から取得します。AIの出力データは、Geminiノードではtext
フィールドから取得される点を確認してください。
ワークフローの最終実行
すべてのノード接続と設定を確認したら、n8nの画面右上の「Activate (アクティベート)」ボタンをオンにします。まずは「Test Workflow」を実行し、データが正しく流れ、スプレッドシートに記録されることを確認しましょう。
最後に
でもね思うんですよ。
実際GeminiやChatGPTで修正して保存する必要ないですよね苦笑。そのままリストを保存すれば済むことだし。無理やりコストを気にしながらLLMを回す必要ないかな。まぁ勉強したと思って。納得しましょう。
確認が必要なことに自動化は無理がありますよね。
ということで、自動化は定型で決まり。予約投稿とかね。