DifyでNotionからナレッジ検索して、回答生成のチャットフローを作ってみたのでその手順をまとめました。
利用環境
利用環境は以下の通り。
- Dify: Sandboxプラン
- Notion: フリープラン(個人利用)
とりあえず試してみたかったので、いずれも無料かつ手軽に使えるものをチョイスしました。
事前準備
1. Notion インテグレーション
まずは、NotionをDifyと連携するために必要な事前準備をすませておきましょう。
(1) Notionインテグレーションの設定
使用するNotionアカウントにログインしたら、
https://www.notion.so/profile/integrations
を叩いて、「新しいインテグレーション」をクリックします。
以下の通り、設定し、「保存」(④)をクリック
| 項目名 | 設定内容 |
|---|---|
| インテグレーション名 | 任意のインテグレーション名を入力(①) |
| 関連ワークスペース | 連携したいワークスペースを選択(②) |
| 種類 | 「内部」を選択(デフォルトでそうなっているはず)(③) |
すると、以下のようなモーダルが出現するので、「インテグレーション設定」をクリックして設定に進みます。
| 項目名 | 設定内容 |
|---|---|
| 内部インテグレーションシークレット | 「表示」をクリックすると出現するキーをコピーして控えておく(①) |
| コンテンツ機能 | 「コンテンツを読み取る」にチェック(②) |
| ユーザー機能 | 「ユーザー情報なし」を選択(③) |
内部インテグレーションシークレットは、機密情報です。
取り扱いには十分注意しましょう。
今回、Notionの内容が読み取れれば良いので、コンテンツ機能、ユーザー機能の設定については上記で必要十分です。
(2) ナレッジ検索に使うページの接続
続いて、Notionと連携したいページの接続設定を実施します。
Difyと連携したいNotionページに移動して、ページ右上の三点リーダーをクリックし(①)、「接続」を選択したら(②)、作成したNotionインテグレーションを選択(③)。
本Notionページは、### が各セクション見出しとなります。
2. AIモデルのAPIキー取得(任意)
必要に応じて、使用するAIモデルのAPIキーを取得します。
今回はDifyのSandboxプランについている、無料のOpenAIクレジットを使用することにしたため、手順はスキップしますが、継続的に使う場合は必要になります。
- 課金の仕方
- APIキーの取得方法
- モデル別の料金
辺りはチェックしておくと良いでしょう。
Difyでの作業
1. サインアップ
Difyには、
https://cloud.dify.ai/signin
より、
- GitHub
- メールアドレス
のいずれかでサインアップできます。
お好みの方法でOKです。
2. モデルプロバイダーの設定
サインインしたら、まずは、モデルプロバイダーを設定します。
OpenAIモデルのインストール
画面右上のDアイコンをクリックし(①)、「設定」を選択します(②)。
左メニューにて、「モデルプロバイダー」をクリックし(①)、OpenAIにカーソルを合わせたら左下のインストールをクリック(②)
使用モデルの有効化
画面上部にOpenAIモデルが表示されるのでセットアップ右横の三点リーダーをクリックし(①)、クォータを選択します(②)。

使用するモデルを選択します。
「LLM/CHAT」と「TEXT EMBEDDING」のモデルをそれぞれ1つずつ選択します。
今回、
- gpt-4o-mini
- text-embedding-3-small
を選択しました。
3. データソースの設定
続いて、データソースの設定です。
今回、Notionを使用するのでその設定を行います。
Notionデータソースのインストール
「設定」にて、「データソース」(①)を選択し、「インストール」をクリック(②)

APIキーの追加
インストールが完了したら、Notion右端の「+設定」(①)をクリックし、「APIキーを追加してください」をクリック(②)

| 項目 | 入力値 |
|---|---|
| ①認証名 | 任意の名前 |
| ②統合シークレット | 事前準備で取得した「内部インテグレーションシークレット」 |
3. ナレッジベースの作成
続いて、ナレッジベースの作成します。
ダッシュボードに戻り、「ナレッジ」を選択し(①)、「ナレッジベースを作成」をクリック(②)。

「Notionから同期」を選択したら(①)、対象のNotionワークスペースを選択し(②)、ナレッジベースとしたいNotionページにチェックを入れて(③)、「次へ」をクリック(④)

ナレッジベースの設定を実施します。
チャンク識別子に以下の通り入力し(①)、チャンクをプレビューをクリックして(②)、見出し単位でチャンクされていることを確認したら(③)、「保存して処理」をクリック(④)
※他はデフォルトでOKです。
| 項目 | 入力値 | 備考 |
|---|---|---|
| ①チャンク識別子 | \n\n### | Notionの見出しを活用 |
なお、画面中央付近の「埋め込みモデル」にデフォルトで
text-embedding-3-small
が設定されています(⑤)。
このモデルはここで使われるというわけです。
4. チャットフローの作成
いよいよチャットフローの作成に入っていきます。
チャットフローの作成
まずは、チャットフローを作成します。
ダッシュボードにて、「スタジオ」(①)>「最初から作成」をクリック(②)

デフォルトで「チャットフロー」が選択されているはず(①)。
アプリのアイコンと名前(②)、説明(③)を任意に入力し、「作成する」をクリック(④)。
すると、以下のような画面に遷移します。
デフォルトノードを消す
デフォルトノード
- LLM
- 回答
は一旦消してしまいます。
各ノードをクリック、もしくは、ホバーすると右上に出現する三点リーダーをクリックし(①)、削除をクリック(②)。
知識検索
次に、「知識探索」ノードを追加します。
「開始」ノードをホバーすると右端に出現する「+」をクリックし(①)、「知識探索」をクリック(②)

