🗝️

n8nでコラボフローと生成AIをコラボする

に公開

みなさんこんにちは!
最近はしっかりと寒くなってきて、毎日の犬の散歩でネックウォーマーが欠かせない、なるおです。
みなさまいかがお過ごしでしょうか。
ぜひ風邪などひかれないよう、暖かく🔥してこの記事をご覧いただければと思います。

今回は、コラボスタイル Advent Calendar 2025 その2 12月19日の記事として、n8nを使って、コラボフローと生成AIをコラボする方法について書いてまいります!


n8nでコラボレーションする

n8nについては継続的に話題になっておりましたので、すでにご存知の方も、そうでない方も参考になるところがあれば幸いです。

n8nとは

n8nは、IFTTTやZapierなどの、サービスとサービスを接続してワークフローを実現するOSSです。
セルフホスティングできることから、セキュリティ問題をクリアしやすく、若干技術者寄りではありますが複雑な処理を行うこともできます。

n8nで何をするかといいますと

タイトルの通り、今回はn8nとコラボフロー、生成AIをコラボレーションさせて「新規サービス導入時のセキュリティチェック」の支援をさせようと思います。

n8nとコラボフローと生成AIで解決する

さて本題です。
今回は、次の想定でシステムを組み合わせてセキュリティチェックの支援をさせていこうと思います。

利用するシステム

  • コラボフロー
  • n8n
  • 生成AI(お好みで)

想定する結果

  1. SaaSサービスの利用希望者が、コラボフローで申請する
  2. 情報セキュリティ担当者が調査・レポート・判断する内、調査・レポートを生成AIにやってもらう
  3. 情報セキュリティ担当者がレポート込みの申請書を受け取り、判定する

では早速、想定する結果となるようにワークフローを組んでいきましょう!

作っていきます!

今回作成するワークフローは、全体で次の様に動作させる設計としてみました。

  1. コラボフローで、SaaSサービスの利用申請を、利用希望者が申請する
  2. Webhookで、n8nのワークフローをキックする
  3. n8nで生成AIを使って1の申請のサービス名をもとにセキュリティリサーチとレポートを作成させる
  4. n8nで1の申請書を更新して判定する

完成イメージは次の通りです。(シンプルですね)

一つずつ順番に作成してみましょう。

1. コラボフローの申請部分

フォームを作成する

コラボフローの アプリ設定 > フォーム設定 から新規フォームを作成します。
今回は、記事用に最低限必要なフィールドのみを追加します。

パーツ名 パーツID パーツ種別 備考
サービス名 fidServiceName テキスト(一行) サービス名が入れられるよう、最大文字数を調整してください
生成AIによる調査結果 fidAIReport テキストエリア 長文レポートを受け入れられるよう、サイズを適宜調整してください

こんなフォームになりました。

実際の運用では、必要な項目を追加すると良いでしょう。
例えば、そのサービスにどんな情報を入力するか?も含めると、AIはより沿った回答を出しやすくなります。

経路を作成する

次の画像のように経路設定を行います。

先ほど作成したフォームを選択して、各経路アイテムは次のように設定します。

段階名 経路アイテム種別 編集可項目
AI情報収集 判定アイテム 生成AIによる調査結果(fidAIReportを編集可にする)
情報セキュリティ判定 判定アイテム(実際に人が判定する段階です) 今回は設定なし

この経路は、次のように動作することを想定して作成しています。

  1. 申請するとWebhookでn8nの今回のワークフローを呼び出す
  2. AI情報収集段階で、ワークフローの実行完了を待つ
  3. ワークフロー実行完了と同時にREST APIでAI情報収集段階を承認させる
  4. AIの結果も加味して判定する人に申請が届く

実際に運用するのであれば、こちらの経路も適切な形に変更してください。

2. Webhookでn8nのワークフローをキックします

経路とフォームが出来上がったら、まずはn8nにアクセスしてワークフローを作成します。
ここでは、n8nの作業と、コラボフローの作業とがありますのでご注意ください。

