14
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

n8n脱初心者への道【第3回】API連携の神髄!HTTP Requestノードで世界と繋がる

Posted at
  1. はじめに
    こんにちは!あなたのワークフローを次のレベルへ導く、シニアエンジニアです。

第1回では「データ」を、第2回では「ロジック」を学びました。ワークフローの体内を流れる血液を理解し、その流れをコントロールする心臓を手に入れた今、いよいよn8nの真価を発揮する時が来ました。

今回のテーマは**「API連携」**です。

ワークフローが自己完結していては、その価値は限定的です。外部の世界から情報を取得し、処理した結果を外部の世界へ送り出すことで、自動化の価値は爆発的に高まります。天気情報、株価、プロジェクト管理ツール、顧客情報、そしてAI――。これらすべてと対話するための「言葉」、それがAPI (Application Programming Interface) です。

この記事では、n8nでAPI連携を行うための2つのアプローチ、特に、n8nをただのツールから「万能な開発プラットフォーム」へと昇華させる最強の武器、HTTP Requestノードの神髄に迫ります。

この記事を読み終えた時、あなたはもはやn8nが用意したレールの上を走るだけのユーザーではありません。自ら道なき道にレールを敷き、世界中のあらゆるサービスとワークフローを繋ぐ「インテグレーション・エンジニア」としての第一歩を踏み出しているでしょう。

  1. 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に登録する」**という鉄則を徹底してください。これはプロの自動化エンジニアとしての最低限の作法です。

  1. 簡単・確実!専用ノードでのAPI連携
    n8nが多くのユーザーに愛される理由の一つが、豊富に用意された**「専用ノード」**です。Slack、Google Sheets、Twitter、AWSなど、主要なサービスには、そのサービスとの連携に特化したノードが用意されています。

(画像はSlack, Google, AWSなどのノードアイコンが並んでいるイメージ)

メリット
専用ノードのメリットは、APIの複雑な部分をすべて隠蔽してくれることです。あなたは、そのサービスで「何をしたいか」を選ぶだけです。

APIのエンドポイントURL? 知らないでOK。

必要なHTTPメソッド(GET/POST)? 意識しなくてOK。

データの送信形式? ノードが全部やってくれます。

例えばSlackノードなら、登録済みのCredentialを選択し、「メッセージを投稿する」というアクションを選び、チャンネル名と本文を入力するだけで、APIの裏側を一切知らなくてもSlack連携が実現します。

【基本方針】
連携したいサービスの専用ノードがn8nに存在するなら、まずはそれを使うのが最も簡単で確実な方法です。

  1. 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の仕様書という設計図通りに、ノードの各項目を埋めていくだけ」**です。

  1. 実践!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要約ニュース】 :robot:
タイトル: <{{ $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に届けてくれます。

  1. まとめ:あなたはもう、APIの利用者から創造者へ
    今回は、n8nの心臓部であるAPI連携、特に最強の武器HTTP Requestノードの使い方をマスターしました。

APIキーはCredentialsで安全に管理する。

専用ノードがあれば、まずはそれを使うのが近道。

専用ノードがなければHTTP Requestノードの出番。API仕様書を片手に、世界中のサービスと対話できる。

HTTP Requestノードを使いこなせるようになったあなたは、もはやn8nが提供する機能をただ利用するだけの「利用者」ではありません。APIという共通言語を操り、様々なサービスを自在に組み合わせ、全く新しい価値を創造する「開発者」の領域に足を踏み入れたのです。

さて、APIから一度に大量のデータを取得できるようになった今、次なる課題が見えてきます。取得した100個のアイテムを、一つずつ丁寧に、かつ効率的に処理するにはどうすれば良いのでしょうか?

次回、第4回では**「複数アイテムの処理(ループ)と高度なデータ加工」**に焦点を当て、大量のデータを華麗にさばくためのテクニックを解説します。

それでは、良き自動化ライフを!

14
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?