【Dify×GAS】顔出し不要!YouTubeショート動画の「台本&画像プロンプト」全自動生成パッケージの作り方

DifyとGoogle Apps Script(GAS)を組み合わせ、顔出し不要のYouTubeショート動画用「台本&画像生成プロンプト」を全自動で作成するパッケージの作り方を解説したブログ第110話のアイキャッチ画像。笑顔でガッツポーズする49歳の男性(Yasu)の横で、ノートパソコンに「SUCCESS」の文字が表示され、隣の自動ドキュメント作成機から画像付きのGoogleドキュメントが次々と印刷・出力されていく様子を描いたイメージ図。 Uncategorized

皆さんこんにちは。横浜で清掃業を営む49歳、ヤスです。

前回は値引き交渉を自動化!AIに営業メールを書かせて自動送信アプリをつくりましたね。

本業の集客や、副業としての情報発信に「YouTubeショート動画」が最強なのは分かっている。でも、現場でクタクタになった後に「バズる台本」を考え、「どんな画像を使うか」まで考えるなんて、時間がいくらあっても足りないですよね。

今回は、そんな面倒な作業をAIに丸投げする、超・実践的な自動化アプリを作りました! Difyの中に「敏腕の放送作家」と「ハリウッド級の美術監督」を住まわせ、彼らが考えた完璧な台本と画像指示書を、GAS経由であなたのGoogleドライブに「ドキュメント」として全自動で保存するシステムです。

正直、開発途中で何度も「エラー画面」に心をへし折られそうになりましたが、数々の罠をくぐり抜けてついに完成しました。私が引っかかった「初心者殺しのトラップ」とその解決策も全て網羅して、中学生でも絶対に動かせるレベルで解説します!

【結論】 このアプリの仕組みは、「Dify(頭脳)」が心理学に基づいた台本と画像生成の呪文を作り、「GAS(工場)」がそれを受け取ってGoogleドキュメントを自動作成するという連携プレイです。

成功の最大の鍵は、GAS側で**「エラーを喋る安全装置(try-catch)」を入れることと、「GAS自身に保存先フォルダを作らせて絶対確実なIDを取得すること」**です。これをやれば、魔の連携エラーを100%回避できます。

【手順(ワークフローとGASの作り方)】

ステップ1:GASで「自動ファイル作成工場」を作る まずは荷物を受け取るGAS側の設定です。新規プロジェクトを開き、最初から書かれている文字をすべて消して、以下の「完全版コード」をコピペしてください。全行に解説をつけています。

JavaScript

// Difyからデータを受け取って、自動でGoogleドキュメントを作成するメインの窓口です
function doPost(e) {
  // 【重要】エラーが起きてもパニックにならず、原因を報告する仕組み(try-catch)
  try {
    // Difyから送られてきた暗号みたいなデータ(JSON)を、プログラムで読める形に変換します
    const params = JSON.parse(e.postData.contents);
    
    // Difyから送られてきた3つの情報(テーマ、台本、画像プロンプト)を変数に取り出します
    const videoTheme = params.theme;     // 動画のテーマ
    const videoScript = params.script;   // 放送作家AIが書いた台本の文章
    const imagePrompts = params.prompts; // 美術監督AIが書いた画像生成用の英語プロンプト
    
    // ▼▼▼ ここにGAS自身が作った「本物のフォルダID」を貼り付けます! ▼▼▼
    const folderId = "ここに本物のIDを貼り付けてください"; 
    
    // 指定したIDのフォルダを探して、変数(箱)に準備しておきます
    const folder = DriveApp.getFolderById(folderId);
    
    // 作成するGoogleドキュメントのファイル名を決めます(例:【台本】換気扇の掃除法)
    const fileName = "【台本】" + videoTheme;
    
    // 新しいGoogleドキュメントをシステム上に作成します
    const doc = DocumentApp.create(fileName);
    
    // 作成したドキュメントのID(固有の番号)を控えておきます
    const docId = doc.getId(); 
    
    // ドキュメントの「本文」を編集するための準備をします
    const body = doc.getBody();
    
    // 一番上に、見出しとしてタイトルをデカデカと書き込みます
    body.insertParagraph(0, "■ YouTubeショート動画 台本&素材パッケージ").setHeading(DocumentApp.ParagraphHeading.HEADING1);
    
    // テーマ(お題)を書き込みます
    body.appendParagraph("【テーマ】 " + videoTheme);
    
    // 放送作家AIが考えた台本を書き込みます(\n は改行という意味です)
    body.appendParagraph("\n■ 音声読み上げ用 台本\n" + videoScript);
    
    // 美術監督AIが考えた画像生成プロンプトを書き込みます
    body.appendParagraph("\n■ 背景画像生成用 プロンプト\n" + imagePrompts);
    
    // 書き込みを終了して、ドキュメントをしっかり保存して閉じます
    doc.saveAndClose();
    
    // 先ほど控えたIDを使って、完成したドキュメントの「ファイル自体」を取得します
    const file = DriveApp.getFileById(docId);
    
    // そのファイルを、指定しておいた目的のフォルダの中に移動させます
    folder.addFile(file);
    
    // 元々あった場所(マイドライブの一番上)に残っている古いファイルを削除して整理整頓します
    DriveApp.getRootFolder().removeFile(file);
    
    // すべて成功したら、Dify側に「無事に作成完了しました!」という報告を返します
    const result = { status: "success", documentUrl: file.getUrl() };
    
    // 報告データをJSONという形式に整えて、Difyに送信して処理を終わります
    return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);

  } catch (error) {
    // ★もし途中でエラーが起きたら、何がダメだったのかをDifyにテキストで送り返す安全装置です
    const errorResult = { status: "error", message: "GASのエラー原因: " + error.toString() };
    
    // エラー内容をJSONという形式に整えて、Difyに送信します
    return ContentService.createTextOutput(JSON.stringify(errorResult)).setMimeType(ContentService.MimeType.JSON);
  }
}