(1). 最初のステップ「Webhookトリガー」を追加する(n8nでの作業)

  1. n8nにログインし、画面右上の「Create workflow」ボタンをクリックして、新規ワークフロー作成画面に進みます
  2. 画面中央の+アイコン(Add first step...)をクリックし、検索欄に「Webhook」と入力します
  3. 「Webhook」を選択します
  4. HTTP Method欄はPOSTを選択します
  5. Test URLが選択されていることを確認して、すぐ下に表示されているURLをコピーします
  6. Listen for test eventボタンをクリックして、テスト用のWebhook受信を待機させます

(2). 経路のWebhookを有効化する(コラボフローでの作業)

  1. 経路を作成する で作成した経路の設定画面を開きます
  2. Webhookを選択します
  3. 新規登録ボタンをクリックします
  4. 次の通りWebhookの設定を行います
    a. Webhook名:任意の名前を入力します
    b. 通知先のWebhook URL:n8nでの作業で取得したTest URLをコピーします
    c. 通知条件:申請時のみを選択します
    d. このWebhookを有効にするにチェックが入っていることを確認します
    e. 保存ボタンをクリックします
  5. この経路の申請書を新規文書から作成して、パーツには適当な値を入力して申請します

(3). Webhookトリガーの受信テストをおこなう(n8nでの作業)

n8nが正常に稼働しており、(2)までの手順が問題なくできている場合、(1)でWebhookの受信待機をさせていた画面に戻ると、設定入力画面の右側に受信したWebhookの内容が表示され、待機状態が解除されます。

以降の手順で、この受信したWebhookの内容を利用しますので、OUTPUTの右上に表示されている画鋲アイコンをクリックして結果を固定して、Back to canvasをクリックしてWebhookの受信設定画面を閉じます。

3. コラボフローに結果を登録するために必要な情報をn8nへ事前に設定します

Webhookで受信した内容のみでは、コラボフローに対してAIの分析結果を登録するには情報が不足しているため、事前に必要な情報を登録しておけるようにn8nでEdit Fields(Set)を作成しておきます。

Fields to SetのAdd Fieldをクリックして、次の情報を入力します。

  • name:instance_name
  • value:コラボフローのインスタンス名

インスタンス名がわからない場合、次の記事をご確認ください。
Q. コラボフローのインスタンス名はどこで確認できますか?

設定したら、Execute stepを一度だけクリックして、次に進みます

4. 生成AIを使ってサービス名をもとにリサーチとレポートを作成させるステップをn8nに追加します

次の手順で生成AIにサービス名からリサーチとレポートを作成させる部分を作成します。

  1. Edit Fieldsから右に向かって生えている+アイコンをクリックし、右のパネルでAIを選択します
  2. お好みのAIを選択してください(今回はOpenAIを選択します)
  3. TEXT ACTIONS > Message a modelを選択します
  4. Credential to connect withフィールドで、Create New Credentialをクリックします
  5. Open AIでAPIキーを作成して入力します
  6. 必要に応じ、ダイアログ左上の名称をクリックして変更しておきます
  7. 元の画面に戻り、Modelを選択します(生成AIのモデルはお好みでどうぞ)
  8. Messages > Promptの入力欄をクリックしたら、Expressionという表示が入力欄上に表示されますので、クリックします
  9. INPUTのWebhookを展開し、fidServiceName > valueのアイコンをPromptの入力欄にドラッグ&ドロップします
  10. 続けて、Promptに以下に示すプロンプトを入力します
  11. Execute stepをクリックして、実行すると、OUTPUT欄に結果が出力されます

プロンプト

{{ $('Webhook').item.json.body.contents.fidServiceName.value }}は委託先として利用するサービス名です。
これを会社内で利用する際に、その利用が安全なものであるかを確認するため、次の調査項目を調査し、安全性をレポートしてください。
レポートは、テキストで1000文字以内としてください。
冗長な表現を避け、端的に出力してください。

## 調査項目
- 過去の情報セキュリティインシデント履歴
- セキュリティ認証規格の取得状況
- プライバシーポリシーにおける懸念点
- データ保存国に関する言及とカントリーリスクの分析

※こちらは一例です!
変更することで、さまざまな用途で分析させたりすることができるようになります!

5. n8nで申請書を更新して判定させます

