正直に言うと、最初は「AIボットなんて大企業がやるもの」だと思ってた。でも去年の11月、副業のアクセサリーショップへの問い合わせが週に60件を超えた週、さすがに限界を感じた。
土曜の深夜2時に「発送はいつですか?」というメッセージに返信している自分に気づいて、これはおかしいと。そこでDifyとn8nを組み合わせたボットを3時間半で構築した結果、翌週から対応時間が8時間→1.5時間になった。
この記事では、その具体的な手順をそのまま書く。プログラミングの知識はいらない。必要なのは3〜4時間の時間と、少しの根気だけだ。

最初にこの2つのツールの関係を誤解していて、30分ほど無駄にした。同じようなツールだと思っていたが、役割がまったく違う。
Dify=AIの「頭脳」部分、n8n=AIの「手足・配管」部分と覚えておくとわかりやすい。
Difyは、ChatGPTやClaudeなどのAIモデルをベースに、自社専用のAIアプリを作れるオープンソースツールだ。世界で10万以上のプロジェクトで使われている実績がある。
一番の強みはRAG(検索拡張生成)機能。自分のFAQや商品情報をアップロードするだけで、AIがそのデータを参照しながら回答してくれる。「うちのショップの返品ポリシー」を正確に答えられるのは、これのおかげだ。
n8nは、ノードをつなぐだけでサービス間の自動化が作れるワークフローツールだ。ZapierやMakeと似ているが、セルフホスト可能でコストを大幅に抑えられるのが大きな違い。
今回の構成でn8nが担う役割はシンプルで、「Gmailで問い合わせを受け取る→Difyに送る→返信を顧客に送る」という橋渡しだ。視覚的なフロー画面で操作できるので、コードを書く必要はない。
| 項目 | Dify | N8N | Zapier(参考) |
|---|---|---|---|
| 主な役割 | AIアプリ構築・RAG | ワークフロー自動化 | ワークフロー自動化 |
| 無料プラン | 月200メッセージ | 14日トライアル | 月100タスク |
| セルフホスト | ✅ 可能 | ✅ 可能 | ❌ 不可 |
| コスト感 | 低〜中 | 低(セルフホスト時) | 高め |
| AIとの親和性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
おすすめはこの組み合わせ: コストを抑えたいならDify(クラウド無料)+N8N(セルフホスト)が最強。→ N8Nをセルフホストで始める方法を公式で確認する
実際に作業を始める前に、システムの流れを把握しておくと詰まったときに原因を特定しやすい。私は最初に全体像を把握せず進めたせいで、ステップ4で1時間ハマった。
動作の流れはこうだ。
問い合わせから返信まで平均15秒以内で完結する。深夜2時でも、正月でも、自分が寝ていても動き続ける。これが副業オーナーにとって一番の価値だと思っている。
Difyの設定で最初に迷ったのは「チャットボット」と「テキスト生成」どちらを選ぶかだった。顧客対応なら迷わず「チャットボット」を選ぶのが正解だ。会話の文脈を保持してくれる。
dify.aiにアクセスして、GoogleアカウントかメールアドレスでサインアップするだけでOKだ。無料プランで今回の構築は十分できる。
ログイン後、画面上部の「スタジオ」→「アプリを作成」→タイプは「チャットボット」を選択。アプリ名は「顧客対応ボット」など後でわかる名前をつけておく。
ここが一番時間をかけるべき部分で、同時に一番効果が出るところだ。私は最初にFAQを20件しか用意せず、「在庫はありますか?」という質問に的外れな回答が出て焦った。結局80件に増やして精度が安定した。
左メニューの「ナレッジ」→「ナレッジを作成」から以下の形式でデータをアップロードできる。
FAQは「Q:返品はできますか? A:商品到着後7日以内であれば〜」という形式で50〜100件まとめると精度が上がる。チャンクサイズはデフォルト(500トークン)のままで問題ない。
アプリ設定画面の「指示」欄に、ボットの振る舞いを定義するシステムプロンプトを入力する。私が実際に使っているプロンプトのベースはこういう内容だ。
「あなたは〇〇ショップの丁寧な顧客サポート担当です。提供されたナレッジベースの情報のみを使って回答してください。わからない場合は『担当者に確認してご連絡します』と答えてください。回答は200文字以内で簡潔に。」
設定が終わったら「APIアクセス」メニューからAPIキーを発行する。このキーは次のn8n設定で必ず使うので、メモ帳などにコピーしておくこと。
→ Difyの無料プランでナレッジベースを作ってみる【公式】
n8nの設定は、Difyより視覚的でわかりやすかった。ただ1点だけ、HTTP RequestノードのBody設定でJSONの書き方を間違えて30分ハマった。後で詳しく書く。
n8n.ioにサインアップして「New Workflow」を作成したら、まず最初のノード(トリガー)を設定する。よく使われるトリガーはこのあたりだ。
Gmailノードを追加してGoogleアカウントと連携し、「新しいメールを受信したとき」をトリガー条件に設定。対象ラベルを「問い合わせ」に絞り込むと、不要なメールに反応しなくなる。
トリガーノードの次に「HTTP Request」ノードを追加する。これがn8nとDifyをつなぐ核心部分だ。私がハマったのもここだった。
設定内容はこうなる。
私がハマったのはボディのJSON記述で、「query」フィールドにGmailの本文を動的参照する式を正しく書けていなかった点だ。n8nの式エディタで前のノードの出力値を参照するには、{{ $json[“text”] }} のような形式で記述する必要がある。ここを間違えると「undefined」がDifyに送られて空の回答が返ってくる。
また、conversation