
YouTube Shortsをn8nで完全自動投稿する
YouTube Shortsに時間を奪われてしまうことって良くありますよね。消費者として楽しむことも良いですが生産者としてもうまく活用したいところです。
ただ、動画の制作は手間と時間がかかる作業ですよね。そのため、クリエイティブな作業を除いて、自動化できるところはシステムで解決したいと感じている方が多いのではないでしょうか?
本記事では、さらに欲張って完全自動化を目指してみます。自動化にはOSSのワークフロー構築ツール n8n を使用します。
動画のコンセプト
ワークフローを中身を解説するため、作成している動画のコンセプトを先に紹介します。
猫が好きなので猫の動画にします。以下の2点のようなコンセプトの動画を作成します。
- 猫が他の大型動物を軽くあしらって手なづけてしまう
- 猫が他の小型動物と仲良く戯れあっている
YouTubeチャンネル:ねこちゃんさいきょう

ここは皆さんのアイデアを発揮する場面です。面白いアイデアを考えてみてください!
システム詳細
構成
構成は以下の図の通りです。
| ノード | 役割 |
|---|---|
| Schedule Trigger | ワークフローの実行をスケジューリングします。 |
| Get row(s) in sheet | 猫と対戦する動物をスプレッドシートから取得します。 |
| Scene Creator | 動画を生成するためのプロンプトを生成AIが作成します。 |
| Generate a video | プロンプトから動画を生成します。 |
| Upload a video | YouTubeに動画を投稿します。 |
| Update row in sheet | ステータスを投稿済みに更新します。 |

Schedule Trigger
Schedule Trigger node は一定の間隔または特定の時刻でワークフローを実行することができる トリガーノード です。今回は、毎日正午に一回の動画投稿を行います。設定は以下の通りです。
| 項目 | 値 | 説明 |
|---|---|---|
| Trigger Interval | Days | トリガーの間隔の単位を「日」に設定します。 |
| Days Between Triggers | 1 | トリガー間の日数を1日に設定します(毎日実行)。 |
| Trigger at Hour | Noon | トリガーを実行する時刻を正午(12時)に設定します。 |
| Trigger at Minute | 0 | トリガーを実行する分を0分に設定します。 |
「Add Rule」ボタンがあるように、複数のスケジュールを設定することも可能です。

Get row(s) in sheet
Get row(s) in sheet ではスプレッドシートから条件を指定して行を読み取ることができます。
スプレッドシートでは猫と対戦する相手とステータスを管理しています。

Statusが「未完了」である行の先頭を取得します。

Scene Creator
Scene Creatorでは AI Agent node を使用して、動画の構成を生成AIに作成してもらいます。
プロンプトは以下の通りです。System MessageではAIの役割や出力形式などの動作を定義し、User Messageでは実際のリクエスト(今回の場合は対戦する動物名)を伝えます。
System Message
# System Message
あなたはYouTube Shorts用の猫動画のシーン創作AIです。視覚的に魅力的で、12秒の動画映像として完結するシーンを生成します。
## 指示
動物名: {{ $json.Opponents }}
### 分類ルール
**凶暴な動物**(サイズが猫の3倍以上、または毒・鋭い牙/爪を持つ):
ライオン、トラ、クマ、ワニ、サメ、オオカミ、コブラ、ワシ、サソリなど
**それ以外の動物**:
犬、ウサギ、ハムスター、リス、インコ、カメ、アヒルなど
## シーン創作ガイドライン
### 凶暴な動物の場合(ダイナミックシーン):
- **0-3秒**: 凶暴な動物が威嚇または攻撃体勢(具体的な動作を記述)
- **4-8秒**: 猫が華麗に攻撃を回避または軽くあしらう(具体的なアクション)
- **9-12秒**: 凶暴な動物が完全に懐き、猫に甘える結末
### それ以外の動物の場合(和やかシーン):
- **0-4秒**: 2匹の出会いまたは遊びの始まり(具体的な動作)
- **5-9秒**: 仲良く遊ぶ具体的な行動(追いかけっこ、じゃれ合いなど)
- **10-12秒**: 寄り添う、または満足げな表情で終わる
## 必須要素
- カメラアングル(ワイド/ミディアム/クローズアップ)の指示
- 両方の動物の表情や感情
- 環境/背景の簡単な描写(森、草原、室内など)
- 動きの擬音語や効果音の提案
## 出力フォーマット
**200文字以内の英語で**、映像の流れが明確なシーン記述のみを出力。
説明文、挨拶、確認の言葉は一切含めない。
## 出力例(凶暴な動物):
Wide shot: Fierce tiger lunges at tiny orange cat in bamboo forest. Medium: Cat gracefully sidesteps, playfully taps tiger's nose. Close-up: Tiger's expression softens, purrs, nuzzles cat affectionately as both sit peacefully.
## 出力例(和やか動物):
Sunny garden. Wide: Fluffy cat and white bunny meet, curious. Medium: Cat gently paws bunny, bunny hops around cat playfully. Close-up: Both cuddle together under flower bush, content expressions, soft ambient sounds.
User Message
動物:{{ $json.Opponents }}
次のステップの動画生成AIに渡すプロンプトは英語である方が精度の向上が見込めるので、英語で出力するように指示しています。
Generate a video
Scene Creatorで出力された結果をそのまま動画生成AIにプロンプトで渡します。動画生成AIにはOpen AIのSora2を使用しています。

Upload a video
Yotube Data API v3 を使用してAPI経由で動画をYouTubeにアップロードします。n8nには YouTube node が用意されているので簡単に設定することができます。
Update row in sheet
ステータスを「未完了」から「作成済み」に変更します。また、YouTube nodeでレスポンスされる uploadId を用いて、ショート動画URL https://www.youtube.com/shorts/{{ $json.uploadId }} を記録しておきます。

やってみた結果
Conming Soon...
コスト
1動画あたりのコストですが、Sora2の使用量が高いです... 生成する動画1秒あたり$0.1で今回は12秒の動画を生成しているため$1.2となります。
| AIモデル | コスト |
|---|---|
| GPT 4.1 Mini | $0.004 |
| Sora2 | $1.2 |
このコストを上回る収益をあげようとすると、収益化を実現した上で50k~100k再生をコンスタントに取り続ける必要があります。簡単ではなさそうですね。
さいごに
今回はシンプルなワークフローでYouTube Shortsの投稿を自動化しました。このレベルのアイデア/構成であれば比較的に短時間で構築することができます。一方、AIツールを使ったシステムの構築を行う度、プロンプトの最適化の難しさに直面します。
n8n はちょっとしたアイデアを簡単に形に起こせる点で非常に優れたツールです。実装の結果が構成図となる点も開発者としてはありがたいですね! n8n を活用してみなさんのアイデアを形にしてみてはいかがでしょうか!?