中級向け
メール対応自動化で詰まったこと
在庫の問い合わせと来店予約にAIで返信の下書きを作るワークフローを組み、架空の客のメール7通で検証しました。エラーが1つも出ないまま、後ろのメールが処理されない、自分の下書きに返信する、空き枠がある客を断る、が起きました。
公開
動作確認: — n8n 2.36.8 / Text Classifier v1.1 / Information Extractor v1.2 / Basic LLM Chain v1.9 / Gmail v2.2 / Claude Haiku 4.5
店に届く客のメールを、AIで仕分けて返信の下書きまで作るワークフローを組みました。 在庫の問い合わせには在庫を調べて答え、来店の相談には空いている枠を案内します。
架空の店と架空の客のメール7通で検証したところ、エラーは最後まで1つも出ませんでした。 それでも、次のことが起きています。
- 分類できないメールが1通混ざっただけで、後ろに並んだ5通が処理されないまま終わった
- 自分が書いた下書きを、客のメールとして読んで返信を書いた
- 「今週の土曜」を正しく読めず、空き枠がある客を断る下書きを作った
- AIが、データのどこにも無い「今月中にお届けできます」を書いた
前半の3つはn8nの組み方の問題で、実行はすべて「成功」と表示されました。 最後の1つはAIの問題で、下書きを人が読む以外に止める方法がありませんでした。
作ったもの

