n8n × Claude で議事録を案件・記事案・ナレッジ・タスクに自動振り分けする実装ガイド

会議が 3 本続いた日の夜、Slack でこんなやり取りを目にすることがあります。「あの議事録、結局誰に転送した?」「あの発言、記事ネタにできそうだったけど、どこに書いた?」「あの…

n8n × Claude で議事録を 4 系統に振り分けるアーキテクチャイメージ

会議が 3 本続いた日の夜、Slack でこんなやり取りを目にすることがあります。「あの議事録、結局誰に転送した?」「あの発言、記事ネタにできそうだったけど、どこに書いた?」「あの顧客の依頼、対応漏れてないよね?」。議事録は出席者と書記の頭の中にしか残らず、半日経つと事実上消える — これが多くの中堅・中小企業のバックオフィスで起きている現実です。

本記事では、はてなベース株式会社が社内運用している「議事録自動振り分け」の実装図を全文公開します。Google Drive に置かれた会議メモを n8n(業務自動化ツール — ノーコードで API 同士をつなげるプラットフォーム)が監視し、Claude(Anthropic 製の生成 AI)が 4 系統に分類 して、それぞれ別の業務システムに自動投入する仕組みです。10 ノードのワークフロー JSON、プロンプト設計、運用での落とし穴まで、実際に作って 2 週間運用した結果を整理してお届けします。

この記事でわかること

(1) 議事録を「記事案/営業フォロー/社内ナレッジ/タスク」の 4 系統に分ける分類設計、(2) n8n の 10 ノード構成(Google Drive Trigger → Anthropic API → Switch → kintone/Notion/Tasks)、(3) Claude に渡すプロンプト設計のコツ、(4) 運用 2 週間で見えた落とし穴 5 つと回避策、(5) 月 10 時間を月 30 分に圧縮できた効果試算、まで。

なぜ議事録振り分けが業務改革のレバーになるのか

中堅・中小企業のバックオフィスでよく見るのは、「いい話」が会議の中で出るのに、それが行動につながらない構造です。営業同行で顧客が「あの記事よかった、もっと書いてくれ」と言っても、議事録に書きっぱなしで終わる。1on1 で部下が「この業務、自動化したい」と言っても、Slack で 1 度共有されるだけで具体化しない。

原因は単純で、議事録を「誰かが読んで」「関係する人に転送して」「対応の流れに乗せる」という人手の中継ぎが必要なためです。書記担当が忙しい時期は転送が止まり、転送先の人が休暇のときは流れが切れます。結果として、月に何百件と発生する「いい発言」のうち、業務として拾われるのは数件にとどまります。

ここに AI を差し込むと、人手の中継ぎが要らなくなります。Claude のような大規模言語モデル(LLM — ChatGPT や Claude の中身、大量の文章から学習した自動分類エンジン)に議事録を渡すと、「これは記事になる発言」「これは顧客が求めている対応」「これは社内ナレッジ」「これは担当者のタスク」といった種類別の分類が高い精度で返ってきます。人手で 30 分かかる仕分けが、Claude では数十秒で終わります。

全体アーキテクチャ — 4 系統に分けて、別々のシステムに流す

今回のシステムは、議事録を入口にして 4 つの出口に流すルーターです。それぞれの出口は社内ですでに使っている業務システムで、新たに作るのは「振り分け」の部分だけ。既存資産を活かせるのが n8n を使った設計の強みです。

タグ判定基準出力先システム出力フィールド例
記事ネタ「これブログにできる」と判断できる視点・実例・データkintone 記事案アプリタイトル候補 / カテゴリ / SEO キーワード / 元議事録リンク
営業フォロー顧客発言で次のアクションが必要なものkintone 商談アプリ顧客名 / 要約 / 期限 / 担当
社内ナレッジ業務手順・ツール使い方・運用ルール・失敗事例Notion 社内ナレッジ DBタイトル / カテゴリ / 要約 / 詳細
アクション担当者が明示的に着手宣言したタスクGoogle Tasks(担当者ごと)タスク名 / 期限 / リスト振り分け

