飲食チェーン・食品小売の本部で、食品のリコール・自主回収の公表をエージェントが毎日見回り、自社の仕入品と照らして該当の疑いがある品目を品質管理へ知らせる
消費者庁のリコール情報サイトに載る食品のリコール・自主回収を、エージェントが毎日見回ります。公表から事業者・商品・対象の期限やロットを取り出し、自社の仕入品マスタと入荷記録に照らして、該当の疑いがある品目を品質管理へ知らせます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- EC/小売/飲食
- 対象部門
- 品質管理/購買
- 対象業務
- 内容確認・チェック/情報検索
- 主な課題
- 人手が足りない/情報が見つからない/期限・対応漏れが起きる
- AIで行う処理
- エージェント
- 主な効果
- 対応スピード向上/工数削減/機会損失防止
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 品質管理の担当者が毎朝、消費者庁のリコール情報サイトの食料品の新規登録を開き、前日に見たところまで戻って確かめる
- 自社に関係しそうな公表(取引のあるメーカー、使っている品目の類)の詳細を開き、事業者・商品名・対象の期限やロット・理由を書き出す
- 仕入品マスタをメーカー名と商品名で検索し、当たったものについて入荷記録で対象の期限やロットが入ったかを調べる
- 当たりそうなものは購買の担当者が仕入先に問い合わせ、店舗とセントラルキッチンに在庫の確認を頼む
- 品質管理の責任者が、使用の停止・撤去の要否を決める
- 自動毎日朝6時と午後1時にワークフローが動き、リコール情報サイトの食料品の一覧を取る
- 自動前回までに取った管理番号と比べ、新しい公表だけを拾う
- 自動新しい公表の詳細のページを取り、本文の文字を取り出す
- 【AI】 エージェントが事業者・商品名・対象の期限やロット・理由を取り出し、仕入品マスタと入荷記録を引いて該当の候補を挙げる
- 自動候補がある公表を、急ぎの度合いの順に品質管理部のチャットへ知らせる。候補が無い公表は件数と件名だけを1日1回まとめる
- 人品質管理の担当者が候補を確かめ、仕入先への問い合わせと店舗への在庫の確認を頼む
- 人品質管理の責任者が、使用の停止・撤去の要否を決める
各工程の詳しい説明を読む
- 品質管理の担当者が毎朝、消費者庁のリコール情報サイトの食料品の新規登録を開き、前日に見たところまで戻って確かめる
- 自社に関係しそうな公表(取引のあるメーカー、使っている品目の類)の詳細を開き、事業者・商品名・対象の期限やロット・理由を書き出す
- 仕入品マスタをメーカー名と商品名で検索し、当たったものについて入荷記録で対象の期限やロットが入ったかを調べる
- 当たりそうなものは購買の担当者が仕入先に問い合わせ、店舗とセントラルキッチンに在庫の確認を頼む
- 品質管理の責任者が、使用の停止・撤去の要否を決める
(a)見回りが担当者の手の空き具合で決まる。 店舗の衛生点検に出る日や、保健所の立入りに立ち会う日は、一覧を開けません。翌日にまとめて見ると、見る件数が倍になり、前日に見たところまで戻るのに時間がかかります。
(b)メーカー名の書き方が合わない。 公表は「◯◯食品」、仕入品マスタは「(株)◯◯食品工業」のように、同じ会社でも表記が違います。 販売者と製造者が違う商品、自社の名前で作ってもらっている商品もあり、1件の照合に何度も検索し直します。
(c)対象の期限・ロットまで見るのに時間がかかる。 商品が当たっても、対象の賞味期限やロットの品が入ったかは、入荷記録を別の画面で引かないと分かりません。ここを省くと、関係のない店舗まで在庫を探すことになります。
(d)アレルギーの表示の欠落が埋もれる。 リコールの理由には、異物の混入、微生物、表示の誤りなどがあり、アレルギー物質の表示の欠落は、健康被害につながりやすい理由です。 一覧の件名だけでは理由が分からず、詳細を開くまで急ぎかどうかが見えません。
- 【自動】 毎日朝6時と午後1時にワークフローが動き、リコール情報サイトの食料品の一覧を取る
- 【自動】 前回までに取った管理番号と比べ、新しい公表だけを拾う
- 【自動】 新しい公表の詳細のページを取り、本文の文字を取り出す
- 【AI】 エージェントが事業者・商品名・対象の期限やロット・理由を取り出し、仕入品マスタと入荷記録を引いて該当の候補を挙げる
- 【自動】 候補がある公表を、急ぎの度合いの順に品質管理部のチャットへ知らせる。候補が無い公表は件数と件名だけを1日1回まとめる
- 【人】 品質管理の担当者が候補を確かめ、仕入先への問い合わせと店舗への在庫の確認を頼む
- 【人】 品質管理の責任者が、使用の停止・撤去の要否を決める
2番目をAIにさせないのは、意図してのことです。 新しい公表かどうかは、詳細のページの管理番号で確実に決まります。AIに「新しいか」を判断させると、見落としたときに理由を追えません。
5番目で、候補の無い公表も消さずにまとめて出すのは、照合の漏れに人が気づけるようにするためです。 件名だけを流し見て、「これは自社の取引先では」と気づいたら、表記の対応表に足します。
02今回想定するシステム構成
消費者庁 リコール情報サイト(食料品の一覧と詳細) │ ▼【トリガー】Schedule Trigger(毎日 6時・13時、Asia/Tokyo) n8n のワークフロー ├──▶ HTTP Request + HTML で一覧から管理番号・件名・掲載日・詳細のリンクを取り出す ├──▶ 前回までに取った管理番号と比べ、新しい公表を拾う ├──▶ HTTP Request + HTML で詳細のページの本文を取り出す ▼ AI Agent ノード(Tools Agent)+ Claude │ 公表1件ごとに、道具を選んで引く │ ・仕入品マスタを JANコードで引く ・メーカー名の対応表と仕入品マスタを引く │ ・仕入品マスタを商品名で引く ・入荷記録を引く(期限・ロット) │ ・過去の照合の記録を引く │ Structured Output Parser で決まった形のJSONを返す ▼ 照合の一覧(PostgreSQL の別の表)→ 品質管理部のチャットへ通知 ▼【人】候補の確認・仕入先への問い合わせ・店舗の在庫の確認・使用の停止の判断
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n | Make、Power Automate、Zapier |
| 生成AI | Claude API(n8n の Anthropic Chat Model ノード) | OpenAI API、Gemini API |
| 連携 | PostgreSQL(仕入品マスタ・入荷記録の写し、照合の一覧) | MySQL |
| 通知 | 社内チャット | メール |
新しく足すのは、n8n のワークフローと、写しのデータベースだけです。 購買の仕組みと店舗の発注の仕組みには書き込みません。毎晩、仕入品マスタと直近の入荷記録を書き出して写しを作り、エージェントはその写しを引きます。
見回るのは、消費者庁のリコール情報サイトの食料品の一覧です。 消費者庁の食品表示リコール情報のページでは、自主回収報告がなされた食品等の公表情報は、厚生労働省の食品衛生申請等システムの「食品リコール公開回収事案検索」で確認できると案内されています。リコール情報サイトは回収・無償修理等の情報をカテゴリー別に載せていて、食料品の一覧には、件名、掲載日、対応開始日と、詳細のページへのリンクが並びます。 一覧は15件・30件・45件・60件ごとに表示を切り替えられます。
詳細のページには、回収の理由、商品名、連絡先、対応方法、対応開始日、対象の特定情報、参照情報の欄があり、URLに管理番号が入っています。 2026年10月7日に見た粉チーズの公表では、理由の欄に「カビに汚染されている可能性」とあり、参照情報に厚生労働省の食品衛生申請等システムが挙がっていました。この管理番号を、新しい公表かどうかの鍵にします。
取り出しは、n8n の HTML ノードで行います。 Extract HTML Content は、CSS セレクターで要素を指定し、テキスト・属性(リンク先など)・HTML を取り出せます。 一覧からは件名とリンク、詳細からは各欄の文字を取ります。
n8n のエージェントを選ぶ理由は、公表1件ごとに引き方が変わるからです。 JANコードが書かれていればそれで引き、書かれていなければメーカー名の対応表と商品名で引き、当たれば入荷記録まで引きます。Tools Agent は、道具の機能を理解し、タスクに応じてどの道具を使うかを決めるとされています。
03どうやって実装するのか
処理の起点を決める
毎日朝6時と午後1時に、Schedule Trigger で動かします。 朝6時は、開店前の仕込みの前に店舗へ知らせるため、午後1時は、午前中に載った公表を夕方の仕込みの前に拾うためです。週末と祝日も止めません。 店舗は営業しているからです。
Schedule Trigger は、ワークフローのタイムゾーンが無ければ n8n のインスタンスのタイムゾーンを使い、セルフホストの既定は America/New York とされています。ワークフローのタイムゾーンを Asia/Tokyo にし、保存して公開します。公開しないと Schedule Trigger は動かないとされています。1つの Schedule Trigger に複数の実行の規則を足せるので、6時と13時の2つの規則を置きます。
このワークフローが止まったことに、人が気づける仕組みを必ず作ります。 朝6時の実行が終わったら、件数がゼロでも「本日の見回り完了(新しい公表 0件)」をチャットに出します。通知が来ないこと自体が、止まった合図になります。 第3章の(a)は、ここで解きます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 一覧 | 管理番号、件名、カテゴリー、掲載日、対応開始日、詳細のリンク | リコール情報サイトの食料品の一覧 |
| 詳細 | 理由、商品名、連絡先、対応方法、対応開始日、対象の特定情報、参照情報 | 詳細のページ |
| 取得済みの管理番号 | 前回までに取った管理番号の一覧 | 照合の一覧 |
| 仕入品マスタの写し | 社内コード、メーカー名、販売者名、商品名、規格、JANコード、仕入先、使う業態 | 購買の仕組みから毎晩写す |
| 入荷記録の写し | 社内コード、入荷日、入荷先(セントラルキッチン・店舗)、賞味期限・消費期限、ロット | 直近90日分を毎晩写す |
| メーカー名の対応表 | 公表に出る社名の書き方と、仕入品マスタのメーカー名の対応 | 品質管理部が作る表 |
| 過去の照合の記録 | 同じ事業者・商品の前回の照合と、人の判断 | 照合の一覧 |
質を決めるのは、メーカー名の対応表です。 第3章の(b)のとおり、公表と仕入品マスタでは同じ会社の書き方が違います。対応表に「◯◯食品」→「(株)◯◯食品工業」を持たせ、エージェントは対応表を先に引きます。 対応表は、候補の無かった公表の件名を人が流し見て気づいたものから足していきます。
入荷記録を直近90日に絞るのは、賞味期限の短い食材が大半だからです。 冷凍食品や調味料のように期限の長いものは、仕入品マスタの「期限の長い品」の印を見て、その品だけ1年分を引くようにします。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 一覧の HTML | 食料品の一覧(60件ごとの表示) | HTTP Request(GET) |
| 管理番号・件名・リンク | 一覧の HTML | HTML ノード(件名の文字と href 属性。管理番号はリンクから取り出す) |
| 新しい公表 | 取得済みの管理番号との比較 | Postgres ノードで取得済みの一覧を引き、含まれないものを残す |
| 詳細の本文 | 詳細のページ | HTTP Request + HTML ノード(各欄の文字) |
| 仕入品・入荷 | 写しのデータベース | エージェントの道具(Postgres の Select、パラメーター付きの Execute Query) |
一覧は60件ごとの表示で取り、1ページ目に前回の最新の管理番号が無ければ、次のページも取ります。 半日の新しい公表が60件を超えることは少ないものの、連休明けの朝は前回の続きが2ページ目に入ることがあります。 ページを送るのは、前回の管理番号が見つかるまでにします。
詳細のページは、間隔を空けて1件ずつ取ります。 HTTP Request の Batching で、1回に送る件数と次の送信までの待ち時間を決められます。応答のヘッダーを待つ時間の上限を Timeout で決め、1件が止まっても全体を止めないようにします。
参照情報に厚生労働省の食品衛生申請等システムへのリンクがあれば、それも記録します。 対象の特定情報(JANコード、期限、ロット)が詳細のページの欄で読み取れないときに、人が確かめに行く先になるからです。
AIへ渡す前に整形する
- 社名の書き方をそろえる … 「株式会社」「(株)」「㈱」、全角・半角、空白を外し、公表と仕入品マスタの両方を同じ規則でそろえます
- 件名から事業者と商品を分ける … 件名は「事業者「商品名」(販売先)- 対応」の形が多いので、かぎ括弧で分けて取り出しの手がかりにします。分けられない件名もそのまま渡します
- JANコードの形をそろえる … 公表の本文から13桁・8桁の数字を拾い、仕入品マスタの JANコードと同じ形にします
- 日付をそろえる … 「2026年10月05日」「R8.10.5」「26.10.05」などを日付に直します。直せないものは文字のまま残し、人が見ます
- 写しの日付を確かめる … 前夜の仕入品マスタと入荷記録の写しが作られていなければ、照合を止め、「照合できていない」と通知します
- 画像だけの欄を見分ける … 対象の特定情報が画像で載っていて文字が取れないときは、
target_in_imageを付けて人に回します
5番目は、止めて知らせることを選んでいます。 古い写しで照合すると、昨日から仕入れ始めた食材が漏れます。リコールの照合で「該当なし」と出すことは、照合できないと知らせることより危険です。
AIに処理させる
させるのは、公表1件ごとに、事業者・商品・対象・理由を取り出し、仕入品マスタと入荷記録を引いて該当の候補を挙げることです。
| させること | 使う道具 | 返すもの |
|---|---|---|
| 事業者と商品を取り出す | - | 事業者名、販売者・製造者の区別、商品名、規格 |
| 対象を取り出す | - | JANコード、賞味期限・消費期限、ロット、販売地域・販売先 |
| 理由を取り出す | - | 理由の文言と、理由の区分(アレルギー表示・異物・微生物・その他の表示・その他) |
| 仕入品を JANコードで引く | JANコードで引く | 一致した社内コード |
| 仕入品を社名と商品名で引く | 対応表と仕入品マスタを引く | 社名が当たった仕入品と、商品名の近さ |
| 入荷を引く | 入荷記録を引く | 該当の候補の入荷日、入荷先、期限、ロット |
| 前回の照合を添える | 過去の照合の記録を引く | 同じ事業者・商品の前回の判断 |
理由の区分を分けさせるのが、第3章の(d)への答えです。 アレルギー物質の表示の欠落と、異物・微生物は、急ぎの度合いを上げます。理由の文言は公表のまま写させ、区分はその文言から選ばせます。
| させないこと | 理由 |
|---|---|
| 該当なしの結論 | 社名か商品名が当たったものは必ず人に回す |
| 対象の期限・ロットの推測 | 書かれていなければ「記載なし」。画像なら人が見る |
| 使用の停止・撤去の判断 | 品質管理の責任者が、在庫と店舗の状況を見て決める |
| 健康への影響の見立て | 保健所と事業者の公表、専門家の判断による |
| 店舗への連絡文の送信 | 連絡は人が内容を確かめてから行う |
1行目が、この構成でいちばん大事な線です。 商品名が少し違うだけで「別の商品」と判断させると、規格違い・容量違いの同じ商品を見落とします。 エージェントには候補の近さを書かせますが、候補から外す権限は持たせません。
指示内容を固定する
AI Agent ノードの System Message に、次のように書きます。
あなたは飲食チェーンの品質管理部で、公表された食品のリコール・自主回収を、
自社の仕入品と入荷記録に照らす担当です。入力は、新しく見つかった公表1件の
件名と詳細のページの本文です。
【やること】
1. 事業者名、販売者か製造者か、商品名、規格、JANコード、賞味期限・消費期限、
ロット、販売地域・販売先、理由を取り出す。
2. 理由の区分を allergen_label / foreign_matter / microbial / other_label /
other から1つ選ぶ。
3. JANコードがあれば、仕入品マスタを JANコードで引く。
4. メーカー名の対応表を引き、当たった社名で仕入品マスタを引く。
商品名でも仕入品マスタを引く。
5. 当たった仕入品について、入荷記録を引き、対象の期限・ロットと見比べる。
6. 過去の照合の記録を引き、同じ事業者・商品の前回の判断を添える。
【厳守事項】
- 事業者名、商品名、期限、ロット、理由は、公表に書かれた文言を
そのまま写してください。
- 書かれていない期限やロットを推測しないでください。「記載なし」としてください。
- 社名か商品名のどちらかが仕入品に当たったときは、candidates に必ず残して
ください。規格や容量が違っても、外さないでください。違いは
check_points に書いてください。
- 該当する・しないの結論を書かないでください。match_basis に、
何が一致したか(jan / maker / product_name)だけを書いてください。
- 入荷記録の期限・ロットが対象と一致するかは、lot_match に
match / no_match / unknown で書き、unknown を no_match にしないでください。
- 健康への影響や、取るべき対応を書かないでください。
- 食品でない公表と判断したときは relevant を false にしてください。
【出力】指定のJSONの形で返してください。
「unknown を no_match にしない」が、この指示の要です。 入荷記録にロットが残っていない仕入品は、対象かどうかが分かりません。分からないものを「一致しない」と書かせると、店舗に在庫の確認を頼む候補から落ちます。 3つの値を分けておけば、後段の規則で unknown を必ず店舗の確認に回せます。
出力形式を固定する
Structured Output Parser で、次の形のJSONを返させます。
{
"recall_id": "", "title": "", "posted": "", "relevant": true,
"company": "", "company_role": "seller | maker | unknown",
"product": "", "size": "", "jan": [""],
"best_before": "", "lot": "", "sales_area": "",
"reason_text": "",
"reason_type": "allergen_label | foreign_matter | microbial | other_label | other",
"target_in_image": false,
"candidates": [
{ "item_code": "", "maker": "", "item_name": "",
"match_basis": "jan | maker | product_name",
"receipts": [ { "date": "", "site": "", "best_before": "", "lot": "" } ],
"lot_match": "match | no_match | unknown",
"previous_judgment": "" }
],
"check_points": [""]
}
1つ目の理由は、lot_match で店舗に頼む範囲を決められることです。 match と unknown の入荷先だけに在庫の確認を頼みます。第3章の(c)は、ここで解けます。
2つ目は、reason_type と match_basis で急ぎの順を規則で決められることです。 急ぎの度合いはAIに決めさせず、ワークフローが次の規則で付けます。
| 急ぎ | 条件 |
|---|---|
| 至急 | lot_match が match、または reason_type が allergen_label で候補がある |
| 当日 | lot_match が unknown、または match_basis が jan |
| 確認 | match_basis が maker か product_name だけで、入荷が無い |
| 記録 | 候補が無い(件数と件名だけを1日1回まとめる) |
3つ目は、target_in_image で人が画像を見る公表を分けられることです。 対象の特定情報が画像で載っている公表は、文字の照合が効きません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| リコール情報サイト | HTTP Request(GET)+ HTML ノード | 一覧と詳細を取る |
| 写しのデータベース | Postgres ノード(Select、パラメーター付きの Execute Query) | 仕入品・入荷・対応表・過去の照合を引く |
| Claude API | Anthropic Chat Model ノード | 取り出しと照合の整理 |
| 照合の一覧 | Postgres ノード(Insert) | エージェントの出力と人の判断 |
| 社内チャット | 通知 | 急ぎの順に、品質管理部へ出す |
照合の一覧への書き込みは、ワークフローの側で行います。 エージェントの道具には Insert を含めず、写しを引く Select と Execute Query だけを渡します。Execute Query では $1 のようなパラメーターに値を渡す形を使い、公式の説明では、クエリパラメーターのデータは n8n が無害化し、SQL インジェクションを防ぐとされています。公表の本文の文字を、そのまま問い合わせに埋め込まないでください。
店舗への連絡は、この構成から直接は出しません。 品質管理の担当者が候補を確かめ、店舗に在庫の確認を頼む文面を自分で送ります。
人が確認する
- 至急から見る … 対象の期限・ロットが入荷と一致したもの、アレルギー表示の欠落で候補があるものは、すぐに仕入先に問い合わせ、入荷先の在庫を確かめます
- 当日の候補を確かめる …
unknownの入荷先に在庫の確認を頼みます - 確認の候補を判断する … 社名や商品名だけが当たったものは、仕入先と商品の規格を見て、自社の品かを確かめます
- 候補の無い公表を流し見る … 1日1回のまとめで件名を見て、取引先なのに当たらなかったものがあれば、メーカー名の対応表に足します
- 判断を記録する … 該当の有無、店舗への連絡、使用の停止・撤去の有無を照合の一覧に残します
4番目を省かないでください。 照合の漏れは、対応表の抜けから起きます。人が件名を見て気づくことが、対応表を育てる唯一の経路です。
目標は、1件をならして5分です。 照合の結果の確認に3分、連絡の要否の判断に2分という見込みです。
例外に対処する
| 起きること | 対応 |
|---|---|
| サイトが取れない | 「見回りできず」を通知。前回の一覧を今回とみなさない |
| 一覧の作りが変わり、管理番号が取れない | 比較を止め、人に回す |
| 1回で新しい公表が極端に多い | 作りの変化を疑い、件数の上限を超えたら止める |
| 対象の特定情報が画像だけ | target_in_image を付け、人が画像を見る |
| 写しが古い | 照合を止め、「照合できていない」と通知 |
| 同じ商品の公表が更新される | 前回の照合を添え、変わった点を check_points に書く |
| エージェントの出力がスキーマに合わない | 件名とURLだけを至急の扱いで人に回す |
| 道具の呼び出しがくり返し止まらない | Max Iterations で上限を決め、超えたら人へ |
7行目で、スキーマに合わない出力を「至急」で回すのは意図してのことです。 照合ができなかった公表は、該当の有無が分からないという意味で、確かめるまでは最も重く扱います。
記録を残す
- 実行ごとの取得の成否と、新しく拾った管理番号の一覧
- 取った詳細のページの本文
- エージェントのJSON出力と、呼んだ道具の順番
- 人の判断 … 該当の有無、店舗への連絡、使用の停止・撤去の有無、判断した日時
- 公表の掲載日、拾った日時、店舗に連絡した日時、在庫を確かめ終えた日時
最後の行が、この構成の物差しです。 掲載から店舗への連絡までの時間を並べると、見回りの遅れか、社内の確認の遅れかが分かれて見えます。
04実装レベルの3段階
半自動化だけでも、①の見回りの時間はほぼ無くなります。 新しい公表の拾い出しは、AIを使わずに組めます。残るのは、本文から対象を取り出す②と、入荷まで引く③です。 本格構成で減るのは、その②と③と④です。 段階を飛ばさず、半自動化を1か月回して、拾った公表に漏れが無いかを担当者のこれまでの見回りと比べてから、エージェントを足してください。
05工数削減シミュレーション
導入後 120件 × 5分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 数十店舗以上の飲食チェーンや食品スーパー・食品のECの本部で、食材・商品を数百社の仕入先から買い、仕入品が数千点ある場合。品質管理の担当者が、消費者庁のリコール情報サイトや仕入先からの連絡を見て、自社の仕入品に当たるものが無いかを手で確かめている場合。リコールに気づくのが遅れ、店舗で対象の品を使い続けたり、売り続けたりするおそれがある場合。仕入品マスタにメーカー名・商品名・JANコードの列があり、入荷記録に賞味期限やロットを残している場合。
- 仕入先が数社に限られ、リコールの際に必ず仕入先から電話や書面で連絡が来る体制がある場合。仕入品が数十点で、担当者が毎日の一覧を見ても負担にならない場合。仕入品マスタにメーカー名が無く、仕入先名でしか引けない場合(先にマスタの整備が要ります)。なお、店舗での使用の停止・撤去、お客さまへの告知、保健所への相談の判断は、この構成では代替できません。
07最小構成で試す方法
- 過去3か月の食料品のリコールの公表から、10件を選ぶ(取引のあるメーカーのもの、社名の書き方が違うもの、アレルギー表示の欠落を入れる)
- 仕入品マスタから、そのメーカーの品目の行と、入荷記録の行を書き出す
- 生成AIの画面に、公表の本文と仕入品・入荷の行を貼り、「公表から事業者・商品・期限・ロット・理由を書かれたまま取り出し、仕入品の行と照らして候補を挙げ、入荷の期限・ロットと一致するかを match・no_match・unknown で書いてください。該当の結論は書かず、規格が違う候補も外さないでください」と指示する
- 出てきた候補を、当時の担当者の照合と比べる
| 出てきた内容 | 判断 |
|---|---|
| 当時の照合と同じ候補が出た | ワークフローを組む段階に進む |
| 規格違いの候補を外した・unknown を no_match にした | 指示の書き方で直る。出力の値を3つに分けて持たせる |
| 社名の書き方の違いで候補が出ない | メーカー名の対応表が先。 取引の多いメーカーから作る |
3行目が出ることは珍しくありません。 その場合は、仕入額の多いメーカー50社から、公表に出る社名の書き方を対応表に入れてください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 規格違いの同じ商品を外す | 候補から外す権限を持たせず、違いは check_points に書かせる |
| ロットが分からないものを「一致しない」にする | lot_match を3値にし、unknown は店舗の確認に回す |
| 社名の書き方の違いで当たらない | 前処理で書き方をそろえ、メーカー名の対応表を引かせる |
| 期限・ロットを推して書く | 指示で禁じ、画像の欄は人が見る |
| 見回りが止まったことに気づかない | 件数ゼロでも完了の通知を出す |
| 古い写しで「該当なし」になる | 写しが作られていなければ止めて知らせる |
| サイトの作りの変更で管理番号が取れない | 件数の上限と、取れなかったときの停止を置く |
| 公表の文字を SQL に埋め込む | パラメーター付きの Execute Query を使う |
上の2行が、この構成の失敗のほとんどです。 どちらも、分からないことを「該当しない」に寄せることから起きます。リコールの照合では、分からないものは人へ、を出力の形で守ってください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 公表されているリコールの情報、自社の仕入品(どのメーカーの何を使っているか)、入荷記録(どこに何がいつ入ったか)です。仕入品と仕入先は、自社のメニューと調達の情報そのものです。
- AIに渡す範囲を絞る … 照合に要るのは、社名、商品名、JANコードと、候補になった品の入荷の期限・ロットだけです。仕入品マスタの全件を一度に渡さず、道具で必要な行だけを引かせます
- 使用の停止と告知の判断は人が行う … この構成が出すのは候補と根拠です。店舗での使用の停止・撤去、お客さまへの告知、保健所への相談は、品質管理の責任者が決めてください
- 「該当なし」を自動の結論にしない … 照合できないこと、分からないことは、必ず人に回します
- リコール情報サイトへの負荷を抑える … 1日2回、決まった一覧と新しい詳細だけを、間隔を空けて取ります
- 購買の仕組みに書き込ませない … エージェントの道具は読み取りだけにし、判断の記録はワークフローの側で書きます
誤りが起きた場合のリスクは、該当する品を見落として使い続けることと、該当しない品で店舗に確認を頼みすぎることの2つです。 前者のほうがはるかに重いので、迷ったものは人へ、の側に寄せて設計しています。 後者はメーカー名の対応表と入荷記録の整備で減らします。
10まず何から始めるか
1週目:メーカー名の対応表を作る
仕入額の多いメーカー50社について、公表に出そうな社名の書き方と、仕入品マスタのメーカー名を表にします。販売者と製造者が違う商品も書き出します。
2週目:10件で試す
第8章の手順で、過去のリコール10件の照合をさせます。規格違いを外していないかと、unknown を no_match にしていないかを見ます。
3週目:写しを用意する
仕入品マスタと直近90日の入荷記録の写しを毎晩作る仕組みを用意します。入荷記録に期限とロットが残っていない仕入品を書き出します。
4週目:見回りと社名での照合を n8n で動かす
一覧の取得、新しい公表の拾い出し、社名の対応表での照合までを組み、件数ゼロでも完了を通知します。エージェントはまだ入れず、拾った公表を担当者の見回りと1か月比べます。
それ以降: エージェントを足し、掲載から店舗への連絡までの時間を毎月並べます。入荷と一致した公表が、掲載の当日のうちに店舗に届くようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| リコール情報サイトが回収・無償修理等の情報をカテゴリー(食料品など)別に載せ、新規登録情報とメールサービスがあること。2026年10月5日・6日に食料品の新規登録が載っていたこと(原文を取得して確認) | 消費者庁: リコール情報サイト | 2026-10-07 |
| 食料品の一覧に件名・掲載日・対応開始日と詳細のリンク(管理番号入り)が並び、15・30・45・60件ごとに表示を切り替えられること。詳細のページに理由・商品名・連絡先・対応方法・対応開始日・対象の特定情報・参照情報・管理番号の欄があること(原文を取得して確認) | 消費者庁: リコール情報サイト 食料品の一覧 | 2026-10-07 |
| 令和3年6月1日施行の食品衛生法及び食品表示法の一部改正に伴い食品表示リコール情報サイトの運用が始まったこと。自主回収報告がなされた食品等の公表情報が「食品リコール公開回収事案検索」で確認できると案内されていること(原文を取得して確認) | 消費者庁: 食品表示リコール情報及び違反情報サイト | 2026-10-07 |
| 令和3年6月1日から食品等の自主回収の届出が義務化されたこと。食品衛生法に違反する、または違反のおそれがある食品等が対象であること。届出された情報が健康被害発生の可能性を考慮してクラス分類されること(原文を取得して確認) | 厚生労働省: 自主回収報告制度(リコール)に関する情報 | 2026-10-07 |
| Schedule Trigger が、ワークフローのタイムゾーンかインスタンスのタイムゾーン(セルフホストの既定は America/New York)を使うこと。保存して公開しないと動かないこと。複数の実行の規則を足せること | n8n Docs: Schedule Trigger | 2026-10-07 |
| HTTP Request ノードの Batching(1回の件数と待ち時間)と Timeout の設定があること | n8n Docs: HTTP Request | 2026-10-07 |
| HTML ノードの Extract HTML Content が、CSS セレクターでテキスト・属性・HTML を取り出せること | n8n Docs: HTML | 2026-10-07 |
| Postgres ノードの操作(Execute Query、Insert、Select など)。AIエージェントの道具として使えること。クエリパラメーターのデータが無害化され SQL インジェクションを防ぐこと | n8n Docs: Postgres | 2026-10-07 |
| Tools Agent が道具の機能を理解して使う道具を決めること。Max Iterations と、出力パーサーをつなぐ設定があること | n8n Docs: Tools Agent | 2026-10-07 |
ある食品がリコールの対象に当たるかと、取るべき対応は、事業者の公表、仕入先への確認、必要に応じて保健所への相談で確かめてください。 本記事は確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0773)についてのご相談はこちらから。
