機械警備の発報の記録を毎朝集め、誤報の原因を設定・小動物・機器の不具合などで分けて、同じ契約先で続く誤報を担当に知らせる
監視センターに届いた発報の記録と警備員の対処報告を毎朝まとめ、異常のなかった発報を誤報の原因で分けます。同じ契約先や同じセンサーで誤報が続いているものを拾い、担当の営業と技術に知らせます。
- 生成AI
- ChatGPT/Claude
- 連携・自動化
- Make/n8n/Power Automate/Python
- 対象業界
- その他/不動産/介護/小売
- 対象部門
- カスタマーサポート
- 対象業務
- 分類・仕分け/集計・分析
- 主な課題
- 入力作業が多い/属人化している/期限・対応漏れが起きる
- AIで行う処理
- 分類
- 主な効果
- 属人化解消/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 朝の始業後、管制担当が監視の仕組みの画面で前日分の発報の一覧を開く
- 1件ずつ、発報の種類、センサーの位置、警備員の対処報告を読む
- 「異常なし」の発報について、対処報告の自由記述から誤報の原因を決め、台帳のスプレッドシートに区分を付けて転記する
- 原因の書かれ方が曖昧なものは、前日の管制員や出動した警備員に聞き直す
- 気になる契約先があれば、台帳を契約先コードで絞り込み、過去1か月の誤報を数える
- 同じ契約先で誤報が続いていれば、担当の営業か技術にメールや Teams で知らせる
- 週末と祝日の分は、翌営業日にまとめて行う
- 自動毎朝5時に、監視の仕組みが前日分の発報の記録を CSV で社内の SFTP サーバーへ書き出す
- 自動6時に n8n のワークフローが動き、CSV を取り込んで1行1件にする
- 自動規則で、本当の異常の可能性がある発報(火災・非常通報の信号、警備員の報告が「異常あり」「警察へ通報」、対処報告が空欄)を分類から外し、人の確認の列へ回す
- 自動残った「異常なし」の発報について、対処報告の文面と信号の種類を AI に渡し、誤報の原因の区分を1つ選ばせる
- 自動区分に当てはまらないものは「その他」として人の確認の列へ回す
- 自動分類の結果を、n8n の Data Table の誤報台帳に1件ずつ書き込む
- 自動台帳から直近30日の誤報を契約先ごと・センサーごとに数え、決めた回数を超えたものを拾う
- 自動拾った契約先ごとに、担当の営業と技術へ送る連絡文の下書きを作る
- 人管制担当が、③と⑤で回ってきたものと、⑦で拾った契約先の一覧を確かめる
- 人連絡文を直して担当へ送る。区分の誤りは台帳で直す
各工程の詳しい説明を読む
- 朝の始業後、管制担当が監視の仕組みの画面で前日分の発報の一覧を開く
- 1件ずつ、発報の種類、センサーの位置、警備員の対処報告を読む
- 「異常なし」の発報について、対処報告の自由記述から誤報の原因を決め、台帳のスプレッドシートに区分を付けて転記する
- 原因の書かれ方が曖昧なものは、前日の管制員や出動した警備員に聞き直す
- 気になる契約先があれば、台帳を契約先コードで絞り込み、過去1か月の誤報を数える
- 同じ契約先で誤報が続いていれば、担当の営業か技術にメールや Teams で知らせる
- 週末と祝日の分は、翌営業日にまとめて行う
(a)転記と区分付けに朝の時間が消える。 1日40件前後、多い日は100件を超える発報を、画面から台帳へ写します。読む・決める・写すの3つを1件ずつ行うので、件数がそのまま時間になります。
(b)原因の付け方が人によって違う。 「扉が半開き」を利用者の操作とする人もいれば、扉の建て付けとして機器の不具合とする人もいます。台帳の区分が揃わないので、あとで集計しても傾向が見えません。
(c)続いている誤報に気づくのが遅れる。 5番目の絞り込みは「気になる契約先があれば」行うもので、気にならなかった契約先は数えられません。 週に一度ずつ3週続いた誤報は、毎朝の担当が違うと誰の目にも続いて見えません。
- 【自動】 毎朝5時に、監視の仕組みが前日分の発報の記録を CSV で社内の SFTP サーバーへ書き出す
- 【自動】 6時に n8n のワークフローが動き、CSV を取り込んで1行1件にする
- 【自動】 規則で、本当の異常の可能性がある発報(火災・非常通報の信号、警備員の報告が「異常あり」「警察へ通報」、対処報告が空欄)を分類から外し、人の確認の列へ回す
- 【自動】 残った「異常なし」の発報について、対処報告の文面と信号の種類を AI に渡し、誤報の原因の区分を1つ選ばせる
- 【自動】 区分に当てはまらないものは「その他」として人の確認の列へ回す
- 【自動】 分類の結果を、n8n の Data Table の誤報台帳に1件ずつ書き込む
- 【自動】 台帳から直近30日の誤報を契約先ごと・センサーごとに数え、決めた回数を超えたものを拾う
- 【自動】 拾った契約先ごとに、担当の営業と技術へ送る連絡文の下書きを作る
- 【人】 管制担当が、③と⑤で回ってきたものと、⑦で拾った契約先の一覧を確かめる
- 【人】 連絡文を直して担当へ送る。区分の誤りは台帳で直す
9番目で人が見るのは、全件ではありません。 1,200件のうち、規則で外したもの、「その他」に回ったもの、連続として拾われた契約先だけです。それ以外の区分付けは一覧で流し見て終わりにします。
7番目を規則で決めているのも意図してのことです。 回数の基準は契約先の種類で変わり、季節でも変わります。基準を変えても、AI の指示は書き直しません。
02今回想定するシステム構成
監視の仕組み(発報の記録・対処報告) │ 毎朝5:00 に前日分を CSV で書き出す ▼ 社内の SFTP サーバー 【トリガー】毎朝6:00(Schedule Trigger) ▼ n8n ├─ FTP(SFTP の資格情報で Download)── 前日分の CSV ├─ Extract From File(Extract From CSV)── 1行1件に ├─ Code ── 本当の異常の可能性がある発報を規則で外す・伏せ字 ▼ Text Classifier + Anthropic Chat Model ── 誤報の原因の区分(Other の出口あり) ▼ Data Table ── 誤報台帳に書き込み/直近30日分を取り出し ▼ Summarize ── 契約先ごと・センサーごとに数える ▼ Basic LLM Chain + Anthropic Chat Model ── 担当への連絡文の下書き ▼ Microsoft Teams ── 管制課のチャネルへ一覧と下書き ▼ 【管制担当が確かめて担当へ送る】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n(自社のサーバーに置く) | Make、Power Automate |
| 生成AI | Claude(n8n の Anthropic Chat Model ノード) | OpenAI API |
| 集計 | n8n の Summarize ノード | Python |
| 保管 | n8n の Data Table(誤報台帳、契約先と担当の対応表) | スプレッドシート |
| 通知 | Microsoft Teams(n8n の Microsoft Teams ノード) | Slack |
新しく足すのは、n8n と、監視の仕組みからの書き出しです。 監視の仕組みが発報の記録をファイルで書き出せることが前提で、書き出しの設定は監視の仕組みの提供元に確かめます。 書き出せない場合は、この構成の入口から個別の作業になります。
n8n を選ぶのは、自社のサーバーに置けるからです。 発報の記録には、契約先の名称と住所、警戒の開始と解除の時刻が並びます。いつ建物が無人になるかが分かる情報です。 ワークフローを社内に置き、外へ出るのは伏せ字にした対処報告の文面だけにします。
SFTP の取り込みは FTP ノードで行います。 公式ページでは、このノードは FTP と SFTP のサーバーに対して動き、SFTP では SFTP の資格情報を使うとされています。
分類は Text Classifier ノードです。 区分ごとに名前と説明を持たせると、モデルが各入力を読んでどの区分かを選びます。区分ごとに出口が分かれ、当てはまらないときの扱いを「捨てる」か「Other の出口へ出す」かで選べます。
03どうやって実装するのか
処理の起点を決める
毎朝6時に1回動かします。 Schedule Trigger の Days の間隔で時刻を決めるか、cron の式で 0 6 * * * と書きます。n8n を自社のサーバーに置く場合、タイムゾーンの既定は America/New York です。 ワークフローかインスタンスのタイムゾーンを Asia/Tokyo にしないと、日本時間の夜に動きます。
発報のたびに動かす形にはしません。 誤報の原因は、警備員が現場から戻って対処報告を書き終えてからでないと分かりません。深夜の発報の報告は明け方に入ることもあるので、前日分が出そろう朝にまとめて読みます。
監視の仕組みの書き出しを5時、ワークフローを6時にずらしておきます。 書き出しが遅れた日に、空のファイルを読んで「発報0件」と報告しないためです。ワークフローは、前日の日付の CSV が無ければ止まって管制課へ知らせます。
Schedule Trigger を使うワークフローは、保存して公開しておく必要があります。 編集の画面で試しに動かすだけでは、翌朝は動きません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 発報の記録 | 発報の日時、契約先コード、センサーの番号と種類、信号の種類(侵入・開閉・火災・設備・非常通報)、警戒の状態 | 監視の仕組みの CSV |
| 警備員の対処報告 | 現着の時刻、報告の区分(異常なし/異常あり)、警察・消防への通報の有無、所見の自由記述 | 同じ CSV(発報の記録と同じ行) |
| 契約先の対応表 | 契約先コード、建物の種類、担当の営業と技術の Teams のアカウント、センサーの設置年 | n8n の Data Table |
| 誤報台帳 | これまでの分類の結果(直近90日分) | n8n の Data Table |
AI に渡すのは、2行目の所見の自由記述と、信号の種類・センサーの種類だけです。 契約先の名称・住所・警戒の時刻は渡しません。原因を読み分けるのに、どこの建物かは要りません。
契約先の対応表には「建物の種類」の列を持たせます。 店舗と倉庫と介護施設では、同じ「扉の開閉の信号」でも誤報の起き方が違います。連続の基準を建物の種類で変えるときに使います。
センサーの設置年は、技術の担当へ渡す連絡文に入れます。 古い機器で誤作動が続いているなら、設定を見直すより交換の提案が先になります。
データの取得方法を決める
| 取るもの | どこから | どのノードで |
|---|---|---|
| 前日分の CSV | 社内の SFTP サーバーの書き出し用フォルダ | FTP(SFTP の資格情報、Download) |
| 1行1件の発報 | 取り込んだ CSV | Extract From File(Extract From CSV) |
| 契約先の担当 | 契約先の対応表 | Data Table(Row の Get) |
| 直近30日の誤報 | 誤報台帳 | Data Table(Row の Get) |
取り込んだ CSV は、成功したときだけ処理済みのフォルダへ移します。 FTP ノードの Rename で、移し先のフォルダが無ければ作るオプションを有効にしておきます。書き出し用のフォルダに残っている数が、そのまま未処理の日数になります。
CSV の1行目が見出しになっているかを、最初に確かめます。 Extract From File の CSV の取り込みには見出しの行の扱いを決める設定があり、見出しとして扱わないと、列が番号で返ります。 監視の仕組みの書き出しの文字コードもあわせて確かめ、文字化けしたまま分類に回さないようにします。
誤報台帳と対応表は、Code ノードからは直接読めません。 公式ページでは、Code ノードは Data Table の値に直接アクセスできないとされています。Data Table ノードで取り出してから、後ろの Code ノードへ渡します。
AIへ渡す前に整形する
- 前日分の確認 … 発報の日時がすべて前日の範囲に入っているかを見ます。範囲外の行は、書き出しの設定の誤りとして止めます
- 本当の異常の可能性があるものを外す … 次のどれかに当たる行は分類に回さず、人の確認の列へ回します
- 信号の種類が火災・非常通報 - 警備員の報告の区分が「異常あり」 - 警察・消防への通報の有無が「あり」 - 対処報告の所見が空欄、または「確認中」
- 伏せ字 … 所見の自由記述から、契約先の名称、人の名前、電話番号、暗証番号らしい数字の並びを伏せます
- 短すぎる所見の扱い … 「異常なし」の一言だけのものは、分類に回さず「所見なし」として台帳に記録します
- 重複の除去 … 同じ契約先・同じセンサー・数分以内の発報が続いているものは、1件の出動にまとめます
2番目が、この構成の安全の要です。 本当の侵入や火災の発報を「環境による誤報」に分けてしまうと、台帳の上では何も起きなかったことになります。 その種類の発報は最初から AI に見せません。
3番目で暗証番号を伏せるのは、所見に書かれることがあるからです。 「暗証番号◯◯◯◯を3回誤入力」と書く警備員がいます。解除の番号が外へ出ることは、建物の鍵が外へ出ることと同じです。
5番目は、数え過ぎを防ぐためです。 扉が風で揺れて数分おきに3回発報した出動を3件と数えると、1晩で連続の基準を超えてしまいます。
AIに処理させる
させるのは、所見の文面を読み、誤報の原因を次の区分のどれか1つに分けることだけです。
| 区分 | 説明(Text Classifier の区分の説明に書く) |
|---|---|
| 利用者の操作 | 警戒の開始・解除の操作の誤り、操作を忘れたままの入室、従業員や清掃業者への周知漏れ |
| 設定 | 警戒の区画・時刻のタイマー・センサーの感度など、警備会社側の設定が実態に合っていない |
| 小動物・虫 | ネズミ・鳥・猫・虫など、生き物がセンサーに反応した痕跡や目撃がある |
| 環境 | 風・温度の急な変化・結露・揺れ・日差し・空調の風・掲示物の揺れなど |
| 機器の不具合 | センサー・配線・電池・通信の機器の故障や劣化。警備員が機器の異常を確かめたもの |
Allow Multiple Classes To Be True はオフにします。 1件の誤報に区分を1つだけ付けます。複数を許すと、「扉が半開きで風に揺れた」が利用者の操作と環境の両方になり、台帳の数え方が決まらなくなります。
When No Clear Match は「Output on Extra, 'Other' Branch」にします。 既定の Discard Item のままだと、どの区分にも当てはまらない発報が黙って消えます。 消えた発報は台帳にも残らず、連続の数にも入りません。
| させないこと | 理由 |
|---|---|
| 本当の異常だったかの判断 | 前処理の規則で外す。AI に見せない |
| 回数を数えること・連続の判定 | 台帳の集計で出す |
| 機器の交換・設定の変更の要否 | 技術の担当が現地を見て決める |
| 契約先の落ち度の評価 | 連絡文は事実だけ。責める言葉を書かない |
| 所見に無いことの補完 | 「おそらくネズミ」と補わない。書かれていなければ Other |
5行目がいちばん起きやすい失敗です。 倉庫の扉の開閉の発報で所見が「異常なし、施錠確認」だけのとき、モデルは倉庫ではよくあることとして小動物を選びがちです。根拠の無い分類は台帳を汚し、存在しない連続を作ります。
指示内容を固定する
Text Classifier の System Prompt Template を次のように書き換えます。{categories} は区分の一覧が入る置き場所です。
あなたは機械警備の監視センターで、警備員の対処報告から誤報の原因を分類する係です。
渡されるのは、警備員が現場で「異常なし」と報告した発報の所見だけです。
【区分】
{categories}
【厳守事項】
- 所見に書かれた事実だけを根拠にしてください。
建物の種類や時刻から「よくある原因」を推測して区分を選ばないでください。
- 所見に原因の手がかりが無いとき、どの区分も選ばないでください。
- 「扉が半開き」のように、人の操作と環境の両方が書かれているときは、
発報の直接のきっかけになった方を選んでください。
直接のきっかけが書かれていなければ、どの区分も選ばないでください。
- 機器の不具合は、警備員が機器の異常(電池切れの表示、配線の外れ、
センサーの破損、通信の途絶)を確かめた記述があるときだけ選んでください。
「原因不明のため機器の誤作動と思われる」は機器の不具合ではありません。
- 侵入・火災・けが人の可能性をうかがわせる記述があれば、
どの区分も選ばないでください。
Input Prompt には次の式を入れます。
信号の種類:{{ $json.signal_type }}
センサーの種類:{{ $json.sensor_type }}
所見:{{ $json.finding_masked }}
「原因不明のため機器の誤作動と思われる」を機器の不具合にしない、と書くのが要点です。 警備員は原因が分からないとき、この言い回しをよく使います。何も言わなければ機器の不具合の区分が膨らみ、技術の担当に根拠の無い点検の依頼が届きます。
最後の1行は、前処理の規則をすり抜けたものへの二重の守りです。 「異常なし」の報告でも、所見に「窓ガラスに傷」と書かれていることがあります。その1件を分類せず Other に出して人に見せます。
入力の式は Text Classifier の Input Prompt の側に書きます。 Anthropic Chat Model のようなサブノードでは、式が常に最初の1件で解決されるとされています。チャットモデルの側に {{ $json... }} を書くと、全件が1件目の所見で分類されます。
出力形式を固定する
Text Classifier の出口ごとに Set のノードを置き、台帳の1行を次の形に揃えます。
{
"alarm_id": "A-20261013-0412",
"alarm_at": "2026-10-13T02:14:00+09:00",
"contract_code": "C-01873",
"sensor_id": "S-05",
"signal_type": "intrusion",
"route": "classified | excluded | other | no_finding",
"cause": "user_operation | configuration | animal | environment | equipment | null",
"finding_masked": "",
"classified_by": "ai | rule | human",
"corrected": false
}
1つ目の理由は、route で「分類されなかった理由」を残せることです。 規則で外した(excluded)、AI がどの区分も選ばなかった(other)、所見が無かった(no_finding)は、どれも cause が空ですが、意味がまったく違います。 混ぜると、本当の異常の可能性で外した発報まで「原因不明の誤報」に数えられます。
2つ目は、classified_by と corrected で人の直しを数えられることです。 管制担当が区分を直したら human と true にします。どの区分がよく直されているかで、区分の説明の書き直しの順が決まります。
連続の拾い出しは、台帳とは別の形で出します。
{
"contract_code": "C-01873",
"building_type": "倉庫",
"window_days": 30,
"false_alarm_count": 4,
"by_cause": { "animal": 3, "environment": 1 },
"by_sensor": { "S-05": 3, "S-02": 1 },
"rule_hit": "same_sensor_3_or_more",
"sales_owner": "",
"tech_owner": "",
"draft_message": ""
}
rule_hit に、どの基準で拾ったかを書きます。 「同じ契約先で30日に4回以上」「同じセンサーで30日に3回以上」「同じ区分が3回続いた」のどれに当たったかで、営業に回すか技術に回すかが変わります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| SFTP サーバー | FTP ノード(SFTP の資格情報) | 前日分の CSV を取り込み、処理済みへ移す |
| Data Table | Data Table ノード | 誤報台帳への書き込み、対応表と直近30日分の取り出し |
| Claude | Anthropic Chat Model ノード | 区分の選択と連絡文の下書き |
| Microsoft Teams | Microsoft Teams ノード | 管制課のチャネルへ一覧と下書きを送る |
| 監視の仕組み | 書き出しのみ | この構成からは書き込まない |
連続の数は Summarize ノードで出します。 Data Table の Row の Get で直近30日の誤報を取り出し、Summarize で contract_code と sensor_id を Fields to Split By に入れて Count を取ります。公式ページでは、Fields to Split By は group by に近い働きとされています。
Teams への送り先は、管制課のチャネルにします。 Channel Message の Create で、拾った契約先の一覧と下書きを1日1件のメッセージにまとめます。担当の営業と技術へ直接は送りません。 下書きを確かめた管制担当が転送します。
Teams の資格情報の種類に気をつけます。 公式ページでは、Service Principal(App-Only)の資格情報は Chat・Chat Member・Chat Message に対応せず、Channel Message も一部の対応とされています。チャネルへの投稿が通るかを、組む前に試します。
人が確認する
管制担当が毎朝見るのは、次の3つの列だけです。
- 規則で外した発報(
excluded) … 本当の異常の可能性があるもの。監視センターの通常の手順で、報告の中身と出動の記録を確かめます - 区分の付かなかった発報(
other) … 所見を読み、区分を付けるか、出動した警備員に聞き直します - 連続として拾われた契約先 … 下書きを読み、事実の誤りが無いかを確かめて担当へ転送します
分類が付いた発報は、一覧で流し見ます。 区分の誤りに気づいたら台帳で直し、corrected を立てます。
3番目の下書きは、送る前に必ず所見の原文と突き合わせます。 連絡文は営業から契約先への提案のもとになります。「ネズミが出ている」と契約先に伝えるのは、店舗にとって軽い話ではありません。 所見に書かれていない原因を、下書きが言い切っていないかを見ます。
目標は、1,200件をならして1件1分です。 規則で外すものと Other に出るものが合わせて1〜2割という想定で、それより多い月は、区分の説明か前処理の規則を見直します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 前日の CSV が無い | 止めて管制課へ知らせる。空のまま「0件」と報告しない |
| CSV の発報の日時が前日の範囲外 | 書き出しの設定の誤りとして止める |
| 文字化けしている | 分類に回さない。書き出しの文字コードを確かめる |
| 所見が空欄・「確認中」 | 分類に回さず人の確認の列へ |
| どの区分にも当てはまらない | Other の出口へ。捨てない |
| 契約先コードが対応表に無い | 新規の契約か解約済み。連続の拾い出しから外して管制課へ |
| AI の呼び出しが失敗する | その行を pending にして台帳へ書き、翌朝の実行で拾い直す |
| Data Table の容量が上限に近づく | 既定では全体で200 MiB。90日より古い行を月に1回消す |
| Teams へ投稿できない | 一覧をファイルにして SFTP の連絡用フォルダへ置き、管制課へ電話で伝える |
8行目は、運用を始めて数か月後に効いてきます。 公式ページでは、すべての Data Table の合計は既定で200 MiB までで、80%で警告が出て、上限を超えると書き込みのときにワークフローがエラーになるとされています。自社のサーバーに置く場合は環境変数で上限を変えられますが、古い行を消す運用を最初から組みます。
4行目と5行目は、件数を毎週見ます。 増えているなら、警備員の所見の書き方が変わったか、新しい種類の誤報が出てきた合図です。
記録を残す
- 取り込んだ CSV の原本(処理済みのフォルダに日付ごと)
- 誤報台帳の全行(
route、cause、classified_by、corrected) - AI に渡した伏せ字の後の所見の文面と、選ばれた区分
- 規則で外した発報と、外した理由
- 連続として拾った契約先と、当てはまった基準、送った連絡文の最終版
- 管制担当が区分を直した記録
3つ目で「伏せ字の後の文面」を残すのは、外へ出たものを後から確かめられるようにするためです。 暗証番号らしい数字の並びが伏せ字をすり抜けていないかを、月に1回抜き取りで見ます。
最後の行は、区分の説明を育てる材料です。 「環境」から「利用者の操作」への直しが多いなら、扉の半開きの書き方を区分の説明に足します。
04実装レベルの3段階
最小構成は、確かめるための段階です。 月1,200件は手で貼れません。 半自動化で、1件3分が1.5分程度になります。 転記と区分付けは自動になりますが、契約先ごとの数え直しと連絡は人のままです。本格構成で1分になり、この段階が本記事の想定です。 差が大きいのは、数え直しが「気になったものだけ」から「全契約先」に広がるのに、人の手は増えないからです。 段階を飛ばさないでください。 半自動化の台帳を1か月見て区分の説明を直してから連続の拾い出しを足すほうが、担当への空振りの連絡が減ります。
05工数削減シミュレーション
導入後 1,200件 × 1分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 店舗・事務所・倉庫・介護施設などと機械警備の契約を数千件持ち、監視センターに毎月千件を超える発報が届く警備会社。警備員の対処報告に「異常なし」と書かれた発報の原因を、管制の担当が翌朝に1件ずつ読んで台帳に付け、同じ契約先で誤報が続いていることに気づくのが担当者の記憶頼みになっている場合。監視の仕組みから発報の記録を毎日ファイルで書き出せる場合。
- 契約先が数百件で、発報が月に数十件しかなく、管制の担当が全件を覚えていられる場合。監視の仕組みから発報の記録を外に書き出せず、画面で見るしかない場合。なお、発報が侵入や火災などの本当の異常だったかどうかの判断、出動の要否、契約先への説明と機器の交換の判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の発報のうち、警備員が「異常なし」と報告した100件を選ぶ(台帳で区分の付け方が分かれていたものを混ぜる)
- 所見の自由記述だけを取り出し、契約先の名称・人の名前・番号を手で伏せる
- 手元の AI サービスに、第7章の区分の表と厳守事項を貼り、100件を順に分類させる
- 出てきた区分を、台帳の区分と並べる
- 食い違ったものを、管制担当3名で読み直してどちらが正しいかを決める
100件は必ずやってください。 ワークフローを組む前に、「所見の文面だけで原因を分けられるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 台帳とほぼ同じ区分が出た | n8n での取り込みと台帳の書き込みに進む |
| 所見に無い原因を補って区分を選んだ | 指示の書き方で直る。構成は有効 |
| 3名でも区分が決まらないものが多い | 区分の定義が先。 AI の問題ではない |
3行目が出ることは珍しくありません。 台帳の傾向が見えなかった理由が1つ分かったということです。区分の説明を3名で書き直し、同じ100件で試し直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 本当の異常の発報が誤報に分けられる | 前処理の規則で外し、AI に見せない。 指示にも二重に書く |
| 区分に当てはまらない発報が消える | When No Clear Match を Other の出口にする。既定は Discard Item |
| 「原因不明のため誤作動」が機器の不具合に膨らむ | 機器の異常を確かめた記述があるときだけ、と区分の説明に書く |
| 全件が1件目の所見で分類される | 式を Text Classifier の Input Prompt に書く。サブノードでは最初の1件で解決される |
| 日本時間の夜に動く | 自分で置く n8n のタイムゾーンの既定は America/New York。Asia/Tokyo にする |
| 翌朝に動かない | Schedule Trigger のワークフローを保存して公開する |
| 数分おきの同じ発報で連続の基準を超える | 同じセンサーの数分以内の発報を1件の出動にまとめる |
| CSV の列が番号で返る | 見出しの行の扱いを確かめる |
| Code ノードで台帳を読めない | Data Table ノードで取り出してから渡す |
| 半年後に台帳へ書き込めなくなる | Data Table の合計は既定で200 MiB。古い行を消す |
| 所見の暗証番号が外へ出る | 数字の並びを伏せ字にし、月に1回抜き取りで見る |
上の3行が、この構成の失敗のほとんどです。 どれも「分類できなかったものを、どこかの区分に入れてしまう」という同じ形をしています。入れない出口を用意してあるかどうかで、台帳が使えるかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 契約先の名称と住所、警戒の開始と解除の時刻(建物が無人になる時間帯)、センサーの位置、警備員の所見、そして所見に書かれることのある解除の暗証番号や人の名前です。
- 外へ渡すのは所見の文面だけにする … 契約先の名称・住所・警戒の時刻は AI に渡しません。分類に要らない情報は、渡さない設計にできます
- 暗証番号と人の名前を伏せる … 前処理で数字の並びと名前を伏せ、伏せ字の後の文面をログに残して抜き取りで確かめます
- ワークフローの基盤を社内に置く … n8n を自社のサーバーに置き、発報の記録の全体は社外へ出しません
- 本当の異常の判断を AI に寄せない … 火災・非常通報・「異常あり」の報告は規則で外します。監視センターの通常の手順を、この構成で置き換えません
- 連絡を自動で送らない … 担当への連絡も、その先の契約先への提案も人が行います
- 台帳を使う人を絞る … Data Table はプロジェクトの中の人が既定で見られるとされています。管制課と、連続の連絡を受ける担当だけのプロジェクトに置きます
誤りが起きた場合のリスクは、本当の異常を誤報として記録することと、根拠の無い原因を契約先に伝えることの2つです。 前者は前処理の規則で、後者は Other の出口と人の確認で止めます。
10まず何から始めるか
1週目:誤報の区分の定義を揃える
管制担当3名で、台帳の区分を第7章の5つに揃え、それぞれに所見の書きぶりの例を3つずつ書きます。区分の付け方が分かれていた発報を10件選び、どちらにするかをここで決めます。
2週目:100件で試す
先月の「異常なし」の発報から100件を選び、所見を伏せ字にして手元の AI サービスで分類させます。台帳と突き合わせ、所見に無い原因を補っていないかを最優先で見ます。
3週目:書き出しと規則を決める
監視の仕組みの提供元に、前日分の発報の記録を毎朝 CSV で書き出せるかを確かめます。AI に見せない発報の規則(火災・非常通報・異常あり・通報あり・所見なし)を、監視センターの責任者と決めます。
4週目:取り込みから台帳までをつなぐ
n8n で CSV の取り込み、規則、分類、台帳への書き込みまでを作ります。この時点では連続の拾い出しをせず、台帳だけを1か月見ます。
2か月目: Summarize での集計と連続の基準を足し、管制課のチャネルに一覧を出します。拾った契約先の数を毎週数えます。3か月目以降: 連絡文の下書きを足し、1件3分が何分になったかを実測します。連続として拾った契約先への提案で誤報が減ったかを台帳で追えるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Schedule Trigger の間隔(Days など)と cron の式の例。ワークフローを保存して公開する必要があること。タイムゾーンがワークフロー、無ければインスタンスの設定に従い、自分で置く場合の既定が America/New York であること | n8n Docs: Schedule Trigger | 2026-10-14 |
| FTP ノードが FTP と SFTP のサーバーで動き、SFTP では SFTP の資格情報を使うこと。Download・List・Upload・Delete・Rename の操作と、Rename の移し先のフォルダを作るオプション | n8n Docs: FTP | 2026-10-14 |
| Extract From File に Extract From CSV の操作があり、見出しの行の扱いの設定があること | n8n Docs: Extract From File | 2026-10-14 |
| Data Table が n8n の中に構造化データを持ちワークフローをまたいで使えること。行の Insert・Get・Update・Delete・Upsert と If Row Exists の操作 | n8n Docs: Data Table | 2026-10-14 |
| Data Table の合計が既定で200 MiB で、80%で警告、超えると書き込みでエラーになること。環境変数で上限を変えられること。プロジェクトの中の人が既定で見られること。Code ノードから直接読めないこと | n8n Docs: Data tables | 2026-10-14 |
Text Classifier が区分の名前と説明でモデルに分類させること。Allow Multiple Classes To Be True。When No Clear Match の既定が Discard Item で、Other の出口を作れること。System Prompt Template の {categories} | n8n Docs: Text Classifier | 2026-10-14 |
| Basic LLM Chain でプロンプトを決め、出力の形を求めるときに出力パーサーをつなぐこと。System のメッセージを設定できること | n8n Docs: Basic LLM Chain | 2026-10-14 |
| Anthropic Chat Model が Claude のモデルを使うこと。サブノードの式が常に最初の1件で解決されること | n8n Docs: Anthropic Chat Model | 2026-10-14 |
| Summarize ノードの Count などの集計と、Fields to Split By が group by に近い働きをすること | n8n Docs: Summarize | 2026-10-14 |
| Microsoft Teams ノードの Channel Message の Create などの操作。Service Principal(App-Only)の資格情報が Chat・Chat Message に対応せず、Channel Message が一部の対応であること | n8n Docs: Microsoft Teams | 2026-10-14 |
本当の異常かどうかの判断、出動と通報の手順、契約先への説明は、監視センターの規程と責任者の判断に従ってください。 本記事は n8n の公開ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1554)についてのご相談はこちらから。
