公開日:

セルフホストしたDifyとNotionを接続する方法

Authors
  • author image
    Name
    代表取締役 宮永邦彦
    Twitter
    @miyanaga
  • 画像軽量化とWebフロントエンドのスピード改善の専門家です。Web系のIT技術大好き。

    このサイトではスピード改善のリアルや、日々の技術的な気づきを共有します。

セルフホストしたDifyからNotionに接続するには少し工夫が必要だった。

Difyのセルフホスティングについては、手順をまとめた記事を参照のこと。

その内容に沿って接続の手順を解説する。


Notion側の操作

Notion側では、コネクトを作成して、次の情報を取得する。

  • インテグレーションID
  • 内部インテグレーションシークレット

まずはワークスペースの設定を開き、コネクトメニューからインテグレーションを作成または管理するを選択する。

Notionの統合アプリ一覧

別タブにインテグレーションの管理画面が表示される。ここで新しいインテグレーションをクリックする。

新しいインテグレーション

任意のインテグレーション名を入力し、関連ワークスペースを選択して保存ボタンを押す。

わかりにくいが、インテグレーション名を追加と表示される部分はテキストフィールドになっている。種類は内部のままでよい。

Diffyへの接続

続いてインテグレーションの設定画面に進む。

まずここで内部インテグレーションシークレットを表示し、内容を控えておく。

ディフィーへの接続

続いてページの下部に機能セクションがある。コンテンツを読み取るは必須だが、コメントやユーザー情報については、それらもナレッジに必要かどうかで判断されたい。

設定画面の保存ボタン

最後に保存ボタンを押す。

インテグレーションIDの取得

イングレーションIDは画面上を探しても見当たらなかった。

ブラウザのアドレスバーから/internal/に続くUUIDがインテグレーションIDなので、これも控えておく。

Diffyへの接続

Difyに共有するドキュメントを指定

Difyに共有するドキュメントは、Notion側でも明示的に指定する必要がある。

ドキュメントの右上のアイコンからメニューを開き、コネクト - 接続先 - 作成したDifyへのインテグレーションを選択する。

Diffyへの接続

Dify側の操作

Dify側に先ほど取得したインテグレーションの情報を設定していく。

これは環境変数で行う。docker/.envファイルを開き、次の項目を変更する。

bash
NOTION_INTEGRATION_TYPE=internal # publicではなくinternalを指定
NOTION_CLIENT_SECRET= # 空欄のままでよい
NOTION_CLIENT_ID=インテグレーションID # あなたの環境における値
NOTION_INTERNAL_SECRET=内部インテグレーションシークレット # あなたの環境における値

そしてDifyを再起動する。

bash
docker compose --profile certbot down
docker compose --profile certbot up -d

これでDifyのナレッジ作成時に、Notionからの同期を利用できるようになった。

Notion側でDifyに接続したドキュメントを選択できる。

Notionからデータを取得する画面

再同期

Notion側の更新だが、自動でDifyに反映されるわけではなさそうだ。

同期の方法のひとつは、ナレッジのドキュメント一覧から、アクションメニューを開き同期を選択する方法だ。

ファイル一覧の画面

もうひとつは、設定ポップアップのデータソース - ノーションからメニューを開き、同期を選ぶ方法だ。

データベースの設定画面

ナレッジを同期するAPIも見当たらなかった。当面は手動で行うほかなさそうである。

代替案

Notionのインテグレーションには、一般的なOAuthクライアントを作成する方法もある。

クラウド版のDifyはそちらを採用している。

インテグレーションの種類として公開(public)を選択すればその方法で進められると思われるが、設定項目が多い。内部インテグレーションとして接続する方が楽であった。