- 公開日:
セルフホストしたDifyとNotionを接続する方法
- Authors
- Name
セルフホストしたDifyからNotionに接続するには少し工夫が必要だった。
Difyのセルフホスティングについては、手順をまとめた記事を参照のこと。
その内容に沿って接続の手順を解説する。
Notion側の操作
Notion側では、コネクトを作成して、次の情報を取得する。
- インテグレーションID
- 内部インテグレーションシークレット
まずはワークスペースの設定を開き、コネクトメニューからインテグレーションを作成または管理するを選択する。

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

任意のインテグレーション名を入力し、関連ワークスペースを選択して保存ボタンを押す。
わかりにくいが、インテグレーション名を追加と表示される部分はテキストフィールドになっている。種類は内部のままでよい。

続いてインテグレーションの設定画面に進む。
まずここで内部インテグレーションシークレットを表示し、内容を控えておく。

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

最後に保存ボタンを押す。
インテグレーションIDの取得
イングレーションIDは画面上を探しても見当たらなかった。
ブラウザのアドレスバーから/internal/に続くUUIDがインテグレーションIDなので、これも控えておく。

Difyに共有するドキュメントを指定
Difyに共有するドキュメントは、Notion側でも明示的に指定する必要がある。
ドキュメントの右上のアイコンからメニューを開き、コネクト - 接続先 - 作成したDifyへのインテグレーションを選択する。

Dify側の操作
Dify側に先ほど取得したインテグレーションの情報を設定していく。
これは環境変数で行う。docker/.envファイルを開き、次の項目を変更する。
NOTION_INTEGRATION_TYPE=internal # publicではなくinternalを指定
NOTION_CLIENT_SECRET= # 空欄のままでよい
NOTION_CLIENT_ID=インテグレーションID # あなたの環境における値
NOTION_INTERNAL_SECRET=内部インテグレーションシークレット # あなたの環境における値そしてDifyを再起動する。
docker compose --profile certbot down
docker compose --profile certbot up -dこれでDifyのナレッジ作成時に、Notionからの同期を利用できるようになった。
Notion側でDifyに接続したドキュメントを選択できる。

再同期
Notion側の更新だが、自動でDifyに反映されるわけではなさそうだ。
同期の方法のひとつは、ナレッジのドキュメント一覧から、アクションメニューを開き同期を選択する方法だ。

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

ナレッジを同期するAPIも見当たらなかった。当面は手動で行うほかなさそうである。
代替案
Notionのインテグレーションには、一般的なOAuthクライアントを作成する方法もある。
クラウド版のDifyはそちらを採用している。
インテグレーションの種類として公開(public)を選択すればその方法で進められると思われるが、設定項目が多い。内部インテグレーションとして接続する方が楽であった。