【Slack】Difyを使ってNotionをナレッジとして自動で返信してくれる「AIチャットBot(LLM)」を作成してみた!

目次

このマニュアルについて

本ドキュメントは、Dockerなどの複雑なインフラ構築を行わず、マネージドサービス(SaaS)を組み合わせることで、エンタープライズ品質の社内AI Botを最速かつ低コストで構築するための完全ガイドです。

Phase 0:前提条件・準備 (30分)

1. 必要なアカウント一覧

  • Googleアカウント (Google AI Studio利用のため)
  • Dify Cloud アカウント (https://cloud.dify.ai/)
  • Slack Workspace (アプリインストール権限を持つ管理者アカウント)
  • Notion アカウント (ワークスペース管理者権限)

Phase 1:Google AI Studio APIキーの取得 (10分)

1. APIキーの取得手順

  1. ブラウザで Google AI Studio にアクセスし、Googleアカウントでログインします。
  2. 左側のメニューから “Get API key” をクリックします。
  3. “APIキーを作成” ボタンをクリックします。
  4. 必要情報を入力して “キーを作成” をクリックします(既存プロジェクトがある場合はそちらでも可)。
  5. 生成されたキー(AIzaSy... で始まる文字列)をコピーし、情報管理シートに記録します。

⚠️ セキュリティ警告

APIキーはパスワードと同様に重要です。GitHubなどの公開リポジトリにコミットしたり、第三者に共有したりしないでください。不正利用されると高額な請求が発生する可能性があります。

Phase 2:Notionの準備 (20分)

1. Integration作成手順

  1. Notionにログインした状態で My Integrations にアクセスします。
  2. “+ 新しいインテグレーション” をクリックします。
  3. 以下の通り入力して保存します
  • Name: Dify Knowledge Bot
  • Associated workspace: 対象のワークスペース
  • Type: 内部
  1. “内部インテグレーションシークレット” をコピーし、情報管理シートに記録します。

2. アクセス権の付与

  1. ナレッジベースとして使用したいNotionの親ページを開きます。
  2. 右上の “…” (メニュー)“Add connections” (コネクトを追加) をクリックします。
  3. 先ほど作成した Dify Knowledge Bot を検索して選択します。
  4. 確認ダイアログで “確認” をクリックします。
  5. ※ 親ページに権限を付与すると、子ページにも自動的に適用されます。

Phase 3:Dify Cloud環境構築 (30分)

1. アカウント作成とワークスペース設定

  1. Dify Cloud にアクセスし、アカウントを作成(GitHub/Google連携推奨)します。
  2. 初回ログイン時にワークスペースが自動作成されます。
  3. 右上のアイコン → SettingsBilling でプランを確認します。
    ※ 無料プラン(Sandbox)でもテスト可能ですが、実運用(API利用)には Professionalプラン ($59/月) へのアップグレードを推奨します。

2. Gemini APIの設定

  1. Dify画面右上のアイコン → 設置モデルプロバイダー をクリックします。
  2. モデル一覧から Google を探して Setup をクリックします。
  3. API Key 欄に、Phase 1で取得したGoogle AI Studioのキーを入力します。
  4. Save をクリックして保存します。
  5. gemini-2.0-flash モデルが利用可能になったことを確認します。

gemini-1.5-flash などだとうまくDifyと連携できないケースがあるようです。
2.0-flashだとうまくいきました。

Phase 4:Notionナレッジべースの作成 (40分)

1. ナレッジベースの作成

  1. Dify上部のメニューから ナレッジ を選択します。
  2. ナレッジベースを作成 ボタンをクリックします。
  3. Notionから同期 を選択し、Connect をクリックします。
  4. Phase 2で取得した Integration Token を入力して認証します。
  5. 同期可能なページ一覧が表示されるので、対象ページを選択して Next をクリックします。

2. インデックス設定 (重要)

回答精度を左右する重要な設定です。以下の通り設定してください。

  • Indexing Technique: High Quality
  • Embedding Model: text-embedding-3-small (OpenAI) または Difyデフォルト
  • Chunk Settings: Custom
  • Chunk Size: 500 tokens (短めに区切ることで精度向上)
  • Chunk Overlap: 50 tokens

Save & Process をクリックしてインデックス作成を開始します(完了まで数分かかります)。

3. 検索テスト

  1. 作成したナレッジベースをクリックして詳細画面に入ります。
  2. 左メニューの Search Test をクリックします。
  3. 実際にNotionにある内容について質問を入力し、適切なテキストチャンクがヒットするか確認します。

Phase 5:Dify チャットボットアプリ作成 (1時間)

1. アプリ作成

  1. 上部メニュー Studio最初から作成 をクリックします。
  2. チャットフロー を選択し、名前(例: 社内ナレッジBot)を入力して作成します。

2. モデルとコンテキスト設定

こちらを参考に作成します。
https://github.com/solaoi/dify-plugin-slack-thread-bot/blob/v0.0.5/README.ja.md

「3. 使い方」の通り、以下のように設定をします。
このプラグインを紐づけるチャットフローアプリの「開始ノード」で、以下の引数を設定することで、スレッド内の会話履歴やユーザー一覧を参照できます。

入力フィールドフィールドタイプ
thread_history段落(例:最大長 65535)
thread_users段落(例:最大長 65535)
filesファイルリスト
thread_ts短文(例:最大長 48(デフォルト))
channel_id短文(例:最大長 48(デフォルト))

3. システムプロンプト設定

以下のプロンプトを「LLM」のエリアに貼り付けます。

あなたは社内ナレッジ({{#context#}})を最優先して回答する、社内向けサポートAIです。目的は「最短で解決」することです。

# 最重要(参照優先順位)
1) まず必ず {{#context#}} を参照し、関連情報があればそれに基づいて回答する。
2) context に十分な情報がない場合のみ、一般的な情報として補足する。
3) context に何もない場合は、一般的な情報で回答する(ただし推測はしない)。

# 出力方針(長文防止・解決優先)
- 1回の返信は原則「最大1200文字」まで。
- 最初の返信は短く:結論→切り分け→次の一手、の順で書く。
- 手順は「まず最大3ステップ」まで提示し、続きはユーザーが実施結果を返してから出す。
- ユーザーが「詳しく」「手順全部」「原因も知りたい」と言った場合のみ詳細版を出す。
- 余談・背景説明・網羅解説はしない(求められた時だけ)。

# 進め方(不具合・テクニカルヘルプ時)
- 切り分けは対話で1ステップずつ進める。
- まず確認する質問は「最大2問」まで(多すぎる質問は禁止)。
- 取得したい情報があれば、コピペしやすい形で依頼する(例:エラー文、OS版、アプリ版、再現手順)。

# 回答フォーマット(固定)
次のテンプレに従う:

【結論】(1〜2行で結論)
【まず確認】(質問は最大2つ、箇条書き)
【次にやること】(手順は最大3ステップ、番号付き)
【補足】(必要最小限。context が無い/薄い場合はその旨を1行)
【出典】(引用元が明確な場合のみ「📚 出典: [ページタイトル] URL」)

# Slack運用ルール
- 丁寧語(です・ます調)。
- ユーザーのテンションに合わせて簡潔に。
- 5往復しても解決しない場合のみ、@xxxxx をメンションしてエスカレーション(事前予告は不要)。
- 特定ユーザーへのメンションはユーザーリストを参照し、<@ID>形式で行う。

# 直近の会話履歴
{{#xxx.thread_history#}}

# ユーザーリスト
{{#xxx.thread_users#}}
Screenshot

Phase 6:Slack App作成 (30分)

1. Slack App作成

  1. Slack API: Your Apps にアクセスします。
  2. Create New AppFrom scratch を選択します。
  3. アプリ名(例: Knowledge Bot)とワークスペースを選択して作成します。

2. OAuth & Permissions設定

  1. 左メニュー OAuth & Permissions をクリックします。
  2. Scopes セクションの Bot Token Scopes に以下を追加します
  • app_mentions:read (メンションを検知)
  • channels:history (チャンネル履歴参照)
  • chat:write (メッセージを送信)
  • groups:history (プライベートチャンネル履歴参照)
  • im:history (DM履歴参照)
  • reactions:read (リアクションを検知)
  • users:read (ユーザー情報取得)
  • groups:write
  • groups:read
  • files:read
  1. ページ上部の Install to Workspace をクリックしてインストールします。
  2. Bot User OAuth Token (xoxb-...) を情報管理シートに記録します。

3. Basic Information (参考情報)

  1. 左メニュー Basic Information をクリックします。
  2. App Credentials セクションの Signing Secret を表示できます。

Phase 7:Dify Slack統合 (10分)

💡 コード不要・スレッド返信対応!

Dify Marketplace の公式Slackプラグインを使用することで、コードを一切書かずにスレッド返信対応のSlack Botを構築できます。

https://github.com/solaoi/dify-plugin-slack-thread-bot/blob/v0.0.5/README.ja.md

1. Difyに Slack Thread Bot をインストールする

  1. Dify Cloudにログインし、左メニュー Plugins または Extensions をクリックします。
  2. Browse Marketplace をクリックします。
  3. 検索ボックスに Slack Thread Bot と入力して検索。
  1. Slack Thread Bot を見つけて Install ボタンをクリックします。
  2. インストールが完了するまで数秒待ちます。

2. Endpoint (エンドポイント) を作成

  1. インストールできたら、Slack Thread Bot をクリックして「エンドポイントの作成」画面に移動します。
  2. + ボタンをクリックし、Endpoint 作成画面で以下の設定項目を入力します
設定項目入力値説明
Endpoint Name社内ナレッジBot任意の識別名
Bot Tokenxoxb-xxxxx-xxxxxPhase 6で取得した Bot User OAuth Token
Allow Retry□ 無効 (推奨)Slackのリトライを無視する (デフォルト: false)
AppPhase 5で作成したアプリを選択App Selectorでアプリを選択
  1. Save または Create をクリックして保存します。
  2. 保存すると、POST Request URL (Webhook URL) が自動生成されます。

💡 生成されるURL形式の例:
https://xxxxxxxxxxx.ai-plugin.io/

  1. このURLをコピーして情報管理シートに記録します。

⚠️ 重要な注意点 (公式ドキュメント準拠)
• Bot Token の先頭が xoxb- で始まっていることを確認してください。
• 余分なスペースや改行が含まれていないことを確認してください。

Endpoint作成のポイント (公式仕様)
• 1つのプラグインで複数のEndpointを作成できます (チャンネルごとなど)
• 各Endpointは異なるDifyアプリに接続できます
• Endpoint名は後から変更可能です
App Selectorでアプリを選択すると、その時点でアプリ連携が完了します (追加作業不要)

3. Slack Event Subscriptions 設定

  1. Slack App設定画面 (https://api.slack.com/apps) に戻ります。
  2. 左メニューから Event Subscriptions をクリックします。
  3. 右上の Enable Events トグルを ON にします。
  4. Request URL 欄に、ステップ2でコピーした POST Request URL を貼り付けます。
  5. 貼り付けると自動的に検証が開始されます。数秒待つと:
    “Verified” (緑色のチェックマーク) が表示されれば成功!
  6. Subscribe to bot events セクションに以下のイベントを追加します
  • app_mention (app_mentions:read)
  • message.im (im:history)
  • reaction_added (reactions:read)
  • message.groups (groups:history)
  • message.channels (channels:history)
  1. ページ下部の Save Changes ボタンを必ずクリックしてください!
  2. “Your app’s configuration has changed” という警告が表示された場合:
    Reinstall your app リンクをクリックするか、
    左メニュー Install AppReinstall to Workspace をクリックします。

URL検証が成功したら:
• “Verified” の横に緑色のチェックマークが表示されます
• Event Subscriptions が正常に動作しています
• SlackからDify プラグインへイベントが送信されるようになります

⚠️ URL検証が失敗する場合:

  1. POST Request URLが正しくコピーされているか確認 (余分なスペースなし)
  2. Dify Cloud → Plugins → Slack Thread Bot で Endpoint が正しく作成されているか確認
  3. Bot Token が正しく入力されているか確認
  4. Dify Cloud のプランが Professional ($59/月) であることを確認
  5. 数分待ってから再度 “Retry” ボタンをクリック

4. アプリ連携の確認

  1. Dify Cloud → PluginsSlack Thread Bot で作成したEndpointを確認します。
  2. Endpoint詳細画面で「App」欄に正しいアプリ名が表示されていることを確認します。
  3. Phase 5で作成したアプリがPublished (公開済み)であることを確認します:
    Dify Studio → 社内ナレッジBot → 右上に「公開済み」バッジが表示されていればOK

⚠️ アプリが未公開の場合:
Dify Studio → 社内ナレッジBot → 右上の Publish ボタンをクリックして公開してください。
公開しないと、Pluginからアプリを呼び出せません。

5. 動作テスト (段階的確認)

ステップ1: Botをチャンネルに招待

  1. Slackで動作テスト用のチャンネルを開きます (例: #bot-test)
  2. チャンネルで以下のコマンドを実行します:
/invite @Knowledge Bot
  1. “Knowledge Bot がチャンネルに参加しました” と表示されればOKです。

ステップ2: メンションでテスト

  1. チャンネルでBotにメンションして質問します:
@Knowledge Bot テスト
  1. 期待される動作:
  • メッセージに 🤔 (考え中) のリアクションが付く
  • 元のメッセージのスレッド内に回答が投稿される
  • リアクションが ✅ (完了) に変わる

ステップ3: 実際の質問でテスト

  1. Notionに登録されている内容について質問します
@Knowledge Bot 経費精算の方法を教えてください
  1. 期待される動作
  • スレッド内に具体的な回答が投稿される

全て成功したら構築完了です! 🎉
• スレッド返信が動作している
• Notionのナレッジを参照して回答している
• 出典情報が表示されている
→ Phase 8の統合テストに進んでください!

⚠️ トラブルシューティング (よくある問題)

1. Botが反応しない場合:
• Event Subscriptions の URL が Verified になっているか確認
• Slack App を再インストール (Install App → Reinstall to Workspace)
• Slack Thread Bot の Endpoint URL が正しいか再確認

2. スレッド返信されず、チャンネルに直接投稿される場合:
• Slack Thread Bot の設定で “Reply in thread” が有効になっているか確認!
• 設定を変更したら Save をクリックして再度テスト

3. “回答できません” と表示される場合:
• Dify Chatbot が Publish されているか確認
• Gemini API Key が正しく設定されているか確認 (Dify Settings → Model Provider)
• Notionナレッジベースが同期されているか確認 (Dify Knowledge)

4. エラーメッセージが表示される場合:
• Dify Cloud → Plugins → Slack Thread Bot → Logs でエラーログを確認
• Slack App → Event Subscriptions → Recent Deliveries でリクエスト履歴を確認

Slack Thread Bot プラグイン版のメリット
• コード一切不要、設定だけで完結 (10分で完成!)
スレッド返信完全対応 🎉
• リトライ制御機能でSlackの重複送信を自動防止
• 詳細なエラーハンドリングとログ機能
• Difyが全ての処理を担当 (署名検証、セキュリティ含む)
• プラグインの自動アップデート対応
• デバッグ不要、動作が保証されている
• 日本人開発者による手厚いサポート

⚠️ 注意事項
• Dify Cloudの有料プラン (Professional: $59/月) が必要です
• 無料プラン (Sandbox) ではプラグインが使用できません
• カスタマイズは限定的 (プラグインの仕様に依存)

Phase 8:統合テスト (30分)

1. 基本動作確認チェックリスト

  • SlackチャンネルにBotを招待する (/invite @Knowledge Bot)
  • Botにメンションして質問する(ナレッジにある内容) → 回答と出典が返ってくるか
  • BotにDMを送る → スレッドで返信が来るか

2. トラブルシューティングガイド

現象考えられる原因対処法
SlackでBotが無反応Event URLの未設定 / Slack Thread Bot設定エラー1) Event Subscriptions の URL が Verified か確認
2) Slack Thread Bot の Logs を確認
3) Slack App を再インストール
“dispatch_failed” エラーEndpoint URL検証失敗1) Slack Thread Bot の Endpoint URL をコピー
2) Event Subscriptions で Retry をクリック
3) Bot Token を再確認 (※Signing Secretは不要)
スレッド返信されないSlack Thread Botのコード実装の問題Slack Thread Bot プラグインはスレッド返信がデフォルトで実装されています。返信されない場合は Endpoint を再作成してテストしてください
Difyからの回答が空またはエラーChatbot連携ミス / API Key間違い1) Dify Chatbot を Publish
2) Slack Thread Botとアプリの連携を確認
3) Gemini API Key を再確認
「Authorization failed」エラーSLACK_BOT_TOKEN が間違っているPhase 6 で取得した Bot Token (xoxb-) を再入力
プラグインがインストールできない無料プラン (Sandbox) を使用Professional プラン ($59/月) にアップグレード必須
リトライエラー (重複回答)Slackのリトライ処理が発動Endpoint 作成画面でAllow Retry を無効 (false) に設定

