MENU

Dify×Notion連携!日報フィードバック自動化ツールの作り方

当ページのリンクには広告が含まれています。

「毎日の日報を書いても、振り返りがおろそかになってしまう…」
「自分の行動に対して、客観的なフィードバックが欲しい」

個人の成長において「目標・行動・振り返り・改善」のサイクルは不可欠ですが、自分一人で客観的な振り返りを行うのは難しいものです。

そこで今回は、Difyを活用して、入力した日報に対してAIが自動でフィードバックを行い、その結果をNotionに蓄積するアプリを作成しました。

目次

作成するアプリの概要

このアプリは以下のワークフローで動作します。

  1. Difyのチャット画面で日報を入力する。
  2. AIが内容を分析し、フィードバックと合否判定(例:学習時間が2時間以上か)を行う。
  3. 結果を自動的にNotionのデータベースに保存する。

これにより、日々の行動記録とAIコーチングが自動化され、成長のための土台を築くことができます。

STEP 1:Notionの準備

まずはデータの保存先となるNotion側の設定を行います。

このアプリにおけるNotionに到達するまでの流れとしては、以下です。
Difyに日報送信 → Dify上でAIがフィードバックコメント作成 → DifyからNotionに送信

1. データベースの作成

新規ページにデータベースを作成し、以下のプロパティを用意します。

  • Date(日付): 日報の日付
  • Judgement(テキスト): 合否判定(例:合格/不合格)
  • Feedback(テキスト): AIからのアドバイス
Notionデータベース構成

合否判定は、その日の中で自己研鑽できたかを評価してもらいます。具体的な方が良さそうなので、ここでは「ブログ作成時間が2時間以上あったか」を基準とします。

※PoCなので、ひとまずこれで進めることにしました。
データが足りなかったり粒度が荒すぎたりした場合は後々修正しようと思います。

2. Notion API連携(インテグレーション)の設定

DifyからNotionを操作するために、APIキーを取得します。

Notion Integrationとは…
外部ツール(Dify, Jira, Google Drive, Slackなど)をNotionに接続してワークフローを構築・強化できるようになる、というもの

  1. Notion My Integrationsにアクセスし、「新しいインテグレーション」を作成します。
  2. 種類は「内部(Internal)」を選択し、発行された「内部インテグレーションシークレット」をコピーします。
  3. 作成したデータベースのページに戻り、右上の「…」メニューから「接続先」を選び、作成したインテグレーションを追加して権限を付与します。

Notion My Integrationsにアクセス

Notion My Integrationsにアクセスします。

image.png

「内部インテグレーションシークレット」をコピー

インテグレーションの設定を開き、「内部インテグレーションシークレット」をコピーします。
→コピーする際は「表示」をクリックすることで、「コピー」の選択肢が出てきます。

image.png


image.png

Notionに戻って、データベースの設定を行う

  • 作成したデータベースページを開く
  • 右上の3点メニューの中にある「接続先」を開く
  • 先ほど作成したインテグレーションを選択する
image.png


NotionデータベースIDを取得する

先程同様に3点メニューを開き、今度は「リンク/をコピー」を選択します。
→すると、 https://notion.so/XXXXXXXX?v

この、XXXXXXXXを控えておく

STEP 2:Difyワークフローの構築

次に、Dify側で処理の流れを作ります。「最初から作成」→「ワークフロー」を選択し、以下のノードを配置していきます。

Difyワークフロー全体図

1. LLMノード(フィードバック生成)

入力された日報を受け取り、フィードバックと判定を行うAIです。

プロンプトでは、JSON形式での出力を指示することが重要です。これにより、後続の処理でデータを扱いやすくなります。

あなたはエンジニア育成コーチです。以下の日報を評価し、JSON形式で出力してください。 { "judgement": "合格" または "不合格", "feedback": "具体的なアドバイス..." }

2. コードノード&テンプレート変換

LLMが出力したJSONを解析し、Notion APIに送信するためのフォーマット(JSONボディ)を作成します。

Difyの変数を埋め込む際は、{{ }} を使用します。

template.json

{
  "parent": { "database_id": "{{ db_id }}" },
  "properties": {
    "Date": {
      "title": [
        {
          "text": {
            "content": "{{ time }}"
          }
        }
      ]
    },
    "judgement": {
      "rich_text": [
        {
          "text": {
            "content": "{{ judgement }}"
          }
        }
      ]
    },
    "feedback": {
      "rich_text": [
        {
          "text": {
            "content": "{{ feedback }}"
          }
        }
      ]
    }
  }
}

3. LLMノードその2

ここLLM2の役割としては、HTTPリクエストボディにある文字列をエスケープ処理することです。

なぜこのようにしているかというと、テンプレートで整形したフォーマットをそのままHTTPリクエストに渡すと、エラーが出たためです。

一部だけお見せするとこんな感じです。


image.png

4. HTTPリクエストノード(Notionへの送信)

次に、Notion APIを叩いてデータを保存します。

ここで指定したURLは、Notion APIでデータを保存する際に使用するAPIです。
また、認証APIキーには、環境変数として設定したNotionインテグレーションのシークレットキーを指定しています。

  • URL: https://api.notion.com/v1/pages
  • Method: POST
  • Headers:
    • Authorization: Bearer {シークレットキー}
    • Notion-Version: 2022-06-28
    • Content-Type: application/json

5. 簡単なエラーハンドリング

最後はステータスコードを確認して、OKかそうじゃないかを確認しています。
エラーだった場合はリクエストのbodyが返されます。

使用した環境変数

設定した環境変数について簡単にご紹介します。

変数名タイプ
NOTION_VERSION2022-06-28String
NOTION_DATABASE_ID※<データベースID>Secret
NOTION_INTEGRATION_SECRET_KEY<シークレットキー>Secret
ENDNotionへの登録が完了しました!String

開発のポイントと注意点

NotionデータベースIDの罠

NotionのデータベースIDについては、設定する際にハイフンで区切る必要があります。

NotionのデータベースURLに含まれるIDは32桁の英数字ですが、APIで指定する際はハイフン付きのUUID形式(8-4-4-4-12桁)にする必要があるケースがあります。もし「400 Bad Request」エラーが出る場合は、IDのフォーマットを確認してみてください。

JSONエスケープ処理

フィードバック本文に改行や特殊文字が含まれていると、JSONの構造が崩れてエラーになることがあります。

その場合、送信直前にもう一度LLMノードを挟み、「このテキストをJSON文字列として安全な形式にエスケープして」と指示すると安定して動作します。

まとめ

Difyを使えば、自分専用の「AIコーチ」をノーコードで作成し、Notionと連携させて成長記録を自動化できます。

構築には少し試行錯誤が必要ですが、一度作ってしまえば毎日の習慣化を強力にサポートしてくれるはずです。ぜひ挑戦してみてください。

【推奨】業務システム化に有効なアイテム

生成AIを学ぶ

システム化のパートナー

VPSサーバの選定

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次