中級向け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)にもできる
約35秒で、仕組みの全体(音声あり。音声:VOICEVOX:雨晴はう)

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 公式のページ、英語)。

お客様LINEn8n学習済みの Q&A から似た質問を探してClaude が返信案を作るSlackお客様ごとのスレッド① 質問② 返信案③ 担当者の返信④ LINE へ学習済みの Q&A個人情報は伏せてある⑤ #learn の返信だけ⑥ 次の質問で検索
返信案は、初期設定では Slack に出るだけでお客様には送られない。覚えるのは、担当者が #learn を付けた返信だけ。

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つです。

  1. 担当者の返信が来るまでのお客様の書き込みを、5件まで全部残す(pending_inquiries)。担当者が返信したら空にする
  2. 覚えるとき、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 での動き(自分のパソコンで試しました)

次に読む

次に読む