![見出し画像](https://assets.st-note.com/production/uploads/images/150908471/rectangle_large_type_2_e5dce77553b8a7003f3e9d4ffa3c4add.png?width=1200)
「Dify × Notion連携」Difyの出力をNotionに保存するワークフローを作ってみよう! 〜最強のセカンドブレイン構築!〜
記事修正のご連絡・追記
みなさま記事のご購入ありがとうございます。
Dify Lab内でご報告をいただき「toNotion」ワークフローのDSLに編集ミスがあることが発覚しました。
8/17 24:40時点でリンク先のDSLを修正しております。
ファイル名がtoNotion_v3となっているので、すでに進めてくださっていた方は大変お手数ですがこちらをDLしていただき再度インポートいただければと思います。
お手数をおかけして申し訳ありませんでした。
Dify Cloud環境でエラーが発生する場合があるようです
自己ホスト環境と自分のDify Cloud Proの環境では問題なく動いているのですが動かない場合があるよう調査中です_ _
また投稿時に気づかなかったのですがDify Cloudの無料アカウントではこの記事の内容を実装することができません。
もしご購入済みで無料アカウントしかない場合はXのアカウントのDMを解放しておりますのでご連絡いただけますと幸いです。
Difyがアップデートを重ね、どんどん便利になっていきますね。
ありがたや。
今からDifyを始めて、機能が増えるのを楽しめるくらいにキャッチアップしていくのがおすすめです!
今回は、少し前にXで投稿して多くの反響をいただいた「DifyとNotionのAPI連携について」を解説していこうと思います!
※ 0.7.0のアプデがあった関係で急遽内容を一部書き換えました。
今回アップデートで追加されたConversation VariableとVariable Assignerを使用してチャットフローを構築し直しました。
やっとDifyとNotionのAPI連携がほしいクオリティでできた・・・
— ぶんかい@AIで遊ぶ人 (@bunkaich) July 19, 2024
最近Notionを活用するシーンがまた増え始めたため、Difyからの出力をNotionのページとして出力できるようにしてみました。
これ個人的には、見た目以上にかなりインパクトがある実装でして・・・… pic.twitter.com/bBDkKytI28
どんな内容?
上記、動画の動作を実現するための記事です。
Difyの出力をNotionの新規ページとして出力する方法を解説していきます。
今回の記事のポイントはLLMからのMarkdown出力を、そのままNotionのページにも反映している点です!
詳細は後述しますが、見出しやリスト、コードブロック、トグルなどに対応しています。
また、Notion API側の1リクエスト100ブロック制限にも対応しているので長文テキストだとしても出力が可能になっています。
(引用部分は補足なので読み飛ばしていただいて大丈夫です_ _!)
Markdown(マークダウン)って?
今回の記事のポイントでもあるのでちょこっと解説を。
LLMが生成する文章やnoteの記事って、見出しは大きく太く表示されていたり、強調したい部分は太字、この文章を書いてある引用ブロックは背景色がついていたりと、読みやすい装飾で表示されていますよね。
これがMarkdown記法の文章だと思ってもらえたら大丈夫かと。
何も装飾のないWindowsのメモ帳で書いたようなテキストはプレーンテキストと読んだりします。
LLMへの指示としても「Markdown記法で、」や「プレーンテキストで、」は知っていると指示のディティールが上がると思います。
Notionと連携したら何が良いの?
いろんな利点はあるんですが、
そもそもなぜこれを作ったかというと、LLMの有益なアウトプットを検索、編集、蓄積、共有したいと、思ったからです。
Notion自体が言わずもがな素晴らしすぎるサービスです。笑
LLMと対話して役に立った出力を、未来の自分のために再利用可能な知識として編集したり、蓄積する。
またDifyでは現状できない共有や検索もNotionとの連携で可能になります。
また詳細は別の記事にしようと思っていますが、おとよさんが開発されているN2Bやastro-notion-blogという素晴らしいものがありまして。
Notionのページをそのままブログとして公開することができます。
と、いうことは…今回の連携ができることでブログの自動更新の夢も見れるかもしれません。笑
今回の記事も無料と有料の二部構成にしました
前回のスライド自動生成の記事もですが、今回も無料部分と有料部分に分けて書くことにしました。
無料部分では、DifyとNotionの連携の仕組みとポイントを紹介します。
LLMを使いこなせてプログラミングにもチャレンジして見たい人に必要な情報がお届けできればと。これでできる方は今回の記事の内容は無料で手に入ることになります。笑
有料部分では、必要なDSLファイルを配布します。
解説通りに設定していただければ動画と同じものがご自身の環境でも使えるようになります。
その上で、Notionと連携しているスクリプトの解説や設定方法と、個人的に活用しているフローのDSLファイルも配布します。
では、記事の内容に入っていこうと思います!
Dify × Notion連携の仕組み
Notionは「API」を公開してくれており、これを使うことで今回の連携を実現しています。
エンジニアではない方には聞き慣れないかもですが、この「API」という仕組みがDifyととても相性が良いのです。
「API」ってなに?
ぼくのイメージで説明するので正確では表現があるかもですがあしからず。
すごい簡単に言ってしまうと、人がNotion等を操作する時の画面が「UI」で、プログラムからNotionを操作する時に使うのが「API」です。
プログラムからNotionなどのアプリを操作する時には、美しく使いやすい見た目は必要ないのです。
つまり、APIは「人」ではなく、「プログラム」からアプリを操作するのに最適化された仕組みなのです。
APIがあるアプリであれば、人が手で操作していることをプログラムから自動化できる可能性を秘めています。
例えば、
Xならプロフィールや投稿を取得したり、新しい投稿をするといった操作、
DiscordやSlack、LINEは、特定のメッセージをチャンネルに送信したり、
WordPressは、記事の投稿などがプログラムから自動化することができます。
Difyを活用するアイデアに困った時は、普段よく活用しているアプリやサービスが「API」を提供しているかを調べるのがおすすめです。
Difyから扱いやすいのは基本的にWebAPIという種類のAPIになります。
これが提供されているなら、Difyとそのツールを連携することができ、それがDifyを活用するアイデアの種になるのです。
APIを使ったNotion連携の考え方
まず「DifyとNotionの連携をしたい!」を実現するために、APIでそれが可能なのかを調べます。(これは連携したいもの違っても同じです。)
調べるといっても、もはやLLMが存在してくれている世界線なので、AIに聞くのが手っ取り早いです。
ただ注意点は、LLMが知りうる情報かはある程度考えておくと無駄足を踏まずにすみます。
例えばまだ登場して間もないAPIであったり、ユーザー数の少ないサービスでネット上の記事が少なかったりする場合、LLMはできると言ってコードを出力するのに、結果的にはできずにハルシネーションだったみたいなことが起こる可能性があります。
今回ご紹介するツールもClaudeやGemini、Cursorを多分に使って実装しております。
なので勘所さえわかって、チャレンジする気持ちさえあれば、同じように実装可能です!
実装の勘所
勘所をリストアップしていきます。
レイヤーがバラバラですがご自身で実装にチャレンジしてもらうために必要な内容を網羅したつもりです!
Dify側でNotion APIへ接続する選択肢として、コードブロックとHTTPリクエストブロックがある。
(ぼくはコードブロックを採用してPythonスクリプトで実装しました。)
LLMを駆使して、Notion APIへ「新規ページ作成・テキスト追加」するスクリプトを作成する。
「新規ページ作成・テキスト追加」するスクリプトをDifyで実際にテスト。まずはとにかく小さく実装して、テストして、成功するがポイント!
Notion APIと接続する場合、Notionのインテグレーションの設定が必要になる。
Notion側での「コネクトの設定」と、Dify側で「API Key」や「DB ID」の設定を忘れずに!
「新規ページ作成・テキスト追加」が成功したら、LLMが出力するマークダウン形式のテキストを追加できるようにLLMに指示してスクリプトを修正・テストする。
対応させたいマークダウンをテストをしながら追加していく。
リスト、数字リスト、コードブロック、テーブル、引用ブロック、リンクなどの表示に必要に応じて対応させていく。
Notion APIの制限で、一度に100ブロックまでの書き込み上限がある。
そのため必要であれば、100を超えたブロックを追加したい場合にも対応できるように実装を追加する。
もろもろ必要な機能がDifyから動作確認できたら、ワークフローをツールとして追加してDifyから汎用的に利用できるように最終調整。
まとめ
DifyとNotionをAPI連携するための勘所を中心にお話しさせていただきました。
技術やプログラミングへの理解がないと難しく感じる部分もあると思いますが、今回のテーマで、AIを使ったプログラミングにもチャレンジしていただくきっかけになればとも思っています。
学ぶ上で困ったらAIに聞けことは本当に革命的です。
ぜひご自身でもチャレンジしていただけたら嬉しいです!
と、言いつつ、
有料部分ではさくっと実装できるようにDSLファイルも配布し、解説をしています。
まず自分の環境で動かしてみて学びたいという方は、こちらもご検討いただければと思います^^
また、Dify Labというオープンチャットコミュニティを運営しています。
現在500人近い方が参加してくださっており、DifyやAIについてさまざま議論できるコミュニティです!
もしご興味あればぜひご参加ください^^
有料記事の注意事項
有料部分で紹介しているチャットフローにはDify 0.7.0以降のバージョンが必要です。
→ 0.7.0から追加されたConversation VariableとVariable Assignerブロックを使用した内容となっています。想定できていないエラーが発生する場合がございます。
→ 想定しきれていなかった利用によってエラーが発生する場合がございます。自分でも利用しているの続けて記事アップデートを行う予定ですが、完全な動作を保証するものではないことをご理解の上ご購入ください。
またエラー等ありましたらXのDMにてご連絡いただけますと対応できるかもしれません。記事のご返金は不可となっております。
→ 記事のご購入は自己責任とさせていただいております。期待と違った等あった場合もご返金ができないことご了承の上ご購入ください_ _Dify Cloudの無料アカウントではこの記事の内容を実装することができません。
→ ご自身のDify環境がCloudの無料アカウントのみの場合はご購入をいただかないようにお願いいたします。
有料部分のもくじ
Dify×NotionのメインDSLファイル・解説
チャットフロー型ナレッジ開発DSL・解説
→ Dify 0.7.0で実装されたConversation VariableとVariable Assignerを使用して実装しています。toNotionを使いこなすために
「賢者たちとの対話」ワークフロー(後日追加予定)
→ 現在試験中、近日中にコンテンツに追加予定です。
そのタイミングで価格改定を行う可能性があります_ _
有料部分では、一発出力を行う基本のワークフローと、LLMと双方向のやり取りをして最終的な出力をNotionにナレッジとして書き込むためのチャットフローを公開・解説していきます。
Dify×Notionの機能は以下の通りです。
マークダウンテキストをNotionブロックに変換
Notion APIへのデータ送信
様々なマークダウン記法のサポート:
- 見出し: #, ##, ### を使用した見出し
- 段落: テキストブロック
- リスト: 番号付きリストと箇条書きリスト
- 引用: > を使用した引用ブロック
- コードブロック: ``` で囲まれたコードブロック
- テーブル: | で区切られたテーブル
- トグル: <details> と <summary> を使用
- インラインスタイル: 太字、斜体、取り消し線、コード、リンクコードブロックのシンタックスハイライト
Notion APIの100ブロック制限を回避
「賢者たちとの対話」ワークフローは、現在実験中のちょっとおもしろいかもしれないワークフローです。笑
アイデアの種を入力すると、そのアイデアに相応しい複数の賢者を召喚して意見を生成し、アイデアの種をより良いものにするためのレポートをNotionに保存しておいてくれます。
ただ現状、試験中で、もしかしたら追加されないかもしれないことご容赦ください。(すでに動く状態で大方できていますが役にたつレベルにチューニング中なのです・・・)
Dify自体かなり便利すぎるツールですが、Notionの便利さも掛け合わせて最高のAI環境を構築していきましょう!!
ここからは、有料部分となります。
ここから先は
この記事が気に入ったらサポートをしてみませんか?