5 番目に「雑談」というタグも設けていて、上記 4 系統のいずれにも該当しない発言(世間話や余談)は破棄します。これがないと、Claude が「とにかく何かのタグに振り分けないと」と無理矢理な分類をして精度が落ちる経験則から導入しました。

n8n の 10 ノード構成 — どこで何が起きるか

n8n はノードと呼ばれる小さな機能ブロックを線でつなぐ業務自動化ツールです。今回のワークフローは 10 個のノードで構成されています。実際の JSON ファイルを GitHub に置いてあるので(scripts/n8n/minutes-routing-workflow.json)、自社環境で import すれば認証情報を差し替えるだけで動かせます。

ノード名役割
1Google Drive Trigger議事録フォルダを毎分監視。新規ファイルが入ったら起動
2Google Drive Download対象議事録の本文を取得(Markdown or プレーンテキスト)
3HTTP Request → Anthropic APIClaude Sonnet 4.5 に「5 タグに分類してください」とプロンプトを投げる
4Code Node (JavaScript)Claude のレスポンス本文から JSON 配列を抽出して各タグの item に展開
5Switch Nodeタグ別に 4 出力(記事ネタ / 営業フォロー / 社内ナレッジ / アクション)。雑談は fallback で破棄
6HTTP Request → kintone 記事案アプリ記事ネタを kintone app 1535 に POST
7HTTP Request → kintone 商談アプリ営業フォローを kintone 商談アプリに POST
8Notion API社内ナレッジを Notion DB にページ作成
9Google Tasksアクションを担当者の Google Tasks に登録
10Slack完了通知を社内チャンネル #pr-minutes-routing に投稿(各タグの件数を集計)

n8n インスタンスの準備

n8n はセルフホスト版(Docker や Render で月 1,500 円〜)と Cloud 版(月 24 ドル〜)があります。社内データを扱うのでセルフホスト推奨。Render の Starter プラン(月 7 ドル)+ Postgres(月 7 ドル)の構成が中小企業の初期実装に最適です。

プロンプト設計のコツ — 「JSON で返す」を絶対に守らせる

Claude に「議事録を 5 タグに分類してください」と素朴に頼むと、人間向けに「以下のように分類しました」と前置きをつけたり、JSON のフォーマットが崩れたり、タグ名が表記揺れしたりします。n8n の Code Node で機械的にパースする必要があるので、出力形式を厳格に固定しないと運用が破綻します。

システムプロンプトには次の 5 つを必ず入れています。(1) タグの定義一覧、(2) タグ間の判別基準(特に「アクション」と「営業フォロー」の違い)、(3) 出力 JSON のスキーマ例、(4) 「同じ発言を複数タグに重複させない」「最も適合性が高いタグ 1 つだけ」のルール、(5) 補足説明や前置きを禁止する一文。

plainClaude に渡すシステムプロンプト(抜粋)
あなたは経営コンサル事務所の編集デスクとして、議事録を以下の5タグに分類するアシスタントです。

タグ一覧:
- 記事ネタ: ブログ記事化できる視点・実例・データ
- 営業フォロー: 顧客発言で次のアクションが必要なもの
- 社内ナレッジ: 業務手順・ツール使い方・運用ルール・失敗事例
- アクション: 担当者が明示的に着手宣言したタスク
- 雑談: 上記いずれでもない

出力は必ず以下の JSON 配列形式で返す:
[
  {
    "tag": "記事ネタ",
    "summary": "...",
    "detail": "...",
    "speaker": "...",
    "suggested_slug": "...",
    "suggested_category": "..."
  },
  ...
]

判断基準:
- 同じ発言を複数タグに重複させない(最も適合性が高いタグ 1 つ)
- 「記事ネタ」は読者が知りたがる視点であって、社内事情を含めない
- 「営業フォロー」は具体的な次のアクションが含まれているもの
- 「アクション」と「営業フォロー」の違い: 担当者主観の宣言(アクション)vs 顧客起点の依頼(営業フォロー)

前置き・後書き・補足説明は禁止。JSON 配列のみ返すこと。