先ほどの手順で取得した内容をコラボフローに反映させて承認させる手順です。

  1. 先ほど追加したAIのノードから右に向かって生えている+アイコンをクリックします
  2. 検索欄にHTTPと入力して、「HTTP Request」を選択します
  3. Method欄でPUTを選択します
  4. URL欄を選択し、Expressionをクリックしたら、https://cloud.collaboflow.com/{{ $('Edit Fields').item.json.instance_name }}/api/index.cfm/v1/documents/{{ $('Webhook').item.json.body.document_id }}をコピーして貼り付けます
  5. Authenticationで、Generic Credential Typeを選択します
  6. Generic Auth Typeで、Header Authを選択します
  7. Header Authで、Create New Credentialを選択します
  8. Name欄にX-Collaboflow-Authorizationと入力します
  9. Value欄は、コラボフロー REST APIを参考に、認証文字列を作成して入力します
  10. Send Query ParametersをONにします
  11. Nameにはapp_cdと入力し、Valueには{{ $('Webhook').item.json.body.app_cd }}を入力するか、INPUTパネルからapp_cdのアイコンをドラッグアンドドロップします
  12. Send BodyをONにします
  13. Body Content TypeをJSONに変更します
  14. Specify BodyはUsing JSONに変更します
  15. JSONには以下に示すBodyのJSONを入力します
  16. OptionsでResponseを選択し、Never Errorを選択します※1

BodyのJSON

{
  "action": "accept",
  "comment": "n8nでコラボ!",
  "document": {
    "fidAIReport": "{{ $json.output[0].content[0].text.replace(/\n/g, '\\n') }}"
  }
}

※1 コラボフローのPUT documents/文書ID は、成功時にJSONを返しませんが、それが原因でエラー扱いとなってしまいますので、今回は記事省略のためにNever Errorでエラーを無視する設定にしています。
実際には、コラボフロー側でエラーが発生した場合エラー内容がJSONで返りますので、適切な処理を行った方がいいでしょう。

※2 AIが返すテキストは改行コードが含まれていますが、エスケープしないとJSON内で文字列が改行されてコラボフロー側で拒否されてしまいます。
そのため、$json.output[0].content[0].text.replace...の部分で、改行コードをエスケープする処理を記述しています。

テストのできあがり

これまでの設定、大変お疲れ様でした。
これでテスト用の設定は完了していますので、Execute stepをクリックして実行してみましょう。
最初にテストで申請した申請書の「生成AIによる調査結果」パーツにAIの調査結果が次のように入力されます。

今回は例として、サービス名をコラボフローとして入力してみました。
よし・・・!いいぞ・・・!ChatGPTよ、素晴らしい結果を返してくれているじゃないか・・・!
(今後もセキュリティ対策、頑張ります!)

本番用に仕上げましょう!

上記の手順ではテスト用WebhookURLでおこなっていましたので、本番用WebhookURLに切り替える必要があります。

  1. Webhookノードをダブルクリックして編集モードにはいります
  2. Webhook URLsで、Production URLを選択してURLをコピーします
  3. コラボフローの経路のWebhook設定で2で設定したものを上書きします

以上です。
今度こそ終わりです!お疲れ様でした!

まとめ

  • コラボフローのWebhookでキックさせ、REST APIで更新させる
  • n8nのシンプルなワークフローでお手軽実装ができる
    • ほぼノーコードで実装できる

もちろん、自動化にはほど遠いですし、完全解決ではありません。
しかし、生成AIによる調査レポートがあることで、セキュリティ担当者はこれまで自身で収集していた情報の大半を自動化させることに成功しました。
ソースの確認は必要ですが、あらゆるリンクを集め、調査レポートを作成するにあたっては叩き台ができるだけでも大きい成果といえそうです。

また、この仕組みを流用することで、コラボフローの申請・判定業務のあらゆる部分で生成AIの力を借りることができます。

では明日は、川上さんと佐藤さんの記事になります!

川上さんはこちらのカレンダー
https://adventar.org/calendars/11620

佐藤さんはこちらのカレンダー
https://adventar.org/calendars/11621

ひきつづきお楽しみください🙇‍♂️

コラボスタイル Developers

Discussion