// -------------------------------------------------------------
// ▼▼▼ プロの裏技:絶対にエラーにならないフォルダIDを自作するツール ▼▼▼
// -------------------------------------------------------------
function makeFolder() {
  // Googleドライブ上に「Dify自動生成用フォルダ」という名前のフォルダを強制的に作ります
  const newFolder = DriveApp.createFolder("Dify自動生成用フォルダ");
  
  // 作ったフォルダの「本物のID」を、画面下の実行ログに表示して教えてくれます
  console.log("【これが本物のIDです】: " + newFolder.getId());
}

⚠️ 絶対にやるべき「GASの儀式」

  1. 画面上部で doPostmakeFolder に変更して「実行」を押し、ログに出た「本物のフォルダID」をコピーして、コード15行目に貼り付けます。(これで権限エラーを100%防げます)
  2. 画面右上の「デプロイ」>「新しいデプロイ」から、アクセスできるユーザーを**「全員」**にして公開し、URL(必ず最後が /exec で終わるもの)をコピーします。

ステップ2:Difyの開始(Start)ブロック Dify側の受付窓口です。

  • 変数:video_theme(テキスト型)… 例:「49歳、IT完全未経験のおじさんがAIを学び始めて激変した3つの理由」

ステップ3:DifyのLLM①(敏腕・放送作家AI) 「PASの法則」を使って、視聴維持率を爆上げする台本を書かせます。以下のプロンプトをコピペしてください。

Plaintext

# 指示
あなたはSNS総フォロワー100万人を超える、敏腕のYouTubeショート動画プロデューサーです。
以下のテーマについて、視聴者が絶対にスクロールを止めて最後まで見てしまう、60秒以内(約300文字)のバズる台本を作成してください。

