54話:【解決編】バラバラの道を束ねる魔法!「変数集約器」で二刀流アプリを完成させよ

Dify実践記第53話のアイキャッチ。条件分岐機能を活用して、1つの入力からブログ記事とSNS投稿の両方を生成する「二刀流AI」の構築をテーマに、道が分かれる都市の風景と対照的な二人の人物を描いています。 AI活用

前回(第53話)、私たちは「ブログもSNSも書ける二刀流アプリ」を作ろうとして、大きな壁にぶつかりました。

  • **ブログモード(上の道)**を通ったとき
  • **SNSモード(下の道)**を通ったとき

この2つの結果を、1つの「スプレッドシート保存ブロック」に渡そうとしても、線のつなぎ先が選べなかったのです。

「道は2つあるのに、出口は1つしかない」というジレンマでしたね。

今回は、この問題を一瞬で解決する魔法のブロック、**「変数集約器(Variable Aggregator)」**を使って、アプリを完成させます。

さらに、今回は**「初心者でも絶対にエラーが出ない、一番簡単な保存設定」**をご紹介します。

Difyの設定を楽にするために、受け取る側のスプレッドシート(プログラム)を少しだけ賢く進化させましょう!まずは完成図です。


Difyで作成した、ブログとSNSの出力を自動で振り分ける条件分岐ワークフローの完成図。入力、分岐、それぞれのLLM処理、変数の集約、外部連携(HTTPリクエスト)、そして最終出力までの全工程が1つのフローにまとめられています。

ステップ1:魔法のブロック「変数集約器」を置く

分かれた道を一本に合流させる場所を作ります。

  1. ワークフローの「ブログライター(LLM)」と「SNSライター(LLM)」の後ろあたりにある 「+」 を押します。
  2. リストの中から 「変数集約器(Variable Aggregator)」 を探してクリックします。
    • (※少し下の方にある「高度なブロック」の中にあります)

すると、じょうご(漏斗)のような形をしたブロックが登場します。

これが今回の主役です!


ステップ2:2つの道を「合流」させる

ここが一番の重要ポイントです。

「上から来ても、下から来ても、ここでキャッチしてね!」という設定をします。

  1. **「変数集約器」**ブロックをクリックして設定を開きます。
  2. 画面の 「変数を追加」 ボタンを押します。
  3. まずは 上の道(ブログ用) を登録します。
    • ブログライター > text を選択。
  4. もう一度 「変数を追加」 ボタンを押します。
  5. 次は 下の道(SNS用) を登録します。
    • SNSライター > text を選択。
Difyの「変数集約器」ノードの設定画面。条件分岐によって別々のLLMから出力された「ブログ用」と「SNS用」のテキスト情報を、次の外部連携ステップ(HTTPリクエスト)へ渡すために一つの変数にまとめる処理を説明しています。

これで設定完了!

このブロックは、「ブログ」からボールが来ても、「SNS」からボールが来ても、どちらも 変数集約器.text という一つの名前に統一してくれます。


ステップ3:スプレッドシート(GAS)を賢くする

ここで少し寄り道をして、データの「受け取り側」であるスプレッドシートの設定を、もっと簡単に修正します。

(第51〜52話の設定をアップグレードします!)

今回は、Difyから「日付」を送るのをやめて、**「スプレッドシート側で勝手に日付を入れる」**ようにします。

こうするとDifyの設定がめちゃくちゃ楽になります。

1. スプレッドシートの1行目を直す

Difyからの出力結果を自動保存するために用意されたGoogleスプレッドシートの画面。1行目に「date」「mode」「text」という見出しを設定し、API連携によるデータ書き込みの土台を作成している状態を説明しています。

スプレッドシートを開き、1行目(見出し)を以下のように書き換えてください。

ABC
1日付モード本文

2. プログラム(GAS)を書き換える

スプレッドシートのメニューから 「拡張機能」「Apps Script」 を開きます。

今あるコードを全部消して、以下の**「万能コード」**をコピーして貼り付けてください。

JavaScript