Code Node では Claude のレスポンス本文から JSON 配列だけを正規表現で抜き出します。前置きをつけられても安全に処理できるようにする保険です。

javascriptn8n Code Node: JSON 抽出
// Claude のレスポンスから JSON 配列を取り出す
const body = $input.item.json.content?.[0]?.text || '';
const match = body.match(/[s*{[sS]*?}s*]/);
let items = [];
if (match) {
  try {
    items = JSON.parse(match[0]);
  } catch(e) {
    items = [];
  }
}
return items.map(it => ({ json: it }));

Switch Node で 4 系統に振り分ける

Code Node から出力された各 item は { tag: '記事ネタ', summary: '...', ... } のような形になっています。これを Switch Node で「tag フィールドの値」を条件にして 4 つの出口に振り分けます。

Switch Node の設定は 4 つの「条件」を順に並べ、最後に fallback として「上記のどれにも該当しない(=雑談)」を破棄するルートを作ります。fallback を作らないと、Claude が想定外のタグを返したときにエラーで止まるので必須です。

出力先システム — kintone / Notion / Google Tasks をどう繋ぐか

記事ネタ → kintone「記事案アプリ」

はてなベースでは記事案を kintone のアプリで管理しています。app id 1535(仮)に対して、HTTP Request ノードから POST するだけです。API トークンは事前にアプリ設定から発行しておきます。

bashkintone 記事案アプリ への POST
curl -X POST https://hatenabase.cybozu.com/k/v1/record.json 
  -H 'X-Cybozu-API-Token: <APP_TOKEN>' 
  -H 'Content-Type: application/json' 
  -d '{
    "app": 1535,
    "record": {
      "article_title": { "value": "<<Claude が返したタイトル候補>>" },
      "status": { "value": "検討中" },
      "category": { "value": "<<Claude が判定したカテゴリ>>" },
      "source_url": { "value": "<<元議事録 URL>>" }
    }
  }'

営業フォロー → kintone「商談アプリ」

営業アプリは既に運用済みのものを使います。フィールド名が業界・社内で異なるので、ここは各社の実装に合わせてマッピングが必要です。期限フィールドには n8n の $now.plus({days:7}) で +7 日を入れて、対応漏れを防ぎます。

社内ナレッジ → Notion DB

業務手順や運用ルールは Notion のデータベースに集約しています。n8n には Notion Integration が組み込みノードとしてあるので、データベース ID とプロパティ名を指定するだけで OK。Notion の Integration を該当 DB に Share しておくのを忘れないでください。

アクション → Google Tasks

「○○さん、月末までに準備しておいて」という発言は、発言者本人の Google Tasks に直接登録します。タスクの期限は +3 日をデフォルトに、ただし議事録本文に日付が含まれていればそれを優先するロジックを Code Node で追加しています。

完了通知 — Slack で集計を見える化

1 つの議事録から最終的に「記事ネタ 2 件 / 営業フォロー 3 件 / ナレッジ 1 件 / アクション 5 件」のような集計が出ます。これを Slack の専用チャンネル #pr-minutes-routing に投稿することで、誰がどの議事録から何を拾ったかが社内で透明化されます。

副次的な効果として、「あ、自分宛のアクションが入った」とその場で気づける動線になっています。Google Tasks の通知は人によってオン/オフが分かれるため、Slack 通知のほうが反応率が高い実感があります。

運用 2 週間で見えた落とし穴 5 つと回避策

落とし穴 1: 議事録ファイルが Markdown 以外

Word 形式(.docx)や Google Docs ネイティブ形式で保存された議事録は、そのままだと Claude が読みづらい構造になります。n8n の Google Drive Download で convert: text/plain オプションを使うか、別途 docx → text 変換ノード(Pandoc コンテナを HTTP Request で呼ぶ)を挟むのが確実です。

落とし穴 2: 発言者の固有名詞が誤認される

顧客名や社員のあだ名を Claude が知らない場合、Speaker フィールドが「不明」になります。kintone から顧客マスタを日次で同期して、Claude のプロンプトに辞書として埋め込む運用にすると一気に改善します。

