- はじめに
こんにちは!あなたのワークフローを次のレベルへ導く、シニアエンジニアです。
第1回では「データ」を、第2回では「ロジック」を学びました。ワークフローの体内を流れる血液を理解し、その流れをコントロールする心臓を手に入れた今、いよいよn8nの真価を発揮する時が来ました。
今回のテーマは**「API連携」**です。
ワークフローが自己完結していては、その価値は限定的です。外部の世界から情報を取得し、処理した結果を外部の世界へ送り出すことで、自動化の価値は爆発的に高まります。天気情報、株価、プロジェクト管理ツール、顧客情報、そしてAI――。これらすべてと対話するための「言葉」、それがAPI (Application Programming Interface) です。
この記事では、n8nでAPI連携を行うための2つのアプローチ、特に、n8nをただのツールから「万能な開発プラットフォーム」へと昇華させる最強の武器、HTTP Requestノードの神髄に迫ります。
この記事を読み終えた時、あなたはもはやn8nが用意したレールの上を走るだけのユーザーではありません。自ら道なき道にレールを敷き、世界中のあらゆるサービスとワークフローを繋ぐ「インテグレーション・エンジニア」としての第一歩を踏み出しているでしょう。
- API連携の作法:Credentials (認証情報) の鉄則
外部サービスと連携するには、ほとんどの場合「認証」が必要です。「私は正当な利用者ですよ」と証明するための鍵、それがAPIキーやトークンです。
n8nでは、これらの機密情報を安全かつ再利用可能に管理するためのCredentialsという仕組みが用意されています。
1-1. なぜCredentialsを使うのか?
「APIキーをノードに直接書き込んではいけないのですか?」
これは絶対に避けるべきアンチパターンです。
セキュリティリスク: ワークフローをエクスポートして共有した際、APIキーが丸見えになってしまいます。
メンテナンス性の低下: 同じAPIキーを複数のワークフローで使っている場合、キーが変更されたら全てのワークフローを修正して回る必要があります。
Credentialsに情報を登録しておけば、これらの問題は一挙に解決します。ワークフロー内には認証情報の実体は保存されず、安全な参照情報だけが記録されます。
1-2. Credentialsの設定方法
n8nの左側メニューから Credentials をクリックします。
Add credential ボタンを押し、連携したいサービスの認証方式に合ったタイプを選択します。
Header Auth: Authorization: Bearer のような、HTTPヘッダーで認証する最も一般的な方式です。
OAuth2: GoogleやSlackなどで使われる、より安全な認証方式です。
その他、各サービスに特化した認証タイプも多数用意されています。
まずは**「APIキーは必ずCredentialsに登録する」**という鉄則を徹底してください。これはプロの自動化エンジニアとしての最低限の作法です。
- 簡単・確実!専用ノードでのAPI連携
n8nが多くのユーザーに愛される理由の一つが、豊富に用意された**「専用ノード」**です。Slack、Google Sheets、Twitter、AWSなど、主要なサービスには、そのサービスとの連携に特化したノードが用意されています。
(画像はSlack, Google, AWSなどのノードアイコンが並んでいるイメージ)
メリット
専用ノードのメリットは、APIの複雑な部分をすべて隠蔽してくれることです。あなたは、そのサービスで「何をしたいか」を選ぶだけです。
APIのエンドポイントURL? 知らないでOK。
必要なHTTPメソッド(GET/POST)? 意識しなくてOK。
データの送信形式? ノードが全部やってくれます。
例えばSlackノードなら、登録済みのCredentialを選択し、「メッセージを投稿する」というアクションを選び、チャンネル名と本文を入力するだけで、APIの裏側を一切知らなくてもSlack連携が実現します。
【基本方針】
連携したいサービスの専用ノードがn8nに存在するなら、まずはそれを使うのが最も簡単で確実な方法です。
- n8nの真髄! HTTP Request ノードを使いこなす
では、専用ノードがないサービスと連携したい場合はどうすればいいのでしょうか? マイナーな業務SaaS、社内開発の独自API、あるいは、既存ノードが対応していない最新機能を使いたい場合など、その場面は必ず訪れます。
ここで登場するのが、今回の主役HTTP Requestノードです。
このノードは、**HTTP/HTTPSプロトコルで通信できる、あらゆるAPIと対話可能な「万能翻訳機」**です。これをマスターすれば、あなたのn8nの可能性は文字通り無限に広がります。
HTTP Request ノードの主要設定項目
このノードを使いこなすには、相手のAPIの「仕様書(ドキュメント)」を読み解く必要があります。仕様書に書かれている内容を、以下の各項目に設定していきます。
Authentication (認証): Credential for Header Auth などを選択し、ステップ1で登録した認証情報を指定します。
Request Method (リクエストメソッド): APIの仕様書で定められたメソッドを選択します。
GET: データ取得(例: ユーザー情報を取得)
POST: データ新規作成(例: 新しいタスクを作成)
PUT/PATCH: データ更新
DELETE: データ削除
URL: APIのエンドポイントURL。APIの仕様書に必ず記載されている、通信先の住所です。
Send: どのような形式でデータを送るかを指定します。
Query Parameters: GETメソッドで使う、URLの末尾に?key=valueの形で付与されるデータです。
Body: POSTやPUTメソッドで使う、メインの送信データです。JSON形式で送ることがほとんどです。
Options: HTTPヘッダーの追加など、さらに高度な設定が可能です。
最初は難しく感じるかもしれませんが、要は**「APIの仕様書という設計図通りに、ノードの各項目を埋めていくだけ」**です。
- 実践!AIでニュースを要約してSlackに投稿するボット
百聞は一見に如かず。RSSで取得したニュースを、OpenAIのAPIを使って要約し、Slackに投稿する実用的なワークフローを構築しましょう。このワークフローは、専用ノードとHTTP Requestノードの美しい連携を示しています。
シナリオ
[RSS Read] (専用ノード): Qiitaの特定タグの新着記事をRSSで取得する。
[HTTP Request] (万能ノード): 取得した記事の本文をOpenAIのAPIに送り、1文で要約してもらう。
[Set] (データ加工): Slackに投稿するためのメッセージを整形する。
[Slack] (専用ノード): 整形したメッセージを指定チャンネルに投稿する。
ワークフロー構築手順
Step 1: [RSS Read] ノードで記事を取得
URLに、監視したいRSSフィードのURLを入力します。例えば、Qiitaのn8nタグなら https://qiita.com/tags/n8n/feed です。
テスト実行すると、複数の記事がアイテムとして取得できることを確認します。(以降のノードは、この記事アイテムの数だけループ実行されます)
Step 2: OpenAIのCredentialを登録
事前にOpenAIのAPIキーを取得しておきます。
n8nのCredentials > Add credentialからHeader Authを選択。
Credential NameをOpenAI API Keyなど分かりやすい名前にします。
NameにAuthorizationと入力。
ValueにBearer (Bearerの後ろに半角スペースを必ず入れる)と入力し、続けてあなたのOpenAI APIキーを貼り付けます。
Step 3: [HTTP Request] ノードでAI要約を依頼
RSS Readノードの次にHTTP Requestノードを接続します。
Authentication: Header Authを選択し、先ほど作成したOpenAI API Keyを指定。
Request Method: POST
URL: https://api.openai.com/v1/chat/completions (OpenAIの仕様書に記載)
Send: Body
Body Content Type: JSON
Body: 以下のJSONを貼り付けます。記事のタイトルと本文を式({{ ... }})で埋め込んでいるのがポイントです。
JSON
{
"model": "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "あなたは優秀な編集者です。以下の記事の内容を、最も重要な1文で日本語で要約してください。"
},
{
"role": "user",
"content": "記事タイトル: {{ $json.title }}\n\n記事本文: {{ $json.contentSnippet }}"
}
],
"temperature": 0.7
}
テスト実行し、OpenAIから要約文を含むJSONが返ってくることを確認します。要約文はchoices[0].message.contentという階層に入っています。
Step 4: [Set] ノードで投稿メッセージを整形
HTTP Requestノードの次にSetノードを接続します。
Add Valueで、Nameにslack_message、Valueに以下のテキストを入力します。
【AI要約ニュース】
タイトル: <{{ $input.json.link }}|{{ $input.json.title }}>
AIによる要約:
{{ $json.choices[0].message.content }}
【ワンポイント解説】
ここでは$inputと$jsonの2つの変数を使い分けています。
{{ $input.json.title }}: このSetノードへの入力データ(Input)、つまりRSS Readノードが生成した元の記事データを参照しています。
{{ $json.choices[0].message.content }}: このSetノードで現在処理中のデータ(JSON)、つまり直前のHTTP Requestノードの実行結果を参照しています。
このように、複数のノードの出力を組み合わせて新しいデータを作れるのがSetノードの強力な点です。
Step 5: [Slack] ノードで投稿
Setノードの次にSlackノードを接続します。
認証情報と投稿したいチャンネルを選択します。
Textフィールドに、{{ $json.slack_message }}と入力します。
これで完成です!ワークフローを有効化(Active)すれば、指定したRSSフィードに新しい記事が投稿されるたびに、AIが自動で要約を作成し、あなたのSlackに届けてくれます。
- まとめ:あなたはもう、APIの利用者から創造者へ
今回は、n8nの心臓部であるAPI連携、特に最強の武器HTTP Requestノードの使い方をマスターしました。
APIキーはCredentialsで安全に管理する。
専用ノードがあれば、まずはそれを使うのが近道。
専用ノードがなければHTTP Requestノードの出番。API仕様書を片手に、世界中のサービスと対話できる。
HTTP Requestノードを使いこなせるようになったあなたは、もはやn8nが提供する機能をただ利用するだけの「利用者」ではありません。APIという共通言語を操り、様々なサービスを自在に組み合わせ、全く新しい価値を創造する「開発者」の領域に足を踏み入れたのです。
さて、APIから一度に大量のデータを取得できるようになった今、次なる課題が見えてきます。取得した100個のアイテムを、一つずつ丁寧に、かつ効率的に処理するにはどうすれば良いのでしょうか?
次回、第4回では**「複数アイテムの処理(ループ)と高度なデータ加工」**に焦点を当て、大量のデータを華麗にさばくためのテクニックを解説します。
それでは、良き自動化ライフを!