契約書レビューの手間をゼロに!n8nでAIがリスクを自動検出&報告

目次

はじめに

契約書レビューに時間を取られていませんか? n8nとGeminiを活用すれば、Googleドライブに契約書をアップロードするだけで、AIが自動的に内容を読み取り、リスクを分析し、レポートを作成してSlackに通知してくれます。 本記事では、すべての処理をn8n内で完結させる「AI契約書レビュー自動化フロー」を紹介します。

完成イメージ

こんなシーンでの活用に適しています

  • 契約書チェックを人手に頼らず自動で行いたい
  • AIにリスク判定を任せ、法務担当者は結果レビューに集中したい
  • Googleドライブ・Slackを業務で利用しており、自動通知を組み込みたい

方法:n8n × Gemini × Googleドライブ × Slack

メリット完全自動化: アップロード検知からAI判定、通知まで一連の流れを自動処理
正確なOCR: Geminiがスキャン画像から条文を高精度に抽出
AIレビュー: Geminiが契約書内容をリスク別に評価・整理
ドキュメント化: Googleドキュメントに自動レポート生成
Slack通知: 完了結果をチームにリアルタイム共有
デメリット認証設定: Google APIやSlack連携の事前設定が必要
AIコスト: Gemini API利用時のトークン課金あり
精度調整: AI出力を安定化させるためのプロンプト調整が必要
難易度・面倒さ難易度:★★★☆☆(中級)
所要時間: 約60分
必要スキル: n8nノード接続/API認証設定/AIモデル操作
特徴完全ノーコードでAI契約レビュー実行
GoogleドライブとSlackを中心に完結
Gemini 2.5 Flashモデルで高精度OCR+解析
価格n8n: セルフホスト無料/クラウド版は€20〜
Gemini: 従量課金(無料枠あり)
Google Workspace: 有料プラン推奨
Slack: 無料〜
合計: 無料〜月数千円で運用可能

事前準備

  • n8nアカウント(Gemini API、Slack accountを連携済み)
    ⇒まだ連携していない場合はこの記事を参考に設定
  • Gmailアカウント
  • Googleドライブ・GoogleドキュメントのOAuth認証設定
    ⇒まだ完了していない場合はこの記事を参考に設定
  • 契約書アップロード用のGoogle Driveフォルダの作成

設定手順

Step 1:ワークフローの作成

1-1. 以下のコードをコピーし、JSONファイル形式(.json)で保存