落とし穴 3: 重要度のばらつきが大きい

「ちょっと気になる」レベルの発言まで全部記事案として登録されると、記事案アプリが埋もれます。Claude の出力に importance: 1〜5 フィールドを追加して、低スコアはダイジェスト化して週次でまとめる運用に変えると整理されます。

落とし穴 4: Anthropic API のレート制限

長い議事録(1 万字超)を 1 日に何本も処理すると、Tier 1 のレート制限に引っかかることがあります。Claude Haiku 4.5 にモデルを下げる(速い・安い・分類タスクには十分)か、Tier アップグレード申請をすると安定します。

落とし穴 5: Error Workflow がないと事故に気づけない

本番運用で 1 番怖いのは「いつの間にかワークフローが止まっていた」事故。n8n には Error Workflow(n8n 標準のエラーハンドラ機能。失敗時に専用ワークフローを起動できる)があるので、Settings から専用の通知用ワークフローを指定して、失敗時に Slack で即座にアラートするようにしておくと安心です。

導入効果 — 月 10 時間が月 30 分に

はてなベースで 2 週間運用した結果、議事録 1 本あたりの処理時間は次のように圧縮できました。

項目導入前導入後
議事録 1 本の処理時間30 分(読み返し+転送)3 分(AI 出力の最終確認のみ)
週 5 本処理150 分15 分
月 20 本処理10 時間1 時間
年間(240 本)120 時間12 時間

月 10 時間を月 30 分まで圧縮。年単位では 100 時間以上の作業を回収できる試算です。重要なのは「自動化」ではなく「圧縮」と捉えること。最終的な送信判断や承認は人間が行うので、人手をゼロにはできませんが、「読む・分類する・転送先を選ぶ」の中継ぎ作業がほぼ消えます。

コスト面でも軽量です。n8n(セルフホスト・Render)月 14 ドル、Anthropic API(議事録 1 本あたり 0.05〜0.10 ドル、月 20 本で 2 ドル前後)、合計で月 2,500 円程度。圧縮した時間 1 時間あたりに換算すると 250 円 / 時間で、社員の時間単価のはるか下です。

次のステップ — 議事録を超えて全社情報フローへ

議事録振り分けが安定稼働すると、自然に「他の情報源も振り分けたい」という発想が出てきます。社内 Slack の主要チャンネル投稿、お問い合わせフォームの回答、サポートメール、商談録音の文字起こしなど、入口を増やすだけで n8n + Claude のロジックはほぼそのまま再利用できます。

ここまでくると、社内の「情報をどう流すか」というレイヤーがソフトウェアで支えられる状態になります。属人化していた中継ぎ作業が消えて、判断と意思決定だけに人間のリソースが集中する状態 — これが AI エージェント時代の中小企業バックオフィスの姿だと考えています。

まとめ

議事録は会議に参加していない人にこそ価値があります。出席者の頭の中で消えてしまう「いい話」を、AI が機械的に拾って関係する人や業務システムに流す仕組みを作ると、組織の情報フローが一段強くなります。n8n × Claude の組み合わせは、コードを書かなくても 10 ノードで完成するので、最初の AI エージェント導入として最も着手しやすい領域です。本記事の JSON ワークフローを下敷きに、ぜひ自社の文脈に合わせて手を入れてみてください。

AI エージェントを業務に組み込みたい方へ

はてなベースでは、議事録振り分けのような AI エージェント連携を、業務フロー設計から n8n / Anthropic API 実装、kintone / Notion / Google Workspace との接続まで一気通貫でサポートしています。社内データの整備、セキュリティ要件に応じたオンプレミス AI 導入支援、運用ルール設計まで対応します。お気軽にご相談ください。

無料相談はこちら

技術スタック注記

本記事の検証は 2026 年 5 月時点。n8n version 1.x / Claude Sonnet 4.5 / kintone v1 API / Notion API 2025 リビジョン を使用。category tag などのフィールド名や API 仕様は将来変更される可能性があります。