中級向けn8n 公式テンプレート承認済み
LINE×Slack 学習する窓口
LINE に届いた問い合わせに、過去の担当者の返信から「返信案」を作って、Slack のスレッドに出すワークフローです。
担当者がスレッドに返信すると、そのまま LINE に届きます。返信に #learn を付けたときだけ、個人情報を伏せて覚え、次から似た質問に返信案が出ます。
LINE と Slack の実機で試して、学習する仕組みならではの失敗を5つ直しました。JSON を配布します。
人の手間は、どう変わるか
Before(人が手でやっていたこと)
- 同じような質問に、毎回、過去のやり取りを思い出しながら、一から返信を書く
- LINE の管理画面と社内のチャットを行き来して、相談しながら返す
- 良かった返信を、次の人が使えるように、どこかに書き残す
After(このワークフローを入れると)
- 似た質問への過去の返信をもとにした返信案が、Slack のスレッドに出る(お客様には受付の返事だけ)
- 担当者がスレッドに書いた返信が、そのまま LINE に届く
- #learn を付けた返信は、個人情報を伏せて覚え、次の返信案に使われる
それでも人に残ること
- 返信案を読んで直し、返信する(初期設定では、お客様に自動では送らない)
- どの返信を覚えさせるか(#learn を付けるか)を決める
公開 最終更新
動作確認: — n8n 2.36.8 / Claude Haiku 4.5 / Gemini 埋め込み(gemini-embedding-001) / LINE Messaging API / Slack(無料プラン)
n8n 公式テンプレート: 英語版が n8n の審査を通過しました()。注記を読む
この記事で配っている日本語版は、審査を受けていません。n8n が内容を保証するものではありません。 n8n 公式のページ(英語版)を見る
LINE の問い合わせに答えていると、同じ質問が何度も来ます。 かといって、AI に全部を任せて自動で返すのは、間違った返事が出るのが怖い。
このワークフローは、その間を取ります。
- お客様の質問に似た過去の担当者の返信を探して、Claude が返信案を作る
- 返信案は、初期設定ではお客様には送らず、Slack のスレッドに出すだけ(お客様には受付の返事だけ)
- 担当者が Slack のスレッドに返信すると、そのまま LINE に届く
- 返信に
#learnを付けたときだけ、個人情報を伏せて覚える。次から、似た質問に返信案が出る - 自信があるものだけ、AI が LINE に直接返す設定(
auto_reply)にもできる
learning-support-desk.json をダウンロード
n8n 公式のテンプレートにも提出して(2026年10月10日)、承認されました。 n8n の画面での公開の日付は、2026年10月12日です。承認されたのは英語版で、この記事で配っている日本語版は、審査を受けていません。n8n が内容を保証するものではありません。
なお、同じ筆者の、似た仕組みのテンプレートがもう1本あります。過去の問い合わせの履歴(個人情報を伏せたもの)から答える RAG で、n8n 公式には、英語版だけを出しています(この記事のような、記事も日本語版もありません):Answer masked customer support tickets with Claude and Google Gemini RAG(n8n 公式のページ、英語)。
3本目の LINE×Slack(答えが決まるものを AI が即答し、残りを担当者に回す)に、担当者の返信から学ぶ輪を足したものです。LINE の設定と Slack のアプリの作り方は、3本目と同じです。
このワークフローが守っている3つの決まり
| 決まり | どうしているか |
|---|---|
| お客様に勝手に答えない | 初期設定は auto_reply = false。返信案は Slack に出るだけで、お客様には受付の返事だけが届く |
| 覚えるのは、担当者が選んだものだけ | 返信に #learn が付いたものだけ覚える。付けなければ、LINE には届くが、覚えない |
| 迷ったら、人に回す | 似た質問がしきい値(0.75)に届かない、AI が「答えられない」と言う、下書きに [NAME] のような伏せ字が残る、のどれでも、担当者待ちになる |
「覚えさせる」は、一度間違えると、同じ間違いが何度もお客様に届く仕組みです。だから、覚える側を、いちばん慎重に作りました。この記事の後半は、ほとんどそこで間違えた記録です。
4つの流れが1つのワークフローに入っています
| 流れ | 何をするか |
|---|---|
| A. お客様の LINE | 署名の確認、再送の除外、テキストだけを通す。質問の個人情報を伏せ(正規表現)、学習済みの Q&A から似たものを探し、Claude が返信案を作る。Slack のスレッドに出す(なければ新しいスレッドを作る) |
| B. 担当者の Slack の返信 | 人が書いた返信だけを LINE に送る(「//」で始まる社内メモは送らない)。#learn があれば、伏せて、確認して、覚える |
| C. 検索用の索引の作り直し | n8n の再起動で、検索用の索引(メモリ上)が消える。保存済みの Q&A から作り直す |
| D. 返信待ちの見張り | 15分ごとに、返信待ちが長いお客様を Slack のスレッドで知らせる |
付箋を除いて66ノードです。
実機で試した結果
LINE の公式アカウントと Slack のワークスペースにつないで、2026年10月10日に試しました(n8n 2.36.8、自分のパソコンの WSL で動かし、Cloudflare のトンネルで外から届くようにしました)。LINE から約6通、Slack から3回です(数は、私の記録から数えたもので、実行の記録とは突き合わせていません)。
| やったこと | 結果 |
|---|---|
| 「履いていない靴は返品できますか?」を送る | 学習済みの Q&A(最初は英語で教えた1件だけ)に、類似度 0.80 で当たった。Slack に日本語の返信案が出た。LINE には受付の返事だけ |
| 言い換えて「未使用の靴を送り返したいです」 | 類似度 0.83 |
| 「誕生日用のギフトカードはありますか?」 | 類似度 0.51 で、しきい値に届かず、「担当者の返信が必要」になった |
Slack の返信に #learn を付ける |
LINE にはタグなしで届いた。Slack に、伏せた Q&A([NAME] [ID] など)が出た |
学習したあと、auto_reply を ON にして「営業時間は何時までですか?」 |
類似度 0.85。AI が LINE に直接返した(LINE の API が受け付けた応答と、Slack の「AI が自動で返信した」の表示を確認)。末尾に「自動返信です」の一文が付く |
| n8n を実際に再起動する | 起動の瞬間に索引の作り直しが動き、保存済みの3件が入り直した(実行の記録のイベント名は Instance started) |
類似度は、少ない例での数字です。 質問を数問しか試していないので、しきい値 0.75 は、自分のデータで調整してください。
つまずいた5つと、直し方
1. 後から届いた別の質問と、結び付けて覚えてしまった
いちばん危ない失敗でした。
最初の作りでは、お客様ごとのデータに「最後の質問」を1つだけ持たせて、担当者が返信したら、それを「質問」として覚えていました。ところが、お客様が続けて2つ質問を送ってきて、担当者が最初の質問に返信すると、こうなりました。
- お客様:「履いていない靴は返品できますか?」→「誕生日用のギフトカードはありますか?」
- 担当者:返品の質問に答えて
#learn - 覚えたもの:質問=ギフトカード、答え=返品の案内(保存した表の行で確認しました)
このまま使うと、「ギフトカードは?」と聞かれるたびに、返品の案内が返信案に出ます。自動返信を ON にしていたら、お客様に届いていました。
直し方は2つです。
- 担当者の返信が来るまでのお客様の書き込みを、5件まで全部残す(
pending_inquiries)。担当者が返信したら空にする - 覚えるとき、Claude に「この返信は、番号のどれへの答えか」を番号(
question_index)で選ばせる。はっきりしなければ 0 を返させて、覚えない
直したあと、「営業時間」と「駐車場」を続けて送り、営業時間にだけ答えて #learn を付けると、質問=営業時間で覚えました。続けて、どちらにも関係ない「ありがとうございました。 #learn」を書くと、覚えず、Slack に「どのメッセージへの答えか、はっきりしない」と出ました。
2. まとめて届いた2人分の質問が、1人目の記録に書かれた
LINE の Webhook は、出来事の配列で届きます(複数の出来事が1回に入ることがあります)。4件(2人分のテキスト、スタンプ、友だち追加)をまとめて流して試すと、2人目の質問が、1人目のスレッドの記録を上書きしました。
原因は、1件ずつ処理する仕組み(Loop Over Items)の中で、前のノードの値を $('Extract message fields').first() で読んでいたことです。このノードには4件全部が入っていて、「最初の1件」は、いつも1人目でした。ループの中のノード(1件だけが通るもの)から読むように直すと、2人分が、それぞれの記録とスレッドに入りました。
3. 注文番号を伏せ損ねた
覚えるときの個人情報の処理は、正規表現(メール、電話、カード、郵便番号、番号類)と、Claude の2段階です。ここで、「My order number is A12345」の A12345 が、伏せられずに保存されました。
- 正規表現は、「order number」のすぐ後ろに番号が続く形しか見つけられなかった(間に「is」が入ると外れる)
- Claude も、このときは取りこぼした(同じ入力で、最初の試験では
[ID]に伏せていました。取りこぼしの理由は、確かめていません。同じ日にプロンプトを足した直後でした) - 最後の「伏せ漏れの確認」は、パターン(メール、電話など)を探すだけなので、番号だけの文字列は見つけられません
正規表現を直して、「is / was / は / が」を挟んだ形も見つけるようにしました(「order number is A12345」「注文番号は B98765」「Order number: C55555」「order #D77777」が [ID] になります)。
4. お店自身の電話番号まで伏せてしまった
担当者の返信に、お店の電話番号を書くと、個人情報として [PHONE] に伏せられます。伏せた答えから作る返信案は、「お電話でお問い合わせください」のような、曖昧な文になりました(実際に、電話番号を含む返品の案内が、そうなりました)。
設定のノード(Learning settings)に、お店自身の電話番号とメールを並べる欄(keep_contacts)を足しました。ここに書いたものは、伏せる処理の間は隠しておき、あとで元に戻します。Claude にも、「お店の連絡先なので、そのままに」と伝えます。伏せ漏れの確認でも、この欄のものは対象外です。
試すと、お店の電話番号とメールは残り、同じ返信の中のお客様の電話番号(090-…)は [PHONE] に伏せられました。 一致は、文字列がそのまま同じものだけです(03-1234-5678 と 0312345678 は別物として扱います)。
5. 返信待ちが2件以上あると、見張りが止まった
D(返信待ちの見張り)は、却下された4本目(フォローアップのリマインダー)の部品を使っています。返信待ちが2件あって、片方にまだリマインダーの記録が無いと、「Multiple matches」というエラーで止まりました。
記録を1件ずつ探す作りで、見つからなかった側の結果が、元のスレッドとの対応を失っていたためです。4本目のときは、返信待ちが1件だけの試験だったので、気づけませんでした。記録を、まとめて1回で読み、1つの Code ノードで、スレッドと突き合わせる作りに直しました。2件とも1回ずつリマインドされ、待ち時間を長くすると送られず、短くして2回目を動かすと回数が 1 から 2 になりました。
使うための設定
1. 取り込む
ダウンロードした JSON を、n8n の新しいワークフローに取り込みます。付箋に、同じ内容の手順があります。
2. Data Table を3つ作る
| テーブル | 列(すべて文字列。※のみ数値) |
|---|---|
line_slack_threads |
line_user_id, slack_ts, status, last_inquiry, customer_name, pending_inquiries |
learned_qa |
case_id, question_masked, answer_masked, status, learned_at, staff, note |
followup_reminders |
slack_ts, reminder_count ※, last_reminded_at |
どのノードがどのテーブルを使うかは、取り込んだあと、Data table のノードで選びます。
3. 認証情報
| 認証情報 | 入れるもの |
|---|---|
| Header Auth(LINE) | Name は Authorization、Value は Bearer <チャンネルアクセストークン> |
| Crypto | Hmac Secret に LINE のチャンネルシークレット(署名の確認) |
| Slack API | ボットのトークン(xoxb-)と、アプリの Signing Secret |
| Anthropic | Claude Haiku 4.5 |
| Google Gemini (PaLM) API | 索引と検索の埋め込み。無料枠では、入力の内容が Google の製品の改善に使われ、人が読むことがあり、「個人情報を送らないように」と書かれています。有料の枠では、製品の改善に使われないと書かれています(Gemini API の追加利用規約、2026年10月10日に読みました)。お客様の質問を入れるなら、有料の枠にしてください |
Slack のアプリの権限は、3本目と同じ(chat:write、channels:read、channels:history、reactions:write)です。作り方は3本目の記事にあります。
4. 設定のノード
- Config:
auto_reply(初期値 false)、similarity_threshold(0.75)、受付の返事 - Learning settings:
keep_contacts(お店の電話番号とメール。初期値は見本なので、必ず書き換える) - Reminder settings:待ち時間、回数、営業時間
5. 公開して、URL を貼る
公開したら、Receive LINE webhook の本番 URL を LINE Developers の Webhook に、Slack message の本番 URL を Slack アプリの Event Subscriptions に貼ります(ボットのイベントは message.channels)。覚えた Q&A は空から始まるので、数問送って、#learn 付きで返信し、似た質問を送って確かめてください。
使う前に知っておくこと
- お客様の質問は、名前を伏せられないまま、Gemini(埋め込み)と Claude(返信案)に送られます。 検索のときは、正規表現(メール、電話、番号類)で伏せますが、お客様の名前までは分かりません。覚えるときの2段階の処理とは違います
- お客様の書き込みの原文は、スレッドのテーブルに残ります(
last_inquiry、pending_inquiries)。いつまで持つかを、決めてください - LINE の通数を使うのは、担当者の返信(push)だけです。自動返信と受付の返事は、無料の reply です。無料プランは月 200 通です
- 見張り(D)は、15分ごとに動きます。 月に約 2,900 回(96回 × 30日の計算で、実測ではありません)。実行ごとに数える n8n Cloud では、誰も待っていなくても数えられます。頻度を下げるか、外してください
- Slack のボットの投稿でも、n8n が動きます。1通あたりの実行回数は、今回は数え直していません(3本目の実測では約3回でした)
- テキストだけです。画像やスタンプは無視します
確認していないこと
- 質問の数が少ない。 実機の質問は数問、類似度は数個の値です。しきい値 0.75 が、ほかのお店に合うかは分かりません
- 日本語で学習した答えと、日本語の質問の組み合わせ。 最初に覚えさせたのは英語の Q&A でした。日本語で覚えた分で、類似度の分布は測っていません
- 長く運用したときのこと。 Q&A が数百件になったときの検索の精度、メモリ上の索引の大きさ、再起動の頻度
- 複数の担当者が、同じスレッドに書くとき。 同時に
#learnを付けたときの動き - 本物のお客様のデータ。 試験は、自分のアカウントと、作った質問だけです
- Gemini の有料枠の実際の扱い。 規約のページに書かれていることを読んだだけで、動かして確かめてはいません
- Claude Haiku 4.5 以外のモデル。 伏せる処理と、返信案の作成は、このモデルだけで試しました
- n8n Cloud での動き(自分のパソコンで試しました)
次に読む
- 答えが決まるものを AI が即答し、残りを担当者に回す、元になった作りなら LINE×Slack 問い合わせ対応
- AI の返信案を、担当者が承認してから送る作りなら LINE 承認版
- n8n の実行回数の数え方と、実際の費用なら n8nの料金と実際の費用
- テンプレートを n8n 公式に提出した記録なら n8n公式テンプレートに提出する