見出し画像

Dify上のやりとりをNotionと連携してアウトプットする方法

割引あり

Dify上でのやりとりは、Dify上では保存されています。
しかし、毎回Difyのアプリを開いたり、ノートアプリに転記するのがめんどくさかったりしませんか?
今回はNotionへのアウトプット方法をご紹介します。


なぜNotionにアウトプットするのか

Notionは既に多くの起業のデータベースや個人のKnowledge managementツールとして活用されていると思います。
特に、NotionはNotion AIの実装によって、検索能力やアイデア出しが可能となっています。
この状況から私はすべての情報をSecond Brainとして自分のNotionに保存しておきたいと考えています。
私の情報の流れは下記の通り

課題

DifyのやりとりをNotionにアウトプットする際につまずくポイント

  1. NotionとDifyの連携

  2. HTTP requestの書き方

  3. 時々生じるHTTP requestのエラー

だと思います。

この記事で可能になること

このようにYoutubeを英語学習教材として使用し、その結果をNotionで残しておくことができます。

Notionとの連携について

Notionとの連携方法については以前の私の記事を参照してください。

Notionへのアウトプットの2つの方法

以下からは、上記でNotionとの連携が可能になり、DifyでのChatflowまたはWorkflowを実行するとNotion上に何かしらのデータがうまく移行されたことを前提とします。

Notionへアウトプットする際には2つのモチベーションがあると思います。

1, 既存のページにLLMとのやり取りを残しておきたい

このようにページのコンテンツ欄に追加したい

2, 既存のデータベース上にプロパティ込で新たにページを作成したい

プロパティをDify上で作成して、新規作成したい

既存のページにコンテンツを追加する方法

NotionへのアウトプットはHTTP requestを使用することになります。

methodで【PATCH】を選択することがポイント
<JSON>
{
  "children":[
  {
    "object": "block",
    "type": "paragraph",
    "paragraph":{
      "rich_text": [ { "type": "text", "text": { "content": "{TALK with LLM}" } }]
    }
    }
  ]
}

JSONコードとして、このように規定して{TALK with LLM}の部分に変数を指定しましょう。これで、{TALK with LLM}のテキストがNotion上に登録されます。

既存のNotionのpageのIDを下記の要領で抽出しています。

  1. Start blockでNotion PageのURLの入力

  2. code blockでNotion PageのURLからPage IDを抽出する

  3. HTTP requestでPage IDを指定

Notion Page IDは例えば下記の場合

Notion Pageを開いた特のURLまたは共有リンク

「c12~~ofb5」までがIDとなります。

既存のデータベース上に新規のページを追加する方法

次に上述の単語帳を自動で作成するような場合は下記のようなHTTP requestを使用します。

この場合はmethodが【POST】であることがポイント
<JSON>

{
  "parent": { "database_id": "{YOUR_DATABASE_ID}" },
  "properties": {
    "title": {
      "title": [
        { "text": { "content": "{word}" } }
      ]
    },
    "meaning": {
      "rich_text": [
        { "text": { "content": "{meaning}" } }
      ]
    },
    "example": {
      "rich_text": [
        { "text": { "content": "{example}" } }
      ]
    },
    "pronunciation": {
      "rich_text": [
        { "text": { "content": "{pronunciation}" } }
      ]
    },
    "URL": {
      "type": "url",
      "url": "{YOUTUBE URL}"
    }
  }
}

上記の{word}部分が変数となりますので、""は必須となることにご注意ください。
また、注意点としてはNotionのdatabaseのプロパティをJSON形式と齟齬が無いように設定してください。
私は、上記のテキスト・URL以外に、セレクトもうまくいくことを確認しています。
更に、Notion上にあるすべてのプロパティを指定しなければならない、というわけではなく、今回の場合、ステータスを未設定ですが、勝手にデフォルトステータスで登録されます。
Notion databaseのIDは

「b7b~~10c4」までとなります。
この使い方の場合は、Notionのdatabaseを一番上の階層に置いておくようにしてください。

HTTP request エラーの対処法

私が経験したエラーば下記のようなことでした

  • methodのPOSTとPATCHが間違えている

    • 上記を参考に適切に設定してください

  • JSON部分で{}, []の数を間違えている

    • Cursorなどにコピペして見ると、数が足らなかったらエラーがでるので、下書きをする

  • JSON部分でテキストがJSON形式ではなかった

    • HTTP requestにいく前にJSON形式に変換するcode blockを置く

  • Dify側のAPI keyの設定忘れ、Notion側のpageのコネクト忘れ

  • HTTP requestが2000文字までなので、それを超えたためのエラー

    • 分割してiterationを回して登録する

ここから先は

5,292字 / 13画像 / 2ファイル

この記事が気に入ったらサポートをしてみませんか?