サクッと構築!Notion × Difyで社内マニュアルが「検索も更新も」チャットで完結した
はじめに
当社では社内マニュアルを全て Notion で管理しており、各部署の業務手順や規定が数多く蓄積されています。情報量は充実していますが、次のような課題がありました。
- 情報が分散しており、「どのページに書いてあったっけ...」と探すのに時間がかかる
- 古い情報を見つけても、修正が面倒で「後で直しておこう」と放置されがち
そのため、探しやすく、メンテナンスしやすい情報共有の仕組みを作れないかという依頼が他部署から届きました。
本記事では、以下を実現するためのワークフローを具体的に説明します。
なぜ Dify なのか
当初は NotebookLM を使ってマニュアルを読み込ませたRAGを試してみましたが、マニュアルが更新されるたびにページを再アップロードする作業が面倒でした。
一方で、Dify × Notion の組み合わせでは、以下のメリットがあります。
- ブラウザで完結し、他ツールのインストールが不要
- Notion データを1クリックで同期、常に最新情報を反映
- チャットから「~を修正して」と指示するだけで原文を更新できる
- ドラッグ&ドロップで誰でもワークフローを改善できる
これにより、非エンジニアでも実際に使いながら改善できる仕組みが作れ、より多くの部署で積極的に活用してもらえると考えました。
DifyのNotionプラグインが4月にリリース
2025年4月に、Dify Marketplace に Notion Plugin がリリースされました。このプラグインにより、以下の機能が簡単に利用できるようになりました。
- 検索系操作: ワークスペース全体の検索、データベースのクエリ機能
- 読み取り操作: ページ・データベース内容の取得、コメントの読み取り
- 書き込み操作: ページ内容の更新、新規ページ・データベース作成
チャットで得た回答に対して「ここを更新して」と指示することで、元のNotionページに変更が反映されます。これにより、マニュアルを調べて、内容を読み、必要があれば修正するという一連の流れが、チャット上の会話で完結するようになりました。
使い方
Notionを使ったチャットボットを実際に構築する手順を説明します。大きく分けて「プラグインの設定」と「ナレッジベースの作成」の2つのステップがあります。
1. Notionプラグインの設定
1-1. Notion側でインテグレーションを設定
Dify と Notion を連携させるには、まず Notion 側で「インテグレーション」を作成し、接続用のAPIキーを取得します。
- Notion Developers ページにアクセス
- 「+ New integration」をクリック
- 名前(例: Dify用インテグレーション)とワークスペースを選択して作成
- 作成後に表示される「内部インテグレーションシークレット(APIキー)」をコピー
- Notionページの 接続 >「作成したインテグレーション名」を選択
1-2. Dify で Notion プラグインをセットアップ
- Dify の Marketplace から Notion Plugin をインストール
- 先ほどコピーしたインテグレーションシークレットを設定画面に貼り付け
1-3. チャットフローでNotionのノードを作成
- Difyの管理画面からチャットフローを作成
- ブロックを追加 > Notion > 任意の項目を選択
2. Notionナレッジベースの作成
2-1. Notionドキュメントの接続
- 「ナレッジ」→「ナレッジを作成」をクリック
- 「Notionから同期」を選択(記事ではデモ用に会社の採用資料をNotionにコピーしたものを使用)
- 連携したいNotionページを選択 > 「次へ」をクリック
2-2. ナレッジベースの設定
今回は以下の設定にしました
- Difyのナレッジ画面で「Notionから同期」を選択
- ナレッジ化したいNotionページにチェックを入れて「次へ」
- チャンク設定:
- 「親子」を選択
- 親チャンク: 段落(独立した段落ごとに分割する場合に使用)
- 子チャンク: 500トークン
- インデックス方法: 高品質
- 埋め込みモデル: ChatGPT
text-embedding-3-large
を使用 - 検索設定: ハイブリッド検索
- トップK: 取得するドキュメント数(今回は3に設定)
- スコア閾値: デフォルト設定
- ウェイト設定: デフォルト設定
2-3. Notionが更新された場合
ナレッジベース画面の「同期」ボタンをクリックするだけで、変更されたNotionの内容が自動的に反映されます。
構築したワークフローの全体像
ユーザー質問
│
▼
① Notion ナレッジベース
│ ────────── マニュアルの該当チャンクを取得
▼
② LLM で回答生成
│ ──── 回答テキスト
│ └─── 修正指示があれば JSON テキスト生成
▼
③ コード
│ ── 修正内容を解読
│ has_edit = true / false を出力
▼
④ IF → ELSE 分岐
├─ false:そのままナレッジベースからの回答を返す
│
└─ true:修正フローへ
│
▼
⑤ Notion を検索
│ ── ページIDを取得(データ更新に必要)
▼
⑥ コード
│ ── URL→ページID 抽出
▼
⑦ Notion コメント or 更新
│ ── 指定ページにコメントを挿入(※今回はコメント追加)
▼
⑧ ユーザーに返信
実行結果
実際に構築したシステムを使って、どのように動作するのかを試してみました。今回はデモとして、会社の採用資料をナレッジベースとして活用しています。
※実際に今回使った資料の内容はこちらです。
通常の質問の場合
マニュアルに書かれている会社の制度について質問すると、読み込んだ資料の内容から正しい回答が返ってきます。また、参照元のページも表示されるのが便利ですね。
一方で、マニュアルに書かれていない質問に対しては、「わかりません」と回答してくれています。
変更を依頼した場合
変更を依頼した場合、内容を理解して、適切なページに追記してくれました。
実際にNotionのページに書き込まれます。ランチ代についての記載がある「会社紹介」のページに、コメントが更新されています。
コメント形式で追加してもらうと、後から見返した際も、チャット経由で編集した内容を把握できるので管理しやすくなります。実際に使ってみて、こちらの方が実用的だと感じました。
まとめ
今回は、Notion で作成された社内マニュアルを「見つけやすく」「更新しやすい」形に改善するため、Difyを使ってチャットボットを構築しました。
これから社内で活用してもらって、さらに使いやすいシステムを作り、業務の効率化を図っていきます。
最後までお読みいただき、ありがとうございました。
Discussion