💡 Slack Thread Bot のデバッグ方法

1. Dify側のログ確認:
  Dify Cloud → Plugins → Slack Thread Bot → Logs タブ
  → リクエスト履歴、エラー内容、レスポンス時間を確認

2. Slack側のログ確認:
  Slack App → Event Subscriptions → Recent Deliveries
  → 送信されたイベント、HTTPステータスコード、レスポンスを確認

3. よくあるログ出力例:
  ✅ “200 OK” – 正常動作
  ❌ “401 Unauthorized” – Bot Token が間違っている (※Signing Secretは不要)
  ❌ “404 Not Found” – Endpoint URL が間違っている
  ❌ “500 Internal Server Error” – Dify Chatbot または Gemini API のエラー

4. テスト送信:
  Slack App → Event Subscriptions → Retry ボタン
  → 最後に失敗したイベントを再送信してテスト可能

Phase 9:本番運用設定 (30分)

運用最適化チェックリスト

  • モニタリング: Dify Cloud → Plugins → Slack Thread Bot → Logs でエラーログを定期的に確認する。
  • Notion同期: Difyのナレッジ設定でNotionのページを同期。
  • プロンプト改善: ユーザーからの質問で「回答不能」だったものを分析し、DifyのシステムプロンプトやNotion側のドキュメントを修正する。
  • コスト管理: Dify Cloudの使用状況とGoogle AI Studio (Gemini API) の無料枠消費状況を月次でチェックする。

番外編:想定コストについて

💰 想定コスト内訳 (月額)

合計: 約 ¥8,500 / 月 (Dify Plugin版は追加コスト¥0!) 🎉

サービスプラン月額料金
Google AI Studio (Gemini)無料枠内¥0
Notion既存プラン¥0 (追加なし)
Slack既存プラン¥0 (追加なし)
Dify CloudProfessional$59 (≈¥8,500)
Slack Thread Bot プラグインDify料金に含む¥0 (追加なし)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次