| 部品 | 使ったもの |
|---|---|
| 受信 | Gmail(件名に [n8n-test] が付いたメールだけ取得) |
| 1通ずつ回す | Loop Over Items |
| 用件の分類 | Text Classifier(在庫の問い合わせ/来店予約) |
| 在庫と来店枠 | n8n の Data Table(架空の家具店の12商品と、1週間分の来店枠) |
| 文章 | Basic LLM Chain。モデルはすべて Claude Haiku 4.5 |
| 出力 | Gmail の下書き。送信はしない |
決めたことが2つあります。
送信せず、下書きで止める。 客に送る前に必ず人が読みます。 この判断が最後まで効いてくるので、覚えておいてください。
下書きの時点では予約を確定させない。 空き枠を案内するだけにしました。 メールを読んだ時点で枠を押さえると、店側が下書きを送らなかったとき(修正待ち、送り忘れ)に、 誰も来ない予約で枠が埋まったままになります。
検証に使った7通
| # | 客のメール | 正しい返事 |
|---|---|---|
| 1 | グレーのリネン2人掛けソファの在庫は?今月中に届けてほしい | 在庫切れ、11月中旬入荷予定(ベージュは在庫3) |
| 2 | 幅150cmくらいのダイニングテーブルを探している | ウォールナットは在庫2、オークは在庫切れ |
| 3 | シングルベッドは置いているか | 扱っていない |
| 4 | 今週土曜の午後に見に行きたい | 14時は満席、16時なら空き |
| 5 | 10月7日(水)11時に伺えるか | 定休日(枠なし) |
| 6 | 先月買ったチェアの脚がぐらつく | 人が対応する |
| 7 | 3人掛けソファを見に、日曜に行きたい | 在庫あり、ただし日曜は満席 |
客の名前も商品も、すべて架空です。
分類できないメールが1通あると、後ろが全部止まる
最初の実行は6秒で「成功」と表示されました。7通分のAI処理にしては短すぎます。 中を見ると、こうなっていました。
| 処理した順 | メール | 結果 |
|---|---|---|
| 1通目 | #7 ソファ+日曜来店 | 来店予約に分類 |
| 2通目 | #6 チェアの不具合 | どの分類にも入らず、捨てられた |
| 3通目以降 | #5〜#1 の5通 | 一度も処理されていない |
Text Classifier には When No Clear Match(どの分類にも当てはまらないとき)という設定があり、
既定値は discard(捨てる)です。#6 はここで捨てられました。
この設定は Options に追加しないと画面に出てこないので、置いたままでは捨てる設定になっていることが見えません。
捨てられると、そのメールの処理はそこで終わります。 ループの「次の1通へ」に戻る線を通らないので、Loop Over Items は残りの5通を持ったまま止まりました。 在庫の問い合わせ(#1〜#3)は1通も処理されず、下書きは0件です。
When No Clear Match を Output on Extra, ‘Other’ Branch にすると、 当てはまらないメールが3つ目の出口から出てきます。そこを「人に回す」処理につないで、 ループに戻しました。
なお、ループの外で Text Classifier を使った場合は、捨てられるのは当てはまらない1件だけで、残りは止まりませんでした。止まったのは Loop Over Items で1件ずつ回していたためです(Text Classifierの使い方)。

在庫が0件でも、後ろが止まる
other に直して流すと、今度は #3(ベッド)で止まりました。
#3 → 在庫の問い合わせ → 種類は「その他」(正しい)
→ 在庫を検索:0件
→ 0件なので後ろのノードが動かない → ループに戻れない → 終了
扱っていない商品を聞かれただけで、後ろの #2・#1 が未処理になりました。 これも「成功」です。
n8n のノードは、受け取ったアイテムが0件だと何もしません。 在庫検索のノードの Settings で Always Output Data をオンにすると、0件でも空のアイテムを1件出すので、 後ろが動いてループに戻ります。オンにすると、出力欄に 「This node will output an empty item if nothing would normally be returned」と表示されます。
このとき、返信文を作るAIには空の在庫データが渡ります。#3 の下書きは 「シングルベッドの取り扱いはございません」で、存在しない商品をでっち上げることはありませんでした。
自分の下書きに、自分で返信を書いた
ある実行で、ループが10回回りました。メールは7通です。
増えた3回は、1つ前の実行で作った下書きでした。下書きの件名は Re: [n8n-test] … なので、
取得条件の subject:"[n8n-test]" に一致します。ワークフローは自分の下書きを客のメールとして読み、
その下書きへの返信を書いていました。
そのうちの1通にはこう書かれていました。
ご希望の来店日時が抽出されていないようです。
客に向けた文に、社内の処理の言葉が出ています。
取得条件に in:inbox -in:drafts を足して、受信箱だけを読むようにしました。
AIは今日の日付を知らない
来店の相談から日付を取り出すとき、今日の日付を渡さずに実行した結果です。
| # | メールの表現 | 取り出された日付 | 正しい日付 |
|---|---|---|---|
| #7 | 今度の日曜日 | 2025-01-12 | 2026-10-04 |
| #5 | 10月7日の水曜日 | 2024-10-07 | 2026-10-07 |
| #4 | 今週の土曜日 | 土曜日(日付ですらない) | 2026-10-03 |
形式は YYYY-MM-DD と指定していましたが、土曜日 がそのまま返ってきました。
Information Extractor は形式を強制しません。
どの日付も来店枠の検索に引っかからず、下書きはこうなりました。
- #4:「今週の土曜日につきましては、現在来店枠の情報がございません」── 土曜16時は空いているのに断っている
- #7:「ご希望いただいた2025年1月12日(日)につきましては…」── 客が書いていない日付を客に向けて書いている
- #5:「その日のご来店枠に余裕がございません」── 来られないのは合っているが、理由は満席ではなく定休日
抽出に渡す文の先頭に、今日の日付と曜日を付けました。
今日は {{ $now.toFormat('yyyy-MM-dd') }}({{ $now.setLocale('ja').toFormat('cccc') }})です。
これで3通とも正しい日付になり、#4 には16時の空きが案内されました。

0件でも、何も起きずに「成功」になる
Gmail の取得が0件だった実行は、何もせずに「成功」で終わりました。 取得条件を書き間違えると、何も処理しない実行が毎回「成功」として並びます。 メールが来ていないのか、条件が間違っているのかは、実行一覧からは区別できません。
AIの返信:数字は正しかった
在庫の問い合わせへの下書きです。
| # | 下書きの内容 | 判定 |
|---|---|---|
| #1 グレーのソファ | 在庫切れ、11月中旬入荷予定。ベージュなら在庫あり | 正しい。色の取り違えなし |
| #2 幅150cmのテーブル | ウォールナットは在庫2、オークは在庫切れ・入荷未定 | 正しい |
| #3 シングルベッド | 取り扱いがない | 正しい。でっち上げなし |
在庫・価格・入荷予定について、データに無いことは書いていません。 ただ、そのまま客に送れる文ではありませんでした。

- 商品名を
**で囲んでいる。プレーンテキストのメールなので、記号のまま客に届く - 社内の商品コード(SKU)や「在庫データを確認いたしましたところ」と、社内の言葉が出ている
- 初めての客に「いつもご利用いただき」「お疲れさまです」と書いている
そしてもう1つ。#1 の下書きにこう書かれていました。
同シリーズのベージュ色でしたら現在3点在庫がございますので、今月中のお届けが可能です。
配送の情報は、在庫データのどこにもありません。 客が「今月中に届けてほしい」と書いていたのに引っ張られて、 根拠のない約束をしています。指示では「在庫・価格・入荷予定はデータだけを根拠に」と書いていて、 配送は挙げていなかったので、そこをすり抜けました。
同じ条件で3回流して、この約束が出たのは1回でした。 1回試して出なかったからといって、出ないとは言えません。
指示を足して、直ったもの・直らなかったもの
返信を書くAIへの指示に、見つかった問題への対策を足しました。
- データに無いこと(配送・納期・割引・取り置き)は約束しない。分からなければ「担当者から改めてご連絡します」
**や#を使わない- 社内の言葉と商品コードを書かない
- 「お問い合わせありがとうございます」で始め、「いつも」「お疲れさま」は使わない
同じ条件で3回流した結果です。
| 問題 | 指示を足す前 | 足した後(3回) |
|---|---|---|
** などの記号 |
出た | 出なかった |
| 商品コード・社内の言葉 | 出た | 出なかった |
| 不適切な挨拶 | 出た | 出なかった |
| 根拠のない配送の約束 | 3回中1回 | はっきりした約束は出なかった。ただし「お待たせせずにご用意可能」という言い回しが1回 |
| 誤字 | ── | 「お探いのようですね」「お受けしることができない」「来店枠が満いており」、そして「お届けは难しい」── 「難」ではなく中国語の簡体字が混ざっていた |
| 事実の言い換え | ── | 定休日(枠が無い日)を「満席」と書いたのが1回 |
名指しで禁じたものは消えました。 一方で、誤字と事実の言い換えは回ごとに形を変えて出てきます。 上の16時の下書きにも「来店枠をご確認したところ」と、敬語の使い方の誤りが残っています。
これは指示を足しても潰しきれない種類の誤りです。下書きを人が読む工程は、外せませんでした。
用件が2つあるメールは、片方が消える
#7 は「3人掛けソファを見たい」と「日曜に行きたい」の2つの用件があります。 分類は毎回「来店予約」で、ソファの在庫には一度も触れませんでした(確認した5回すべて)。
返信を書くAIには「来店枠以外のことを聞かれたら『担当者から改めてご連絡します』と書く」と指示していましたが、 それでも触れていません。Text Classifier には複数の分類を同時に当てる設定 (Allow Multiple Classes To Be True)があります。この記事の時点では試していませんでしたが、あとで試したところ、用件をはっきり2つ書いた文は両方の分類に入り、この #7 の書き方では複数を許しても来店予約だけでした(Text Classifierの使い方)。
1通あたりの費用
在庫か予約の問い合わせ1通で、AIを3回呼んでいます(分類・取り出し・返信作成)。
| 呼び出し | 入力トークン | 出力トークン |
|---|---|---|
| 分類 | 約620 | 約30 |
| 商品の種類・来店日の取り出し | 約500 | 約40 |
| 返信の作成 | 400〜850 | 110〜340 |
合計で入力1,500〜2,000、出力200〜400トークンほど。 Claude Haiku 4.5 で 1通あたり約0.4〜0.6円です(1ドル150円で計算)。
確認していないこと
- Gmail Trigger は使っていません。 検証は手動で実行し、Gmail ノードでメールを取得しました。定期的に新着を拾うときの挙動は未確認です
- 「人に回す」は何もしないノードです。 実際にはラベルを付ける、担当者に通知するなどが要りますが、作っていません
- 送信まで自動にした場合は試していません。 自分の返信を読み続けるループは、下書きで起きたことからの推測です
- モデルは Claude Haiku 4.5 だけです。 誤字や言い換えの出方は、モデルによって変わるはずです
- 検証したメールは7通、指示を足した後の実行は3回です。出なかった誤りが、出ないとは言えません
次に読む
ツールを持たせて何度も考えさせる AI Agent ノードの費用と止まり方は n8n AI Agentノードの使い方 にまとめています。
モデルの設定と、設定しても効かない項目は n8n で Claude を使う:Anthropic Chat Model の設定と、効かない項目 に書きました。
ほかの実例や、止まった場所のまとめは n8n 業務自動化の実例 にあります。