自動化フローの実行エラーを毎日集めて、原因の分類と対応の優先度を出す
社内に散らばった自動化フローの実行エラーを毎日1か所に集め、原因ごとにまとめて、対応の優先度を付けた一覧にします。担当者の作業は、通知を1件ずつ探して読むことから、一覧を見て対応を決めることに変わります。
- 利用ツール
- ChatGPT/Claude/Gemini/Make/n8n/Power Automate
- 対象業界
- IT・SaaS/その他/保険/製造/金融
- 対象部門
- 情報システム
- 対象業務
- 分類・仕分け/集計・分析
- 主な課題
- 人手が足りない/属人化している/期限・対応漏れが起きる
- AIで行う処理
- 分類
- 主な効果
- 対応スピード向上/属人化解消/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- ノーコード連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 朝、共有メールボックスを開き、夜間に届いた失敗の通知を探す
- Teams と Slack の運用チャネル、各ツールの管理画面をそれぞれ開いて失敗した実行を確認する
- 通知1件ごとに、どのフローがいつどこで失敗したかを読み、実行ログで失敗したステップとエラー本文を確認する
- 同じエラーが昨日も出ていなかったかを過去のメールやチャネルを検索して確かめ、そのフローを作った部署と担当者を探す(台帳がないのでフロー名から推測する)
- 一時的な失敗か直さないと止まったままかを判断し、再実行するか作った部署に連絡するかを決める
- 対応した内容を、担当者が自分のメモに書く(共通の記録は残らないことが多い)
- 自動フローが失敗すると共通のエラー受付へ通知が飛ぶ(n8n はエラーワークフロー、他は通知先を受け口に向ける)
- 自動共通の形に正規化する(発生時刻、ツール名、フロー名、失敗した箇所、エラー本文、実行のリンク)
- 自動エラー本文から顧客名・メールアドレス・電話番号・IDを伏せる(マスキング)
- 自動「まとめの鍵」(フロー名+失敗した箇所+エラー本文の型)を作る。鍵が同じものは1つのまとまりとして数える
- 自動既知のエラーの型を書いたルール表と突き合わせ、当たったものはAIを呼ばずに区分を確定する
- 自動毎朝6時、その日の対象をまとめ、ルール表に当たらなかったまとまりだけをAIに渡して原因の区分と「一時的な失敗か、直さないと止まったままか」を付ける
- 自動フロー台帳と突き合わせ、担当部署・つないでいる業務・再実行の可否を機械で当てる
- 自動業務の重要度と件数から、対応の優先度を機械で計算して並べる
- 人情報システム担当が一覧を上から読んで優先度を確定し、再実行してよいまとまりは自分で再実行する。直さないと止まったままのまとまりは作った部署へ依頼を出し、対応の記録が台帳へ書き戻される
各工程の詳しい説明を読む
- 朝、共有メールボックスを開き、夜間に届いた失敗の通知を探す
- Teams と Slack の運用チャネル、各ツールの管理画面をそれぞれ開いて失敗した実行を確認する
- 通知1件ごとに、どのフローがいつどこで失敗したかを読み、実行ログで失敗したステップとエラー本文を確認する
- 同じエラーが昨日も出ていなかったかを過去のメールやチャネルを検索して確かめ、そのフローを作った部署と担当者を探す(台帳がないのでフロー名から推測する)
- 一時的な失敗か直さないと止まったままかを判断し、再実行するか作った部署に連絡するかを決める
- 対応した内容を、担当者が自分のメモに書く(共通の記録は残らないことが多い)
問題は4つあります。
(a)同じ原因のエラーを、何十回も読み直している。 接続の期限が切れたフローは動くたびに同じエラーを出すので、1件目を読んだ人と50件目を読んだ人が別なら、同じ調査が2回行われます。
(b)一時的な失敗に人手がかかっている。 一瞬詰まっただけのタイムアウトも通知は届くので、誰かが開いて「これは大丈夫なほう」と判断しています。
(c)誰に返せばよいか分からない。 フローの一覧が無いため作った部署の特定に時間がかかり、時々「作った人がもういない」フローが出ます。
(d)再実行してよいかの判断が、その場の勘で行われている。 「もう一度回せば大丈夫だろう」で再実行され、二重登録や二重送信が起きてから気づきます。
- 【自動】 フローが失敗すると共通のエラー受付へ通知が飛ぶ(n8n はエラーワークフロー、他は通知先を受け口に向ける)
- 【自動】 共通の形に正規化する(発生時刻、ツール名、フロー名、失敗した箇所、エラー本文、実行のリンク)
- 【自動】 エラー本文から顧客名・メールアドレス・電話番号・IDを伏せる(マスキング)
- 【自動】 「まとめの鍵」(フロー名+失敗した箇所+エラー本文の型)を作る。鍵が同じものは1つのまとまりとして数える
- 【自動】 既知のエラーの型を書いたルール表と突き合わせ、当たったものはAIを呼ばずに区分を確定する
- 【自動】 毎朝6時、その日の対象をまとめ、ルール表に当たらなかったまとまりだけをAIに渡して原因の区分と「一時的な失敗か、直さないと止まったままか」を付ける
- 【自動】 フロー台帳と突き合わせ、担当部署・つないでいる業務・再実行の可否を機械で当てる
- 【自動】 業務の重要度と件数から、対応の優先度を機械で計算して並べる
- 【人】 情報システム担当が一覧を上から読んで優先度を確定し、再実行してよいまとまりは自分で再実行する。直さないと止まったままのまとまりは作った部署へ依頼を出し、対応の記録が台帳へ書き戻される
自動化されるのは「集める」「そろえる」「まとめる」「区分を付ける」「並べる」の5つで、残るのは「優先度の確定」「再実行の実行」「部署への依頼」です。
再実行を自動化しないことが、この設計の中心です。 AIが出すのは印であり、実行の判断は人が持ちます。優先度もAIの推定ではなく、 台帳の重要度と件数と一時的かどうかから機械が計算します。
02今回想定するシステム構成
社内の自動化フロー 100本以上(n8n / Power Automate / Make / Zapier / Apps Script) ├─ n8n ──▶【トリガー】Error Trigger(共通のエラーワークフロー) └─ 他のツール ──▶ 失敗時の通知を共通の受け口(Webhook)へ向ける ▼ エラー受付ワークフロー(n8n) ├──▶ 正規化(時刻・ツール名・フロー名・失敗箇所・本文・実行のリンク) ├──▶ マスキング(顧客名・メールアドレス・電話番号・ID を伏せる) └──▶ まとめの鍵を作る(フロー名+失敗箇所+エラー本文の型) ▼ エラー台帳(スプレッドシート)へ追記 ▼【トリガー】Schedule Trigger(毎朝6:00) まとめのワークフロー(n8n) ├──▶ 既知の型のルール表と突き合わせ ──▶ 当たれば AI を呼ばない ├──▶ 残ったまとまりだけ ──▶ Claude API │ └─ 原因の区分/一時的か恒久対応が要るか ├──▶ フロー台帳と突き合わせ(担当部署・業務・再実行の可否) └──▶ 優先度を機械で計算して並べる ▼ 朝の一覧(Teams へ投稿+台帳の当日シート) ▼ 【人】情報システム担当が確認 ── 優先度を確定 ├──▶ 再実行してよい ──▶【人】が再実行 ├──▶ 直さないと止まったまま ──▶ 作った部署へ依頼 └──▶ 直せる人がいない ──▶ 引き取り待ちの棚へ ──▶ 記録を台帳へ書き戻す
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n | Make、Power Automate |
| 処理 | Claude API | OpenAI API、Gemini API |
エラー台帳とフロー台帳は Google スプレッドシート、通知先は Teams を想定します(社内で使っているものなので表には入れていません)。この構成の土台は、n8n のエラーワークフローです。 Error Trigger ノードを先頭に置いたワークフローを1本作って保存し、対象のワークフロー側で Options の Settings を開いて Error workflow の欄にそれを選びます。同じものを複数のワークフローで使えるので、 100本を1本の受け口に集められます。
渡ってくる項目は、execution.id、execution.url、execution.retryOf(再実行のときだけ)、execution.error.message、execution.error.stack、execution.lastNodeExecuted(失敗したノードの名前)、execution.mode、workflow.id、workflow.name です。最初の2つは、実行がデータベースに保存されている場合に入ります。
ここに落とし穴が1つあります。 エラーがトリガーノードそのもので起きた場合、trigger{} の下に trigger.error として name、cause.message、cause.stack、timestamp が入る別構造になり、ワークフローが実行されていないため execution.id と execution.url はありません。 execution.id があることを前提に組むと、受け口自体が落ちます。また Error Trigger は自動実行の失敗時にしか動かないため手動実行では試せません。
各フローのノード設定も前提になります。 n8n のノードには Retry On Fail があり、有効にすると失敗したノードを成功するまで再実行します。 また On Error で、Stop Workflow(全体を止めて以降を実行しない)、Continue(最後の有効なデータで次へ進む)、Continue (using error output)(エラーの情報を次のノードへ渡して続ける)の3つから失敗時の動きを選べます。
AIを呼ぶ部分には Claude API の構造化出力を使います(第7章)。
03どうやって実装するのか
処理の起点を決める
トリガーは、エラーを受ける側とまとめる側の2つです。
1つ目は Error Trigger。受け口を1本作り、n8n のワークフロー全部の Settings で Error workflow として指定します。受け口は「受けて、そろえて、台帳に追記する」だけにします。 ここで分類まで行うと大量発生時に詰まります。n8n 以外は Error Trigger を持たないので、Power Automate、Make、Zapier は通知先を受け口の Webhook に向け、Apps Script は通知メールを受け取るフローを作って渡します。
2つ目は Schedule Trigger です。毎朝6時に動き、前日分をまとめて処理します。1回にまとめるのは、大量発生を1つのまとまりにするには時間をためる必要があるためです。 ただし夜間に止まったフローに翌朝まで気づかない状態は避け、「1時間で同じ鍵が20件を超えたら即時通知」の条件を受け口に別で入れます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| エラーの基本情報 | 発生時刻、ツール名、フロー名、失敗した箇所、実行の識別子とリンク | n8n は workflow.name/execution.lastNodeExecuted/execution.id/execution.url |
| エラー本文と実行の種別 | 失敗の内容を示す文字列、自動実行か再実行か | n8n は execution.error.message/execution.mode/execution.retryOf |
| フロー台帳 | フロー名、作った部署、現在の担当、つないでいる業務、業務の重要度、再実行の可否(人が決めて書く) | スプレッドシート |
| 既知のエラーの型 | 過去に分類が確定した本文の型と、その区分 | ルール表(スプレッドシート) |
| 過去の同じ鍵の履歴 | この鍵が何日連続で出ているか、前回どう対応したか | エラー台帳 |
この構成の質を決めるのは、AIでもプロンプトでもなく台帳です。 「止まると何が止まるのか」「再実行してよいのか」は本文から分からず、人が決めて列として持つしかありません。
データの取得方法を決める
n8n: 受け口の最初に「execution があるか」の分岐を置き、無ければ trigger.error.name と trigger.error.cause.message から同じ形に組み直します。この分岐は必ず作ってください。
他のツール: 通知の項目が違うので、受け口の側にツールごとの変換を置きます。「ツール名」「フロー名」「失敗した箇所」「エラー本文」「発生時刻」「実行のリンク」の6つに落とし込めれば十分です。Apps Script は通知メールから同じ6項目を取り出し、 取り出せなければ「取り出し失敗」の印を付けます。
フロー台帳とルール表: スプレッドシートから読み、担当者が中身を見て直せるよう、ワークフローの中に書き込まないでください。
AIへ渡す前に整形する
- 正規化とマスキング … 形の違う通知を6項目の共通の形にそろえ、本文から顧客名、メールアドレス、電話番号、注文番号、顧客IDを伏せます。AIに渡す前に必ずここを通します(第13章)
- まとめの鍵を作る … フロー名+失敗した箇所(
execution.lastNodeExecuted)+エラー本文の型を連結して鍵にします。型はマスキング後の本文から数字と可変部分を取り除いたもので、ルール表と一致したまとまりはAIを呼ばずに区分を確定します - まとまりの集計 … 鍵ごとに件数、最初と最後の時刻、影響したフローを機械で数えます。
execution.retryOfが入っているものは再実行して再び失敗したものなので、「もう一度回せば通る」の反証として必ず付けます。この集計はAIにさせません - 台帳との突き合わせ … 担当部署、業務、重要度、再実行の可否を当てます。台帳に無いフローは「所属不明」の印を付けます
2番目の鍵の作り方が、いちばん技術的な部分です。 本文には実行ごとに違う値(時刻、ID、件数)が混ざるので、数字と括弧の中身を取り除いてから比べます。
AIに処理させる
AIにさせるのは、ルール表に当たらなかったまとまりについて、原因の区分を付けることだけです。 区分は次の6つに固定し、自由に区分名を作らせません。
| 区分 | 中身 | 性質 |
|---|---|---|
| 接続の期限切れ | 認証の期限切れ、パスワード変更、再認証が必要 | 直さないと止まったまま |
| 権限 | アクセス権の不足、スコープ不足 | 直さないと止まったまま |
| 相手先の仕様変更 | 項目名の変更・廃止、画面の変更、APIの版の終了 | 直さないと止まったまま |
| データの想定外 | 空欄、想定外の文字、桁あふれ、形式違い | 多くは直さないと止まったまま(1件だけなら一時的) |
| レート制限 | 呼び出し回数の上限に触れた | 一時的(繰り返すなら設計の問題) |
| 一時的なネットワーク障害 | タイムアウト、接続の切断、相手先の一時停止 | 一時的 |
この表の右の列が、この構成の中心です。 区分そのものよりも、「一時的な失敗」か「直さないと止まったままのもの」かの2択が、その日の行動を決めます。 前者は件数が多くてもやることは「様子を見る」で、後者は1件でも業務が止まっています。データの想定外とレート制限は両方に転ぶので、別項目として判定させます。
AIに任せるのは、区分、一時的かどうかの判定、確からしさ、根拠の引用、影響の1文です。件数を数えること、優先度の順位付け、再実行の可否の最終判断、再実行の実行、直し方を書くことはさせません。実行のボタンは人が押します。
指示内容を固定する
あなたは社内の自動化フローの実行エラーを分類する担当者を支援する立場です。
渡す「エラーのまとまり」について、原因の区分と、一時的な失敗かどうかを判定してください。
この判定は情報システム担当が読んで確認したうえで、担当が対応を決めます。
【厳守事項】
- cause_category は、次の7つからちょうど1つを選んでください。
credential_expired / permission / remote_spec_change / unexpected_data /
rate_limit / transient_network / unknown
新しい区分名を作らないでください。迷ったら unknown を選んでください。
- persistence には transient か needs_fix のどちらかを入れてください。
transient … 次の実行で通る見込みがあるもの
needs_fix … 誰かが設定・権限・データ・フローに手を入れるまで通らないもの
「この鍵が何日連続で出ているか」を必ず考慮し、
レート制限やタイムアウトでも3日以上連続していれば needs_fix にしてください。
- evidence には、判定の根拠にした本文の部分を原文のまま抜き出してください。
要約も言い換えもしないでください。抜き出せない場合は空の配列にしてください。
- 件数、発生時刻、影響したフローの数は、渡した値をそのまま使ってください。
- 再実行してよいかどうかの最終判断をしないでください。
rerun_hint には本文から読み取れる範囲の手がかりだけを書き、
「途中まで処理が進んだ形跡があるか」が読み取れない場合は unknown にしてください。
- 原因の直し方(どの設定をどう変えるか)を書かないでください。実際の環境を
見ていないため推測になります。書かれていない製品名や担当者名も出さないこと。
【エラーのまとまり】
まとめの鍵:{group_key}/フロー名:{workflow_name}/ツール:{tool_name}
失敗した箇所:{failed_node}/件数:{count}/連続日数:{consecutive_days}
最初に出た時刻:{first_seen}/最後に出た時刻:{last_seen}
再実行後の失敗が含まれるか:{contains_retry}
つないでいる業務:{business_name}/作った部署:{owner_department}
【エラー本文(マスキング済み・代表例を最大3件)】
{masked_messages}
「新しい区分名を作らないでください」が、いちばん効く制約です。 自由にさせると同じ内容に「認証エラー」「トークン切れ」「OAuth期限切れ」と別の名前が付き、翌日から集計ができなくなります。 レート制限やタイムアウトは字面が一時的なので、「3日以上連続していれば needs_fix」で折り返させないと毎日 transient が付いて誰も見ません。
出力形式を固定する
{
"group_key": "",
"cause_category": "credential_expired | permission | remote_spec_change | unexpected_data | rate_limit | transient_network | unknown",
"persistence": "transient | needs_fix",
"confidence": "high | medium | low",
"evidence": [ { "quote": "" } ],
"impact_note": "",
"rerun_hint": "partially_processed | no_side_effect | unknown",
"needs_human_attention": { "flag": false, "reason": "" }
}
この形をJSON Schemaにして、Claude API の output_config の中の format に type を "json_schema"、schema にスキーマ本体を渡すと、制約付きのデコードでスキーマに沿った応答が保証されます。各オブジェクトに additionalProperties を false で付け、required に必須の項目を並べます。 cause_category、persistence、confidence、rerun_hint は enum で値を固定します。enum は文字列を並べる用途で使えるので、この4項目はそのまま書けます。
構造化出力にするのは、集計できる形にするためです。 区分がぶれないので「今週は接続の期限切れが何件あったか」を機械で数えられ、evidence に引用があれば全文を読まずに根拠だけで合否を決められます。初回はスキーマの準備の時間がかかるので、固めたら変えないでください。
rerun_hint は「再実行してよい」という判断ではなく、 本文から「途中まで処理が進んだ形跡があるか」だけを読み取らせた手がかりです。再実行の可否はフロー台帳の列の値で決まり、 食い違えば台帳を正として要確認の印を付けます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| n8n のワークフロー群 | Error Trigger(エラーワークフローの指定) | 失敗の即時受け取り |
| Power Automate / Make / Zapier / Apps Script | 失敗時の通知を Webhook または通知メール経由で受け口へ | 失敗の即時受け取り |
| エラー台帳・フロー台帳・ルール表 | n8n の標準機能(スプレッドシート) | 追記、書き戻し、担当部署・再実行の可否・既知の型の参照 |
| Claude API / Teams | API/投稿 | 原因の区分と一時的かどうかの判定、朝の一覧の通知 |
各ツールへの書き戻しは行いません。「フローを止める」「設定を直す」「再実行する」は人が各ツールの画面で行います。
人が確認する
全件、人が確認します。まとまりの単位で確認し、件数では確認しません。 順番は、①needs_human_attention が真、②persistence が needs_fix で業務の重要度が高い、③confidence が low、④所属不明のフロー、⑤transient だが連続日数が伸びている、⑥それ以外。
確認の作業は3つです。
evidenceの引用を読み、区分とpersistenceが妥当かを見る(本文を全部読まない)- 再実行するかどうかをフロー台帳の値を見て決める(
rerun_hintだけで決めない) - 作った部署へ返すか、情報システムで引き取るかを決める
3つ目は機械にできません。直せる人がいるかどうかは、台帳の担当者列だけでは分かりません。 確認の時間の目標は、1件あたりに割り戻して3分(確認2分+指示と記録1分)です。
例外に対処する
| 起きること | 対応 |
|---|---|
トリガーノードで落ちて execution.id が無い | 受け口の先頭で分岐し、trigger.error から同じ形に組み直す |
| 受け口自体が落ちた | 受け口にもエラーワークフローを指定し、別の宛先(担当者個人のメール)へ直接通知する |
| 1つの鍵で数百件が一気に出た | 代表例を最大3件だけ残し、残りは件数として数える。 件数が一定を超えたら朝を待たず即時通知する |
| 本文が空で鍵が作れない | フロー名+失敗した箇所だけで鍵を作り、「本文なし」の印を付けて人が先に読む |
AIが unknown を返した、または呼び出しが失敗した | 区分を付けずに人の確認へ回す。一覧そのものは止めない |
rerun_hint と台帳の再実行可否が食い違う | 台帳を正とする。 要確認の印を付ける |
上の2行は必ず先に作ってください。 受け口が落ちると、エラーを集める仕組みが自分のエラーで止まります。
記録を残す
- 受け口が受け取った生のデータ(ツール名、フロー名、原文のエラー本文、発生時刻)と、マスキング後の本文・伏せた項目の種類と件数
- まとめの鍵、件数、最初と最後の時刻、AIに渡した内容と返ってきたJSON(
cause_category、persistence、confidence、evidence) - 人が区分を直した場合の、直す前と直した後の値。対応した内容(再実行した/部署へ依頼した/引き取った/様子を見た)と、対応した人・日時・その結果
人が直した値を残すと、ルール表が育ちます。 同じ直し方が3回出ればその型をルール表に入れられ、以後はAIを呼ばなくなります。
04実装レベルの3段階
最小構成だけでは、9分が8分程度にしかなりません。 区分を付ける作業はもともと1分程度だからです。それでも最小構成は必ずやってください。 鍵でまとまるかどうかが、ここで分かります。 半自動化で9分から3分程度になります。 通知を探す2分と既出の確認2分が消え、担当部署の特定1分も台帳との突き合わせで消えるためです。この段階の効果がいちばん大きく、本記事が想定するのもここです。 本格構成で工数は変わりませんが、月次で「どのフローが何回落ちているか」が出ると直すべきフローが特定できます。
05工数削減シミュレーション
導入後 240件 × 3分 ÷ 60 = 12 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- RPAやiPaaSで作った自動化フローが50本以上あり、作った部署がばらばらで、失敗の通知もツールごとに別の場所へ飛んでいる企業。情報システム部門が毎日その通知を見て、誰に返すかを判断している場合。フローの一覧を台帳として作れる場合。
- 自動化フローが10本以下で、作った本人がその場で気づいて直せる規模の場合。ツールが1種類だけで、その管理画面の実行履歴で足りている場合。どのフローが今も動いているのかを誰も把握していない場合(棚卸しが先になります)。
07最小構成で試す方法
- 直近1週間分のエラー通知をメール・チャネル・各ツールの管理画面から手で集め(20件から30件)、フロー名と失敗した箇所とエラー本文を表に書き出す
- 手で「まとめの鍵」を付けてみる。 20件が何個のまとまりになるかを数える
- AIの画面に、まとまりごとの情報(フロー名、失敗した箇所、本文の代表例、件数、連続日数)を貼り付け、「6つの区分から1つを選び、一時的か手を入れるまで通らないかを判定してください。根拠にした本文を原文のまま抜き出してください」と指示する
- 出てきた区分を、自分が付けた区分と比べる
2番目が、この段階のいちばんの収穫です。 20件が3つか4つのまとまりになることが多く、「作業の大半が同じものの読み直しだった」ことが分かります。
| 結果 | 判断 |
|---|---|
| 区分が自分の判断と8割以上一致する | 自動化する価値が大きい。受け口とまとめまで作る |
unknown が半分以上出る、または20件が18個のままになる | 本文が短すぎるか鍵の作り方の問題。実行ログから本文を取る工程と、数字や可変部分の除去を先に直す |
| そもそもフローの担当部署が分からない | フロー台帳の作成が先。 AIの問題ではない |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| トリガーノードで落ちたエラーで受け口が止まる | execution の有無で分岐し、trigger.error から組み直す |
| エラーワークフローの動作確認ができない | 手動実行では Error Trigger が動かない。スケジュール実行を実際に失敗させて試す |
| 鍵がまとまらず、件数がそのまま残る | 本文から数字と可変部分を取り除いてから比べる。ここを作り込まないと構成の意味がない |
persistence が毎日 transient になる | 連続日数をAIに渡し、3日続けば needs_fix に折り返させる |
| AIが区分名を勝手に作る | 区分を enum で固定し、構造化出力のスキーマで縛る。 一時的な区分でも件数と連続日数は一覧に必ず出す |
| 再実行して二重登録が起きた | 再実行の可否を台帳の列に持ち、AIの手がかりより台帳を優先する |
| 台帳に無いフローが失敗しても行き先がない | 「所属不明」の棚に入れ、確認の上位に出す |
| 作った人が退職・異動して誰も直せない | 下記の段落を参照。「引き取り待ち」の棚を作る |
| 個人名や顧客名がAIに渡っていた | マスキングを受け口の必須工程にし、まとめの前に置く |
| ルール表が育たない | 同じ直しが3回出た型を月次で入れる |
「作った人が退職・異動して誰も直せない」は、必ず出ます。 この構成では、そういうフローを消さずに「引き取り待ち」として棚に置きます。 フロー台帳の担当者列が空欄か在籍していない人になっているフローをここに入れ、対応は直すことではなく、次の3つのどれかを決めることです。
- 止める … つないでいる業務が別の手順に移っている、または使われていないと確認できた場合
- 引き取る … 業務が今も回っており、情報システム部門が中身を読んで維持することにした場合
- 作り直す … 中身が読めないが業務は必要な場合。エラー対応ではなく案件として扱う
この判断は、毎朝のエラー対応の中でしません。 印を付けて置き、月1回の棚卸しで決めます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: フロー名、失敗した箇所、エラー本文、実行のリンク、作った部署と担当者。本文には処理中だったデータの一部が含まれます。
- エラー本文に顧客の情報が混ざる … エラー本文には、処理しようとしたデータがそのまま入ることがあります。「顧客名 のメールアドレス xxx が不正です」「注文番号 の金額が上限を超えています」といった形で、 どのエラーに何が入るかは事前には分かりません
- 外部APIに渡す前にマスキングする … 受け口の工程として、メールアドレス、電話番号、注文番号、顧客ID、人名の形をした文字列を伏せてからAIに渡します。 伏せ字は種類が分かる形(
<email><order_id>など)にします。判定に必要なのは値ではなく「どの種類の値で失敗したか」だからです - 伏せきれない型を検知する … マスキングは必ず漏れるので、伏せ字の当たらない長い文字列や氏名らしき並びを検知したら、AIに渡さず人の確認だけに回します(「とりあえず渡す」を既定にしない)
- 原文は外に出さない … AIに渡すのはマスキング後の本文だけにします。
execution.urlの先には処理していたデータが表示されるため、一覧をチャネルに投稿する場合はこのリンクを見られる人の範囲も確認してください - 再実行をAIにも機械にもさせない … 再実行は二重登録・二重送信・二重請求を起こしうる操作です。AIが出すのは手がかりまでで、実行のボタンは人が押します。「安全と判定されたものだけ自動で再実行する」構成にしないでください。安全かを決めているのは台帳の値であり、台帳が間違っていれば自動実行はそのまま事故になります
- アクセス権限と学習利用 … フロー台帳には全社の業務と自動化の対応関係が載るため、閲覧範囲を限定してください。AIサービスは、入力を学習に使わないことが契約で保証されるものを選んでください
誤りのリスクは2つです。区分の誤りで「止まったままのもの」が見落とされることと、再実行してはいけないものを再実行して二重登録が起きること。 前者は persistence と連続日数の設計で、後者は再実行を人の手に残す設計で防ぎます。
10まず何から始めるか
1週目:フローの棚卸しをする
稼働中の自動化フローを洗い出し、フロー名、作った部署、現在の担当、つないでいる業務、最後に成功した日を表に書きます。ここで「誰のものか分からないフロー」が何本あるかが分かります。 AIはまだ使いません。
2週目:再実行の可否を決める
フロー台帳に「再実行してよいか」の列を足し、1本ずつ人が決めます。基準は、途中まで進んだ状態で流し直したときに外部への送信や登録が二重になるかどうかです。 迷うものは「不可」に。
3週目:20件で試す
直近1週間のエラーを手で集め、鍵を手で付けて何個のまとまりになるかを数え、AIに区分を付けさせて自分の判断と比べます。
4週目:受け口を作る
n8n で Error Trigger を先頭にしたエラーワークフローを1本作り、まず数本に指定します。トリガーノードで落ちた場合の分岐を最初から入れてください。 台帳への追記まで動いたら、他のツールの通知先を順に向けます。
2か月目: まとめと朝の一覧を組み、4名全員で運用します。9分が何分になるかを実測し、人が区分を直した内容を必ず記録してください。
3か月目以降: 即時通知と月次の集計を足します。「どのフローが何回落ちているか」が見えた時点で、この構成の効果が出ます。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Error Trigger を先頭に置いたワークフローを、対象ワークフローの Options の Settings で Error workflow に指定すると動くこと。渡る項目が execution.id/url/retryOf/error.message/error.stack/lastNodeExecuted/mode と workflow.id/name であること。前2つは実行がDBに保存されている場合に入り、トリガーノード起因のエラーでは無く trigger{} 配下に trigger.error として name/cause.message/cause.stack/timestamp が入ること。手動実行ではテストできないこと | n8n Docs: Error Trigger node | 2026-09-22 |
| 同じエラーワークフローを複数のワークフローで使えること。Stop And Error ノードで、自分の決めた条件で実行を失敗させられること | n8n Docs: Handle errors gracefully | 2026-09-22 |
| ノードの設定に Retry On Fail があり、有効にすると失敗した実行を成功するまで再実行すること。On Error が Stop Workflow(全体を止め以降を実行しない)/Continue(最後の有効なデータで次へ進む)/Continue (using error output)(エラーの情報を次へ渡して続ける)の3つであること | n8n Docs: Work with nodes | 2026-09-22 |
構造化出力を output_config の中の format で指定し、type に "json_schema"、schema にJSON Schemaを渡すこと。制約付きのデコードでスキーマに沿った応答が保証されること。オブジェクトに additionalProperties の false が必要で、enum は文字列などに対応し長さの制約には対応しないこと | Claude Docs: Structured outputs | 2026-09-22 |
n8n の再実行の回数や待ち時間の既定値、および Power Automate、Make、Zapier、Apps Script の失敗時の通知の仕様は確認していません。共通の受け口へ通知を向ける方法は、利用環境に応じた個別の確認と実装が必要です。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0168)についてのご相談はこちらから。
