はじめに
Difyというサービスを聞いたことがあるけれど、「何ができるかわからない」、「どう使うのかわからない」などの理由で使ったことがない方は多いのではないでしょうか。
そのような方のために、「Dify で何ができるのか?や Dify を使った活用事例」を紹介する記事をシリーズ化していきます。
今回は第7回目で、前回のワークフローをより実用的なものにします。
具体的には、取得した会社名や氏名の情報を、Notionのデータベースに格納するワークフローを作成する方法について紹介します。
- Dify という言葉を聞いたことがあるが、何ができるのかがわからない方
- Dify を業務に取り入れたいと検討している方
環境
- Chrome
- Dify v0.11.2(2024年11月20日時点)
概要
完成イメージ
サンプルの名刺として、以下を使用しました。

- 左の「ローカルアップロード」から名刺の画像をアップロードし、「実行」を選択します。
-
右側に動画の要約が返ってきます。
-
Notionのデータベースに、抽出した情報が格納されます。
上記のアプリを構築するためにワークフローを作る説明をします。
一つ一つの処理を小さなブロック(ノード)としてつなぎ合わせて、一連のプロレスを自動化する機能です。
今回作成するワークフローのDifyの画面です。

このワークフローは、以下のブロックで構成されます。
flowchart LR A[開始] --> B[パラメータ抽出<br>gpt-4o-mini] B --> C[HTTPリクエスト] C --> D[終了]
- 開始:名刺の画像を受け取ります。
- パラメータ抽出:OCR機能を利用して会社名、氏名、メールアドレス、親ドメインを抽出し、変数に格納します。
- HTTPリクエスト:抽出した情報をNotionのデータベースに格納します。
- 終了:ワークフローを終了します。
作業手順
ここからは、ワークフロー構築の手順について説明します。
手順
- Notionデータベースの準備
- ワークフローの新規作成
- 環境変数の設定
- ワークフロー作成画面上での作業
- ワークフローの動作確認
1. Notionデータベースの準備
インテグレーションを作成し、APIのシークレットキーを取得する
-
Notionのインテグレーションにアクセスし、「新しいインテグレーション」を押します。
-
インテグレーションの名前を入力し、「関連ワークスペース」を設定後、「保存」を選択します。
インテグレーションの名前を名刺情報DBとしています。
-
「インテグレーション設定」を選択します。
-
「内部インテグレーションシークレット」の「表示」を押します。
APIのシークレットキーが表示されます。後述の「環境変数の設定」で使用しますので、控えておきます。
-
Notionでページを作成し、「テーブル」を選択し、テーブルを追加します。
-
「ビューのリンクをコピー」を選択します。
下記の用のURLがコピーされます。<DATABESE_ID>を後述の「環境変数の設定」で使用しますので、控えておきます。
https://www.notion.so/<DATABASE_ID>?v=XXX&pvs=4
-
右上の三点リーダーを選択し、「接続先」を選択します。
先程作成した「名刺情報DB」を選択します。
-
データベースのプロパティを設定します。下記の表のようにプロパティを追加します。
プロパティ名 プロパティの種類 取得したい情報 Name タイトル フルネーム company_name テキスト 会社名または所属 last_name テキスト 苗字 first_name テキスト 名前 mail メール メールアドレス parent_domain URL 親ドメイン phone_number 電話 電話番号 department テキスト 部署 post テキスト 役職 追加後は画像のようになります。
これでNotionの準備は完成です。
2. ワークフローの新規作成
-
最初の画面の「最初から作成」を選択します。
-
「ワークフロー」を選択し、「アプリのアイコンと名前」を入力してから「作成する」を選択します。
3. 環境変数の設定
- Dify ワークフローの右上の「ENV」ボタンをクリックし、「環境変数を追加」を選択します。
-
「名前」に「NOTION_INTEGRATION_SECRET_KEY」と入力し、先程取得したAPIのシークレットキーを入力し、「保存」を選択します。
-
同様に、「NOTION_DATABASE_ID」に先程取得した
DATABESE_ID
を入力します。
4. ワークフロー作成画面上での作業
-
「開始」ノードを選択します。
「入力フィールド」の「+」ボタンを押します。
下記の表のように各項目を選択または入力した後、「保存」を選択します。
項目 値 備考 フィールドタイプ 単一ファイル 複数のファイルをアップロードすることもできます。 変数名 image 任意の値を入力します。 ラベル名 image 任意の値を入力します。 サポートされたファイルタイプ 画像 アップロードするファイルの種類を指定します。 アップロードされたファイルのタイプ ローカルアップロード 画像をローカルからアップロードするか、画像のURLを入力するか、その両方を選べます。 -
「パラメータ抽出」ノードを追加します。
「モデル」を「gpt-4o-mini」に設定し、「入力変数」に「開始」の「image」を選択します。
「ビジョン」を有効にし、変数に「開始」の「image」を設定します。
名刺から取得したい情報をパラメータとして追加します。
「パラメータを抽出」の「+」ボタンを押します。
「名前」に「full_name」、「説明」に「氏名」と入力し、「追加」を選択します。
同様に、下記の表のを参考にパラメータを追加します。
右の画像のように追加されているか確認します。
名前(パラメータ名) 説明 full_name 氏名 company_name 会社名または所属 mail メールアドレス parent_domain 親ドメイン last_name 苗字 first_name 名前 post 役職 telephone_number 電話番号 department 部署 「指示」の欄に下記のようなプロンプトを入力します。
次の情報をテキストから抽出してください。各項目は、括弧内のラベルで出力してください:- 会社名または所属(日本語の場合は日本語で記載、company_name)
- 氏名(苗字、名前を分けて抽出、full_name)
- メールアドレス(mail)
- メールアドレスから抽出した親ドメイン(parent_domain)
- 役職( 「社長」、「部長」、「リーダー」、「マネージャー」など、post)
- 電話番号(telephone_number)
- 部署(department)
すべての項目がテキストに含まれていない場合は、取得可能な情報のみを抽出してください。
-
「HTTPリクエスト」ノードを追加し、「API」で「POST」を選択します。
URLに下記のURLを設定します。
https://api.notion.com/v1/pages
「API」の「認証なし」を選択します。
「認証タイプ」に「APIキー」と「Bearer」、「APIキー」に環境変数の「NOTION_INTEGRATION_SECRET_KEY」を選択し、「保存」を選択します。
「ヘッダー」を下記の表のように入力します。
キー 値 Notion-Version 2022-06-28 Content-Type application/json 「ボディ」の「JSON」を選択し、下記のJSONコードをコピーしペーストします。
JSONコード
{ "parent": { "database_id": "" }, "properties": { "company_name": { "rich_text": [ { "text": { "content": "" } } ] }, "department": { "rich_text": [ { "text": { "content": "" } } ] }, "first_name": { "rich_text": [ { "text": { "content": "" } } ] }, "last_name": { "rich_text": [ { "text": { "content": "" } } ] }, "mail": { "email": "" }, "Name": { "title": [ { "text": { "content": "" } } ] }, "parent_domain": { "url": "" }, "phone_number": { "phone_number": "" }, "post": { "rich_text": [ { "text": { "content": "" } } ] } } }
「database_id」の「””」の間に「/」を入力し、「NOTION_DATABASE_ID」を選択します。
同様に残りの各項目も、下記の表を参考に設定します。
プロパティ名 指定するパラメータ company_name {x}company_name department {x}department first_name {x}first_name last_name {x}last_name email {x}mail Name {x}full_name parent_domain {x}parent_domain phone_number {x}telephone_number post {x}post -
「終了」ノードを追加します。
以上でワークフローが作成できました。
5. ワークフローの動作確認
-
「公開する」を選択し、「アプリを実行」を選択します。
アプリを実行します。
-
Notionのデータベースに抽出した情報が格納できました。
応用
今回は名刺の情報をOCRで抽出し、Notionのデータベースに格納しましたが、データベースやHTTPリクエストのJSONを変更することで、領収書の情報をデータベースに格納することも可能です。
おわりに
今回は取得した会社名や氏名の情報を、Notionのデータベースに格納するワークフローを作成しました。今後もDifyを利用したアプリの作成手順を紹介していきます。ぜひ引き続きご覧下さい。