{
  "name": "ジドウカ3_契約書自動レビューフロー",
  "nodes": [
    {
      "parameters": {
        "resource": "fileFolder",
        "limit": 1,
        "filter": {
          "folderId": {
            "__rl": true,
            "value": "12e_glu_c1Uv-25fPL5OfB4zQ-aVytPzc",
            "mode": "list",
            "cachedResultName": "契約書アップロード",
            "cachedResultUrl": "https://drive.google.com/drive/folders/12e_glu_c1Uv-25fPL5OfB4zQ-aVytPzc"
          }
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        224,
        0
      ],
      "id": "b46736bd-eaf7-4350-883e-c14519675bb5",
      "name": "Search files and folders",
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "rIALRnOQ8xSadrbc",
          "name": "Google Drive account"
        }
      }
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $json.id }}",
          "mode": "id"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        448,
        0
      ],
      "id": "2d648816-ad0b-4f7b-a09e-ab2f7a5be9d8",
      "name": "Download file",
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "rIALRnOQ8xSadrbc",
          "name": "Google Drive account"
        }
      }
    },
    {
      "parameters": {
        "resource": "image",
        "operation": "analyze",
        "modelId": {
          "__rl": true,
          "value": "models/gemini-2.5-flash",
          "mode": "list",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "text": "task: >\n  契約書(PDF/スキャン画像/写真)から必要情報を高精度に抽出し、構造化した文章で返すOCRアシスタントとして動作すること。\n\nrequirements:\n  input:\n    - 入力はPDFまたは画像(バイナリ)\n    - 日本語文書を主対象(英数字・印影・手書き追記も可能な限り読取)\n    - 様式自由(甲乙表記/当事者表/別紙/条番号/脚注/表組/押印/署名など)\n    - マルチページ対応。ページ毎の出典ページ番号を保持",
        "inputType": "binary",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "typeVersion": 1,
      "position": [
        672,
        0
      ],
      "id": "131c6b82-a690-4bff-b0b3-e2c0fd1877c8",
      "name": "Analyze an image",
      "credentials": {
        "googlePalmApi": {
          "id": "HKsCppv3EXXWE0EZ",
          "name": "Google Gemini(PaLM) Api account"
        }
      }
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "models/gemini-2.5-flash",
          "mode": "list",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "messages": {
          "values": [
            {
              "content": "=task: >\n  あなたは日本の法律・商慣行に精通した「契約レビュー担当(AI)」として振る舞い、\n  入力テキスト(OCR済みの契約書全文)を読み取り、リスクと改善案を\n  Googleドキュメントに貼り付けるだけで読める“レポート体裁のプレーンテキスト”で出力せよ。\n  法的助言ではなく、客観的・論理的なリスク分析に徹すること。\n\ninputs:\n  - contract_text: |{{ $json.content.parts[0].text }}\n  - perspective: \"{{review_perspective|中立}}\"   # \"委託者側\" / \"受託者側\" / \"中立\" いずれか(未指定は中立)\n\nassumptions_and_scope:\n  - 契約種別は様々(業務委託、準委任、売買、NDA、ライセンス、SaaS、保守、SES、派遣 等)。\n  - 条項の位置や名称は任意(番号・別紙・注記・追記・手書き含む)。\n  - 立場別評価(委託者/受託者)では、相手方有利表現・過度な義務・不均衡に着目。\n  - 一文書内に複数契約が含まれる可能性があるため、契約の固まり毎にレポートを繰り返す。\n  - 日本の一般法(民法・商法・下請法・個人情報保護法・著作権法 等)の基本枠組みに照らして論点整理。\n  - これはAIによるレビューであり最終的な法的判断ではない。\n\nanalysis_focus:\n  - 期間・更新・解約/解除・違約金・解約予告\n  - 役務/成果物・納期・検収・瑕疵対応・SLA\n  - 代金・支払条件・税区分・遅延損害金・価格改定\n  - 知的財産(著作権/特許/成果物帰属/ライセンス/二次利用)\n  - 機密保持・個人情報・再委託・下請・秘密保持期間\n  - 責任制限(上限/除外)・免責・保証\n  - 反社条項・準拠法・管轄・通知方法・不可抗力\n  - 競業避止・帰属表示・オープンソース利用条件 等\n\nscoring_and_flags:\n  - 総合リスクスコア: 0〜100(高いほどリスク大)\n  - 影響度: 「高/中/低」\n  - 赤信号(高リスク)/黄信号(中)/緑(低)を明示\n  - 不明・曖昧は「[不明点]」として列挙\n\noutput_format:\n  type: PLAIN_TEXT\n  rules:\n    - UTF-8のプレーンテキストのみ。Markdown/コードブロック/JSONは禁止。\n    - 見出しは全角記号と横罫線で装飾(Googleドキュメントで視認性が高い構造)。\n    - 箇条書きは「・」を使用。小見出しに「■」「●」を使用。\n    - 条項別レビューは1条項=1ブロックで「抜粋/リスク/根拠/影響度/改善提案」を固定順。\n    - 長文化を避け、各ブロックは要点を端的に(1項目あたり3〜6行目安)。\n    - 立場({{review_perspective|中立}})に応じた注意点を明記。\n    - 複数契約が検出された場合、各契約を「== 契約 #n ==」で区切って順次出力。\n\nlayout_spec: |\n  【契約レビュー・レポート】({{review_perspective|中立}})\n  発行日:YYYY-MM-DD\n  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n  1. 契約概要\n  ・想定契約種別:\n  ・文書タイトル(判明時):\n  ・当事者(判明時):\n  ・期間/更新:\n  ・準拠法/管轄:\n  ・総合リスクスコア(0-100):\n  ・リスク総評(1〜3行):\n\n  2. 重要リスク(サマリー)\n  【赤信号(高)】\n  ・(例)検収:再検収規定がなく受領擬制の恐れ\n  ・(例)責任制限:上限不明確、間接損害除外の規定なし\n  【黄信号(中)】\n  ・(例)支払サイト:遅延利息・未払い時の停止権が不明確\n  【緑(低)】\n  ・(例)反社条項:一般的な水準で問題小\n\n  3. 条項別レビュー(詳細)\n  ── 検収 ───────────────────────────\n  抜粋:……\n  リスク:……\n  根拠・理由:……\n  影響度:高/中/低\n  改善提案:……\n  (必要に応じ条番号/別紙/ページ情報を簡記)\n\n  ── 責任制限 ───────────────────────\n  抜粋:……\n  リスク:……\n  根拠・理由:……\n  影響度:高/中/低\n  改善提案:……\n\n  ── 知的財産 ───────────────────────\n  抜粋:……\n  リスク:……\n  根拠・理由:……\n  影響度:高/中/低\n  改善提案:……\n\n  (※他の該当条項も同様の形式で列挙:期間・更新・解約/解除・支払・SLA・再委託・機密・個情保護・不可抗力・競業避止・通知 など)\n\n  4. 実務運用チェックリスト\n  ・検収フロー(納入→検証→修正→再検収→完了)が明記されている\n  ・修正期限/回数・受領擬制・再検収の条件が具体的\n  ・価格改定・物価変動条項の有無と手続きが明確\n  ・責任上限と除外項目(故意重過失/人身/知財侵害等)の整理\n  ・個人情報/委託・再委託の管理(委託先の義務/監督)が明確\n  ・準拠法/管轄/通知方法/反社条項が整備\n\n  5. 不明点・追加確認事項\n  ・[不明点]……\n  ・[確認要請]……\n\n  6. 立場別の留意点({{review_perspective|中立}})\n  ・委託者側:……\n  ・受託者側:……\n\n  7. 免責\n  ・本レポートはAIによる契約内容の論理的レビューであり、最終的な法的助言ではありません。\n\nconstraints:\n  - プレーンテキスト以外の記法(Markdown/JSON/HTML/コードブロック/絵文字)は使用しない。\n  - 数字や日付の推定は明示(例:「〜と推定」)。\n  - 抜粋は改変せず要旨引用(可能な限り50〜150文字)。\n  - リスクブロックは高リスクから順に並べる。\n  - テキストは改ページなしで読みやすい長さに分割(見出し・罫線で区切る)。\n  - 複数契約検出時は「== 契約 #n ==」で契約単位のレポートを連結。\n\nexample_output: |\n  【契約レビュー・レポート】(中立)\n  発行日:2025-10-11\n  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n  1. 契約概要\n  ・想定契約種別:業務委託契約(推定)\n  ・文書タイトル(判明時):業務委託基本契約書\n  ・当事者(判明時):株式会社A/株式会社B\n  ・期間/更新:1年・自動更新(推定)。解約予告30日前(記載不明)\n  ・準拠法/管轄:日本法/東京地裁(推定)\n  ・総合リスクスコア(0-100):72\n  ・リスク総評:検収・責任制限・知財帰属に未整備がみられ、委託者に不利となる可能性。\n\n  2. 重要リスク(サマリー)\n  【赤信号(高)】\n  ・検収:再検収規定がなく、受領擬制の恐れ\n  ・責任制限:上限値や除外の明確化が不足\n  【黄信号(中)】\n  ・支払条件:遅延利息・停止権が不明確\n  【緑(低)】\n  ・反社:一般的条項で問題小\n\n  3. 条項別レビュー(詳細)\n  ── 検収 ───────────────────────────\n  抜粋:「成果物の納入後、10営業日以内に…」\n  リスク:期間短く是正手当不十分で受領擬制リスク\n  根拠・理由:実務上は再検収・是正期間の確保が望ましい\n  影響度:高\n  改善提案:検収30日・修正後の再検収・受領擬制の限定条件を明記\n\n  ── 責任制限 ───────────────────────\n  抜粋:「本契約に基づく累計責任は…の範囲とする」\n  リスク:上限の明確性不足・除外項目の欠落\n  根拠・理由:重大過失・人身・知財侵害等の除外が一般\n  影響度:高\n  改善提案:上限=月額対価×12、除外(故意重過失/人身/知財侵害等)を明記\n\nexecution_steps:\n  - 入力のOCRテキストを精読し、契約の固まり単位でレポートを生成。\n  - 重要度の高い条項から優先的にレビュー。\n  - 出力は上記layout_specに厳密に従ったプレーンテキストのみ。\n  - 不明点・推定は必ず明記し、立場(perspective)に応じた留意点も加える。\n"
            }
          ]
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "typeVersion": 1,
      "position": [
        896,
        0
      ],
      "id": "12d3d504-08a6-469c-8b02-628168fa1061",
      "name": "Message a model",
      "credentials": {
        "googlePalmApi": {
          "id": "HKsCppv3EXXWE0EZ",
          "name": "Google Gemini(PaLM) Api account"
        }
      }
    },
    {
      "parameters": {
        "folderId": "=12e_glu_c1Uv-25fPL5OfB4zQ-aVytPzc",
        "title": "契約書レポート"
      },
      "type": "n8n-nodes-base.googleDocs",
      "typeVersion": 2,
      "position": [
        1248,
        0
      ],
      "id": "792ce899-a8d8-40a5-922e-561e47c3cadf",
      "name": "Create a document",
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "JItms724hTTZGUWJ",
          "name": "Google Docs account"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "documentURL": "={{ $json.id }}",
        "actionsUi": {
          "actionFields": [
            {
              "action": "insert",
              "text": "={{ $('Message a model').item.json.content.parts[0].text }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.googleDocs",
      "typeVersion": 2,
      "position": [
        1472,
        0
      ],
      "id": "47197cf6-f5d4-4078-b299-75deea5a9833",
      "name": "Update a document",
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "JItms724hTTZGUWJ",
          "name": "Google Docs account"
        }
      }
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "value": "C09G8RU6RPC",
          "mode": "list",
          "cachedResultName": "n8n-test"
        },
        "text": "=契約書のレビューが完了しました。\n",
        "otherOptions": {}
      },
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.3,
      "position": [
        1696,
        0
      ],
      "id": "5fbdff7e-705b-4a21-b1ee-a6b1b1462fe0",
      "name": "Send a message",
      "webhookId": "3c7a484b-295f-4b14-8a91-a97a949b0324",
      "credentials": {
        "slackApi": {
          "id": "hodElcAmbWxcnRmR",
          "name": "Slack account"
        }
      }
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "value": "12e_glu_c1Uv-25fPL5OfB4zQ-aVytPzc",
          "mode": "id"
        },
        "event": "fileUpdated",
        "options": {}
      },
      "type": "n8n-nodes-base.googleDriveTrigger",
      "typeVersion": 1,
      "position": [
        0,
        0
      ],
      "id": "2ee46a0b-a3dd-47e6-b01e-a16fe98538c4",
      "name": "Google Drive Trigger",
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "rIALRnOQ8xSadrbc",
          "name": "Google Drive account"
        }
      }
    }
  ],
  "pinData": {},
  "connections": {
    "Search files and folders": {
      "main": [
        [
          {
            "node": "Download file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download file": {
      "main": [
        [
          {
            "node": "Analyze an image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze an image": {
      "main": [
        [
          {
            "node": "Message a model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "Create a document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a document": {
      "main": [
        [
          {
            "node": "Update a document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update a document": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive Trigger": {
      "main": [
        [
          {
            "node": "Search files and folders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9fe6e309-4e3a-4825-87a5-1274397f94d3",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "6a235be8805da9b62cede6cae423a7cbc1dca7bf9e465d78d217ade2a2f445d9"
  },
  "id": "9GWA4EQ3LjJFbwnV",
  "tags": []
}

1-2. n8nで新規ワークフローを作成し、右上の「・・・」から、Import from Fileを選択し、保存したJSONファイルを選択

1-3. 全体のフロー接続が完成していることを確認

Step 2:Google Driveの設定(トリガー~ファイルダウンロード)

2-1. トリガー~ファイルダウンロードを実施するGoogle Driveノード設定を確認する。

2-2. Google Drive Triggerをクリックし設定を実施する。Folderで契約書をアップロードするフォルダ(事前作成)を指定し、Watch forでFile Updatedを選択することで、フォルダにファイルがアップロードされるとTriggerが起動する。

2-3. Search files and folderをクリックし設定を実施する。Add Filterで追加したFilterで契約書をアップロードするフォルダ(事前作成)を指定し、アップロードされたファイル情報を取得する。

2-3.Download file rをクリックし設定を確認する。ここでは、前のノードで取得しファイル情報に記載されたファイルIDを指定し、n8nに契約書をBinary形式でDownloadする。


Step 3:Geminiノードの設定(OCR~テキスト生成まで)

3-1. OCR~テキスト生成を実施するGeminiノード設定を確認する。

3-2. Analyze an Imagerをクリックし設定を確認する。DownloadされたBinary File(data)をインプットとしてOCRを実施する。OCRを実施する際のプロンプトは以下の通り。

task: >
契約書(PDF/スキャン画像/写真)から必要情報を高精度に抽出し、構造化した文章で返すOCRアシスタントとして動作すること。

requirements:
input:
- 入力はPDFまたは画像(バイナリ)
- 日本語文書を主対象(英数字・印影・手書き追記も可能な限り読取)
- 様式自由(甲乙表記/当事者表/別紙/条番号/脚注/表組/押印/署名など)
- マルチページ対応。ページ毎の出典ページ番号を保持

3-3. Message a modelをクリックし設定を確認する。OCRで抽出された契約書テキスト情報をAIに入力し、レビューを実施する。レビューする際のプロンプトは以下の通り。

task: >
  あなたは日本の法律・商慣行に精通した「契約レビュー担当(AI)」として振る舞い、
  入力テキスト(OCR済みの契約書全文)を読み取り、リスクと改善案を
  Googleドキュメントに貼り付けるだけで読める“レポート体裁のプレーンテキスト”で出力せよ。
  法的助言ではなく、客観的・論理的なリスク分析に徹すること。

inputs:
  - contract_text: |{{ $json.content.parts[0].text }}
  - perspective: "{{review_perspective|中立}}"   # "委託者側" / "受託者側" / "中立" いずれか(未指定は中立)

assumptions_and_scope:
  - 契約種別は様々(業務委託、準委任、売買、NDA、ライセンス、SaaS、保守、SES、派遣 等)。
  - 条項の位置や名称は任意(番号・別紙・注記・追記・手書き含む)。
  - 立場別評価(委託者/受託者)では、相手方有利表現・過度な義務・不均衡に着目。
  - 一文書内に複数契約が含まれる可能性があるため、契約の固まり毎にレポートを繰り返す。
  - 日本の一般法(民法・商法・下請法・個人情報保護法・著作権法 等)の基本枠組みに照らして論点整理。
  - これはAIによるレビューであり最終的な法的判断ではない。

analysis_focus:
  - 期間・更新・解約/解除・違約金・解約予告
  - 役務/成果物・納期・検収・瑕疵対応・SLA
  - 代金・支払条件・税区分・遅延損害金・価格改定
  - 知的財産(著作権/特許/成果物帰属/ライセンス/二次利用)
  - 機密保持・個人情報・再委託・下請・秘密保持期間
  - 責任制限(上限/除外)・免責・保証
  - 反社条項・準拠法・管轄・通知方法・不可抗力
  - 競業避止・帰属表示・オープンソース利用条件 等

scoring_and_flags:
  - 総合リスクスコア: 0〜100(高いほどリスク大)
  - 影響度: 「高/中/低」
  - 赤信号(高リスク)/黄信号(中)/緑(低)を明示
  - 不明・曖昧は「[不明点]」として列挙

output_format:
  type: PLAIN_TEXT
  rules:
    - UTF-8のプレーンテキストのみ。Markdown/コードブロック/JSONは禁止。
    - 見出しは全角記号と横罫線で装飾(Googleドキュメントで視認性が高い構造)。
    - 箇条書きは「・」を使用。小見出しに「■」「●」を使用。
    - 条項別レビューは1条項=1ブロックで「抜粋/リスク/根拠/影響度/改善提案」を固定順。
    - 長文化を避け、各ブロックは要点を端的に(1項目あたり3〜6行目安)。
    - 立場({{review_perspective|中立}})に応じた注意点を明記。
    - 複数契約が検出された場合、各契約を「== 契約 #n ==」で区切って順次出力。

layout_spec: |
  【契約レビュー・レポート】({{review_perspective|中立}})
  発行日:YYYY-MM-DD
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  1. 契約概要
  ・想定契約種別:
  ・文書タイトル(判明時):
  ・当事者(判明時):
  ・期間/更新:
  ・準拠法/管轄:
  ・総合リスクスコア(0-100):
  ・リスク総評(1〜3行):

  2. 重要リスク(サマリー)
  【赤信号(高)】
  ・(例)検収:再検収規定がなく受領擬制の恐れ
  ・(例)責任制限:上限不明確、間接損害除外の規定なし
  【黄信号(中)】
  ・(例)支払サイト:遅延利息・未払い時の停止権が不明確
  【緑(低)】
  ・(例)反社条項:一般的な水準で問題小

  3. 条項別レビュー(詳細)
  ── 検収 ───────────────────────────
  抜粋:……
  リスク:……
  根拠・理由:……
  影響度:高/中/低
  改善提案:……
  (必要に応じ条番号/別紙/ページ情報を簡記)

  ── 責任制限 ───────────────────────
  抜粋:……
  リスク:……
  根拠・理由:……
  影響度:高/中/低
  改善提案:……

  ── 知的財産 ───────────────────────
  抜粋:……
  リスク:……
  根拠・理由:……
  影響度:高/中/低
  改善提案:……

  (※他の該当条項も同様の形式で列挙:期間・更新・解約/解除・支払・SLA・再委託・機密・個情保護・不可抗力・競業避止・通知 など)

  4. 実務運用チェックリスト
  ・検収フロー(納入→検証→修正→再検収→完了)が明記されている
  ・修正期限/回数・受領擬制・再検収の条件が具体的
  ・価格改定・物価変動条項の有無と手続きが明確
  ・責任上限と除外項目(故意重過失/人身/知財侵害等)の整理
  ・個人情報/委託・再委託の管理(委託先の義務/監督)が明確
  ・準拠法/管轄/通知方法/反社条項が整備

  5. 不明点・追加確認事項
  ・[不明点]……
  ・[確認要請]……

  6. 立場別の留意点({{review_perspective|中立}})
  ・委託者側:……
  ・受託者側:……

  7. 免責
  ・本レポートはAIによる契約内容の論理的レビューであり、最終的な法的助言ではありません。

constraints:
  - プレーンテキスト以外の記法(Markdown/JSON/HTML/コードブロック/絵文字)は使用しない。
  - 数字や日付の推定は明示(例:「〜と推定」)。
  - 抜粋は改変せず要旨引用(可能な限り50〜150文字)。
  - リスクブロックは高リスクから順に並べる。
  - テキストは改ページなしで読みやすい長さに分割(見出し・罫線で区切る)。
  - 複数契約検出時は「== 契約 #n ==」で契約単位のレポートを連結。

example_output: |
  【契約レビュー・レポート】(中立)
  発行日:2025-10-11
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  1. 契約概要
  ・想定契約種別:業務委託契約(推定)
  ・文書タイトル(判明時):業務委託基本契約書
  ・当事者(判明時):株式会社A/株式会社B
  ・期間/更新:1年・自動更新(推定)。解約予告30日前(記載不明)
  ・準拠法/管轄:日本法/東京地裁(推定)
  ・総合リスクスコア(0-100):72
  ・リスク総評:検収・責任制限・知財帰属に未整備がみられ、委託者に不利となる可能性。

  2. 重要リスク(サマリー)
  【赤信号(高)】
  ・検収:再検収規定がなく、受領擬制の恐れ
  ・責任制限:上限値や除外の明確化が不足
  【黄信号(中)】
  ・支払条件:遅延利息・停止権が不明確
  【緑(低)】
  ・反社:一般的条項で問題小

  3. 条項別レビュー(詳細)
  ── 検収 ───────────────────────────
  抜粋:「成果物の納入後、10営業日以内に…」
  リスク:期間短く是正手当不十分で受領擬制リスク
  根拠・理由:実務上は再検収・是正期間の確保が望ましい
  影響度:高
  改善提案:検収30日・修正後の再検収・受領擬制の限定条件を明記

  ── 責任制限 ───────────────────────
  抜粋:「本契約に基づく累計責任は…の範囲とする」
  リスク:上限の明確性不足・除外項目の欠落
  根拠・理由:重大過失・人身・知財侵害等の除外が一般
  影響度:高
  改善提案:上限=月額対価×12、除外(故意重過失/人身/知財侵害等)を明記

execution_steps:
  - 入力のOCRテキストを精読し、契約の固まり単位でレポートを生成。
  - 重要度の高い条項から優先的にレビュー。
  - 出力は上記layout_specに厳密に従ったプレーンテキストのみ。
  - 不明点・推定は必ず明記し、立場(perspective)に応じた留意点も加える。

Step 4:Google Docsノードの設定(ファイル生成~アップデート)

4-1. ファイル生成~アップデートを実施するGoogle Docsノード設定を確認する。

4-2. Create a documentをクリックし設定を実施する。レビュー結果のGooldeドキュメントを作成するフォルダを指定する。今回の例では、契約書のアップロードフォルダに作成した。

4-3. Update a documentをクリックし設定を確認する。作成したGooldeドキュメントのIDを指定し、Message a modelの出力結果をテキストとし記載してUpdateする。

Step 5:Slackノードの設定(レビュー完了を通知)

5-1. 最後に、レビュー完了を通知するSlackノードを確認する。

5-2. Send a messageをクリックし設定を実施する。完了通知を送るスラックチャネルを設定し、送信するメッセージを入力する。

よくある質問

プログラミングは必要ですか?

不要です。n8nのノードをドラッグ&ドロップして設定するだけで自動化が可能です。

契約書の種類に制限はありますか?

特にありません。業務委託契約・NDA・売買契約など、Geminiが日本語文書を自動解析します。

レビュー結果の精度はどの程度ですか?

Gemini 2.5 Flashモデルは高精度な構文解析に対応していますが、最終判断は人間の法務確認を推奨します。

つまずきやすいポイント

  • Google APIの認証設定ミス → OAuth 2.0設定で「ドライブ」「ドキュメント」両方に権限が必要
  • Slackトークン権限不足 → Bot User OAuth Tokenを正しく設定
  • Geminiの出力が途中で途切れる → モデル選択を「Gemini 2.5 Flash」に変更し、トークン上限を拡大

なかなかうまくいかないときは?

「ドライブ検知が動かない」「Geminiの出力が不安定」「Slack通知が届かない」などでつまずく場合があります。 n8nは自由度が高い反面、API認証やAI設定の細部で手間取ることもあります。

そこで、おすすめしたいのが「ジドウカ」です。

ジドウカは、これまで合計800タスク以上の業務の自動化をしてきた実績のある法人専用の自動化サービスです。

業務の一部を“タスク単位”で自動化し、【月額1万円から】安定運用できるサブスクリプション型のサービスです。 「この契約書チェックをラクにしたい」と伝えるだけで、AIと自動化の設計まで代行可能です。

まとめ

本記事では、n8nだけで構築できる「AI契約書レビュー自動化フロー」を紹介しました。 Googleドライブへのアップロードをトリガーに、GeminiがOCRとリスク判定を行い、レポート生成・Slack通知までを全自動で実行します。

法務担当の手作業を減らし、AIが正確かつスピーディに契約書をチェックする。 n8nとGeminiを組み合わせることで、あなたのチームも“契約書レビューの手間ゼロ化”を実現できます。

目次