画面右方に「知識検索」モーダルが出現するので、ナレッジベース欄右端の「+」をクリック(①)

「参照する知識を選択」モーダルが出現するので、作成したナレッジベースをクリックし(①)、「追加」をクリック(②)

LLM
続いて、「知識探索」ノードの後ろに「LLM」ノードを追加します。
まずは、以下の通り選択、入力しましょう。
| 項目 | 入力値 |
|---|---|
| ①コンテキスト | result |
| ②SYSTEM | 以下の通り入力 |
以下、SYSTEMの入力内容です。
ナレッジの情報をもとに回答してください。
{{#context#}}
回答が見つかったか/見つからなかったかで、以下の通り回答を分けてください。
### 回答が見つかった場合
回答を出力してください。
文章は、句点で改行してください。
手順については、各文の冒頭に採番もお願いします。
補足事項等は、手順から1行空けて回答してください。
補足事項等には、採番は不要です。
### 回答が見つからない場合
以下の文章を出力してください。
```
回答が見つかりませんでした。
お手数ですが、他の言い方で再度ご質問していただくか、以下のお問合せ先までご連絡ください。
総合フリーダイヤル: 0120-xx-xxxx
平日: 9:30-20:00
土日祝日: 9:30-17:30
```
### 補足事項
「回答が見つかった場合」、「回答が見つからない場合」という文言は、回答には含めないでください。
SYSTEM欄の下の「+メッセージを追加」があるのでクリックします。
USER欄が出現するので、{x}をクリック(①)して、sys.queryを選択(②)。
忘れがちな設定ですが、ユーザーの入力を正しく認識させるために必要なので、必ず設定するようにしましょう。
回答
最後のノード、「回答」ノードを作成します。
LLMノードの後ろに繋げる形で作成したら、{x}をクリック(①)して、textを選択(②)。
プレビュー
この時点で、以下のようなチャットフローになっているはずです。
プレビューで動作確認をします。
画面右上の「プレビュー」をクリックすると(①)、チャットのプレビューが出現するので、任意の文章を入力し(②)、送信ボタンをクリック(③)
想定通りの回答が返ってこればOKです。
会話の開始 メッセージの設定
任意ですが、会話の開始 メッセージを設定しておくと、ユーザーが何をすべきかがわかりやすくなります。
プレビューのモーダルの下部にある「管理」をクリック(①)。
「機能」モーダルが出現するので、一番上の「会話の開始」のトグルをONにし(①)、「オープナーを書く」をクリック(②)。
オープナーメッセージにチャット起動時に表示したいメッセージを入力し(①)、「保存」をクリック(②)
すると、以下のようにチャット起動時に初期メッセージが出るようになります。
何をすればいいかが、ひと目でわかっていいですね。
公開
作成したチャットを公開します。
画面右上の「公開する」をクリックし(①)、「更新を公開」をクリックしましょう(②)。
その後、「アプリを実行」をクリックすると(③)、公開されたチャットに遷移します。
公開状態では、URLさえ知っていれば誰でも使える状態になります。
むやみやたらに使用できないようにするため、使わない時は、無効にしておきましょう。
編集画面左上のチャットフローの名前付近をクリックすると、
公開状態の設定のモーダルが起動するので、公開URL欄右端のトグルをクリックして、無効にします。
この状態で公開URLを叩くと、以下のようなエラーが出てアクセスできなくなってます(安心ですね。
5. 他ツールとの連携
APIで他ツールと連携することも可能です。
APIキーの取得が必要なので、そのような使い方をする場合は取得しておきましょう。
APIシークレットキーの取得
左メニューの「APIアクセスをクリック」し(①)、画面右上の「APIキー」をクリック(②)
「APIシークレットキー」モーダルが出現するので、「新しいシークレットキーを作成」をクリック。

APIシークレットキーが表示されるので(①)、コピーして控えておきましょう(②)。

APIシークレットキーは、機密情報ですので、取り扱いには十分注意しましょう。
終わりに
ノーコード、ローコードでできて、ラクチンに違いない、と思いきや、
- Notionとの連携(インテグレーション設定に加え、個々のページで接続設定が必要と気づくのに時間がかかった
- ナレッジベースの作成でのチャンク識別子設定
- LLMノードのUSER欄の設定
あたりで、つまづいてめっちゃ時間がかかってしまった。。(先人の皆さまの記事に救われました。感謝、感謝です。
実用化するなら、
- クラウド版でまずはProffesionalプラン(59USD/月)から使ってみる
- セルフホストでCommunity版(利用料は無料)を使ってみる
のいずれかスタートで、利用状況に応じてアップグレードを検討するとかかなぁ。
あと、他ツールとの連携もやってみたので、近々記事にする予定です。
今回はここまで。
以下の2つの記事に分けてまとめました。
- n8nパート: Notion × Dify × n8n × Messaging APIでお問い合せ用のLINEチャットボットを作成する ~ n8nでワークフローを作成する ~
- LINE Messaging APIパート: Notion × Dify × n8n × LINE Messaging APIでお問い合せ用のLINEチャットボットを作成する ~ LINE Messaging APIでLINE公式アカウントからの問い合わせを可能にする ~
こちらもよろしければご覧ください。






