function doPost(e) {
  // 1. シートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // 2. Difyから送られてきたデータを取り出す
  var data = JSON.parse(e.postData.contents);
  
  // 3. スプレッドシートに行を追加する
  // [ 日付(自動),  モード(Difyから),  本文(Difyから) ] の順で保存
  sheet.appendRow([new Date(), data.mode, data.text]);
  
  return ContentService.createTextOutput("Success");
}
Google Apps Script(GAS)を使用して、Difyからのデータをスプレッドシートへ自動保存するためのプログラムコード画面。受信したデータを解析し、日付・モード・本文の3項目を新しい行として追加する doPost 関数の実装内容を示しています。

3. 保存して更新(デプロイ)

ここを忘れると動きません!

  1. フロッピーアイコン 「保存(💾)」 を押す。
  2. 右上の 「デプロイ」「デプロイを管理」 を押す。
  3. 右上の 「鉛筆アイコン(編集)」 を押す。
  4. バージョンを 「新バージョン」 に切り替える。
  5. 「デプロイ」 ボタンを押す。

これで受け入れ準備は完璧です!


ステップ4:HTTPリクエストの設定(超かんたん版)

Difyの「HTTPリクエスト」ノードの設定画面。外部のGoogleスプレッドシート(GAS経由)に送信するJSONデータの中身を定義し、Dify内の変数を正しく割り当てる手順を示しています。

さあ、Difyに戻って最後の仕上げです。

以前よりも設定項目が減ってシンプルになっていますよ。

  1. 変数集約器の後ろに、**「HTTPリクエスト」**ブロックを追加します。
  2. APIPOST を選択。
  3. URL: さっきのGASのURL(環境変数 GOOGLE_SHEET_URL)を選択。
  4. ボディ(Body)JSON を選択。
  5. 以下のコードをコピーして貼り付けます。

JSON

{
  "mode": "",
  "text": ""
}
  1. ダブルクォーテーション "" の間にカーソルを置いて、{x} から変数を埋め込みます。
    • "mode": "" の間 ➡ {x}開始 (Start)mode
    • "text": "" の間 ➡ {x}変数集約器text
    • (※さっきステップ2で作った変数です!)

これだけでOK!

「日付の設定」など面倒なことは全部カットしました。

Difyの「出力」ノード設定画面。変数集約器でまとめられた最終的なコンテンツ(ブログまたはSNS用テキスト)を、実行結果として画面に出力するよう設定している様子。

ステップ5:いざ、テスト実行!

それでは、本当に動くのか試してみましょう。

右上の「プレビュー」ボタンを押します。

テスト①:ブログモード

  • 作成モードBlog
  • 書きたいテーマキャンプの始め方

実行ボタンをポチッ!

……AIが長文を書き始めます。

そして、スプレッドシートを確認すると?

「ドンッ! A列に日付、B列にBlog、C列に長文が入っています!」

テスト②:SNSモード

Difyで構築した「二刀流AI」のテスト実行画面。SNS用モードで実行され、キャンプをテーマにした絵文字付きのSNS投稿文が正しく生成・出力されている様子を示しています。
  • 作成モードSNS
  • 書きたいテーマキャンプの始め方

もう一度実行ボタンをポチッ!

……今度はAIが短文を書きました。

スプレッドシートを確認すると?

「ドンッ! 今度はSNSモードの結果が保存されています!」

成功です!!

1つのアプリで2種類の仕事をこなし、記録まで完璧にとってくれる秘書の完成です。


Difyのワークフロー実行後、Googleスプレッドシートに日付、モード、生成テキストが自動で1行追加された画面。API連携とGASによる自動保存が正常に動作したことを証明する画像です。

まとめ:あなたは「設計者」になった

お疲れ様でした!

今回使った**「変数集約器」**、地味ですがものすごい威力ですよね。

  • 条件分岐(IF): 道を分ける
  • 変数集約器: 道を戻す

この「行ってこい」の構造を作れるようになれば、あなたはもう初心者卒業です。

複雑な処理を自動化できる、立派な**「ワークフロー設計者」**の仲間入りです。

ブログとSNSの二刀流アプリ、ぜひ明日からの発信活動に使ってみてください。

作業時間が半分以下になること、間違いなしですよ!

今回も試行錯誤しながらなんとか完成しました!初心者の私が

自動化できるアプリを作れるのは嬉しいですね。

次回は……LLMのパラメータとは?仕組みから性能への影響まで初心者向けに徹底解説

を公開します。是非お楽しみに!

コメント

タイトルとURLをコピーしました