トレーニング記録を簡単にするDify × Notionのワークフロー構築方法
はじめ
リングフィットアドベンチャーや、ジムのトレーニングマシーンなどでトレーニングしています。
トレーニング記録は通常、個々のゲーム、モバイルアプリに記録されます。
これを一つにまとめるため、
ゲーム、トレーニングマシンのトレーニング結果の画像をアップロードするとNotionに記録されるようにしました。
今回はDifyを利用したので、これを実現するためのワークフローの作り方を話していきます
構成
このシステムで必要な要素は以下の通りです。
- 画像から文字を読み取る
- 文字からトレーニング記録に必要な項目を抜き出し、jsonにする
- Notion APIでトレーニング記録をデータベースのアイテムとして追加する
Dify[1]で1〜3の全てが実現できるワークフローをDifyで構築しました。
ワークフローのDSLはGitHubとSUZURIで公開しています。
1. Notion Integrationの追加
以下のプロパティをすべて持つデータベースを作成します。
DifyからNotionのデータ操作をするため、Notion Integrationを作成します。
-
Integration管理ページから新しいインテグレーションをクリック
-
設定を入力し、保存
- 関連ワークスペース: 操作をしたいデータベース等が存在するワークスペースを選択
- 種類: 内部(Internal)
-
内部インテグレーションシークレット> 表示> コピーでコピーしたものは保存しておきます(後ほど使用します)
ユーザー機能に関して
メールアドレスを含むユーザー情報を読み取るがデフォルトですが、ユーザー情報なしでもOKです。
-
先ほど作成したデータベースを開き、三点メニュー > 接続先 > 先ほど作成したインテグレーション をクリック
-
データベースのURLのうち、自分のワークスペースネーム以降の文字列がデータベースのIDになります。データベースIDもコピーして、保存しておきます
https://www.notion.so/workspace_name/<ここの文字列>?v=dc12369c925843fb876a64d0c10fa1bf
以上でDifyからNotionのデータ操作する下準備が終わりました
2. Difyでのワークフローの構築
ワークフローのDSLは以下で公開しています。これをDSLをインポートした前提で説明をします。
- インポートした後に
Environment Variablesを設定します。
環境変数名 | 値 |
---|---|
NOTION_VERSION | 2022-06-28 |
NOTION_INTEGRATION_SECRET_KEY | 1. Notion Integrationの追加でコピーしたインテグレーションシークレット |
NOTION_DATABASE_ID | 1. Notion Integrationの追加で保存したデータベースID |
- 機能から画像をONにします
以上でワークフローの設定は完了です。
リングフィットアドベンチャーなどのリザルト画面を送信することで、Notionに記録されるようになりました!
以降ではワークフローのポイントのみを記載します。
各ノードの詳細設定は、DSLをインポートしてご覧ください。
JSONの構築
Notionのデータベースにアイテムを追加するために、Notionのデータベースに沿ったJSONを作成する必要があります。
最終的には以下のようなJOSNが必要となります。
{
"parent": { "database_id": "{{ page_id }}" },
"properties": {
"Name": {
"title": [
{
"text": {
"content": "{{ time }}"
}
}
]
},
"kcal": {
"number": {{ kcal }}
},
"minutes": {
"number": {{ minutes }}
},
"km": {
"number": {{ km }}
}
}
}
kcal、 minutes、 kmを画像から取得するところだけをLLMで行い、完全なJSONの作成はテンプレートノードで行います。
LLMノードでは、response_formatはjson_objectにします。
LLMノードの出力はStringとなっています。そこで、コードノードで、それぞれの値を取り出します。
テンプレートノードでNotion APIで送信するデータを作成します。
これにより、データベースにアイテムを追加するための完全なJSONが作成できました。
おわりに
Notionのデータベースにアイテムを追加する箇所だけ別のワークフローに切り出し、ツールとすることで、他のワークフローから呼び出せるようになります。
Notion Web Clipperでデータベースにアイテムを追加したら、makeからワークフローのAPIを実行して、クリップした記事の要約を要約カラムに追加するといった、Notion AI的な使い方もできます。
自分の記事ではないですが、領収書をOCRしてNotionで管理する記事も参考になるかと思います!
-
オープンソースのLLMアプリ開発プラットフォーム (https://dify.ai より引用) ↩︎
Discussion