【テーマ】
{{#start.video_theme#}}

# 構成条件(PASの法則を活用)
以下の構成に沿って、テンポの良い口語体で作成すること。
1. 【フック(0〜3秒)】ターゲットの強い悩みや、常識を覆す衝撃的な一言でスタートする。
2. 【共感・煽り(3〜15秒)】「実はそれ、やってはいけないんです」など、視聴者の危機感を煽る。
3. 【解決策(15〜50秒)】プロならではの具体的で有益な解決策を、テンポ良く3つ提示する。
4. 【行動喚起:CTA(50〜60秒)】保存やチャンネル登録を促すオチをつける。

# 出力形式
・余計な解説は一切不要です。読み上げる【台本のテキストのみ】を出力してください。
DifyワークフローのLLMノード(gpt-4o)設定画面。AIに「ハリウッド映画の賞を受賞した映像美術監督」の役割を与え、生成されたショート動画の台本((x) text)を基に、Midjourneyなどで使える高品質なAI画像生成プロンプトを、アスペクト比「--ar 9:16」指定かつ英語で自動作成させるためのシステムプロンプト設定。動画のシーンに完全に合致した視覚素材を自動用意するプロセスの構築。

ステップ4:DifyのLLM②(ハリウッド級・美術監督AI) 前の台本を読み込み、Midjourney等で使える超高品質な画像生成プロンプトを書かせます。

Plaintext

# 指示
あなたはハリウッド映画の賞を受賞した、最高峰の映像美術監督です。
以下の「ショート動画の台本」を読み込み、背景として表示する極めて高品質なAI画像生成用プロンプトを、動画の流れに合わせて3シーン分作成してください。

【台本】
{{#llm1.text#}}

# プロンプト作成の絶対条件
・出力は必ず【英語のみ】のカンマ区切りとすること。
・各プロンプトには、以下の要素を必ず含めること。
  1. Subject(被写体の詳細な描写)
  2. Action(何をしているか)
  3. Setting(背景・環境)
  4. Lighting(Cinematic lighting, volumetric lighting, neon glow 等)
  5. Camera/Lens(Shot on 35mm lens, depth of field, highly detailed 等)
・ショート動画用のため、必ず各プロンプトの最後に縦長を指定するパラメータ「 --ar 9:16」を付けること。

# 出力形式
以下の形式で、英語のプロンプトのみを出力してください。
Scene 1: [English Prompt] --ar 9:16
Scene 2: [English Prompt] --ar 9:16
Scene 3: [English Prompt] --ar 9:16
Difyワークフローの「HTTPリクエスト」ノード設定画面。生成した動画台本と画像プロンプトをGoogle Apps Script(GAS)へ送信するための設定。メソッドを「POST」に指定し、ボディ(JSON)形式で、動画テーマ(video_theme)、台本(text)、プロンプト(text)の3つの変数をGoogleドキュメント側へ受け渡すためのAPI連携ロジックを構築している。

ステップ5:HTTPリクエストブロック(GASへのデータ送信) ここが最大の難所です。以下の3つの指差し確認を絶対に守ってください!

  1. メソッドは必ず「POST」にする: 「GET」のままだと『400 Bad Request』エラーになります!
  2. APIのURL: GASでコピーした /exec で終わるURLを貼る。(/library/d/ が入っているURLを貼ると『401 Unauthorized』エラーになります!)
  3. ボディ(Body): JSON にして以下をコピペし、{{ }} の中身はメニューから変数を選び直します。

JSON

{
  "theme": "{{#start.video_theme#}}",
  "script": "{{#llm1.text#}}",
  "prompts": "{{#llm2.text#}}"
}
Difyワークフローのテスト実行(Test Run)結果画面。YouTubeショート用の台本と画像生成プロンプトの作成が完了し、HTTPリクエストを通じてGoogle Apps Script(GAS)が正常に応答。右側のコンソールには、生成された内容を保存したGoogleドキュメントのURL(documentUrl)を含むJSONレスポンスが表示されており、AIによる動画素材の自動ドキュメント化が成功した様子。

【まとめ】 全てのブロックが緑色になり、右側に {"status":"success"} と表示された瞬間、思わずガッツポーズが出ました。Googleドライブを開くと、そこにはプロ級の台本と画像指示書が完璧にまとまったドキュメントが鎮座しています。

DifyからGAS経由で自動生成・保存されたGoogleドキュメントの画面。「疲れた40代の心と体を癒す、究極の『100度超えサウナ×ジャパニーズウイスキー』」というテーマのYouTubeショート動画台本(フック、共感、解決策、CTA)と、Midjourney用の背景画像生成プロンプト(Scene 1〜3、--ar 9:16指定)が、構造化されて出力されている様子。

システム開発は、エラー画面の連続です。「400」「401」「フォルダが見つかりません」…その度に心が折れそうになりますが、一つずつ原因を潰していけば絶対に突破できます。

「現場の移動時間にスマホからテーマを入れるだけで、明日の動画のパッケージが完成している」。この衝撃的な業務効率化は、間違いなく私たちの強い武器になります。いつかはYouTubeのショート動画を作って見ようと思います。

49歳、まだまだ新しい武器を手に入れて進化していきます。皆さんもぜひ、この達成感を味わってみてください!

xもやってますのでこちらも是非遊びに来てください

私のエックス

次は何のアプリを作ろうかな。次回も是非お楽しみに!

コメント

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