ガイド

APIでYouTube Shortsを自動投稿する方法

YouTube Shortsは毎日数十億回の再生数を生み出していますが、YouTube Studioを通じた投稿は面倒です。特に複数チャンネルを管理したり、TikTokやReelsにクロスポストしたい場合はなおさらです。Upload-PostのソーシャルメディアAPIを使えば、1回のAPI呼び出しでYouTube Shortsをアップロード・スケジュールできます。OAuthの面倒もクォータの管理も不要です。

なぜYouTube Shortsのアップロードを自動化するのか

YouTube Shortsは現在チャンネルを成長させる最速の方法です。アルゴリズムは短い縦型コンテンツを積極的にプッシュしており、Shortsを継続的に投稿するクリエイターは、長尺動画だけでは数カ月かかるチャンネル登録者の成長を実現しています。

問題はアップロードプロセスです。YouTube Studioではログインし、メタデータフィールドを入力し、公開設定を行い、タグを追加して公開する必要があります。週5本のShortsを2つのチャンネルで行うとなると、繰り返し作業に何時間も費やすことになります。

YouTubeの公式Data API(v3)も選択肢ですが、かなりの手間がかかります。Google Cloudプロジェクトの作成、OAuth 2.0同意画面の設定、トークンリフレッシュの処理、予期せずリセットされる日次アップロードクォータの管理が必要です。ほとんどの開発者にとって、タスクに対してインフラが過剰です。

Upload-Postはこれらすべてを1つのPOSTリクエストにまとめます。動画を送信してメタデータを設定すれば、APIが認証、フォーマット検証、YouTubeへの配信を処理します。同じリクエストでTikTokInstagramリールにも同時に公開できます。

API経由でYouTube Shortをアップロードする

アップロードエンドポイントは動画ファイルとメタデータのマルチパートフォームを受け付けます。動画がYouTube Shortとして扱われるには、縦型(9:16アスペクト比)で60秒以下である必要があります。cURLの例:

curl -X POST https://api.upload-post.com/api/upload \
  -H "認可: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=This cooking hack saves 20 minutes every night #shorts #cooking" \
  -F "platform[]=youtube" \
  -F "youtube_description=Quick kitchen tip that changed my meal prep routine. Full recipe on my channel." \
  -F "youtube_tags=cooking,kitchen hack,meal prep,shorts" \
  -F "youtube_visibility=public"

アップロードが成功すると、APIはジョブの詳細を含むレスポンスを返します:

{
  "success": true,
  "job_id": "yt_short_abc123",
  "platform": "youtube",
  "status": "processing"
}

videoフィールドはローカルファイルパス(cURLでは@プレフィックス付き)または公開URLを受け付けます。titleフィールドはYouTubeの動画タイトルにマッピングされます。Shorts検出にタイトルへの#shortsの含有は厳密には不要ですが(YouTubeはアスペクト比と再生時間を使用)、発見されやすくなる場合があります。

YouTube固有のパラメータ

標準のvideotitleuserplatform[]フィールドに加えて、APIはいくつかのYouTube固有オプションを公開しています:

パラメータ 説明
youtube_description 文字列 プレーヤーの下に表示される動画の説明文。リンクと改行をサポートします。省略した場合、メインのtitleが使用されます。
youtube_tags カンマ区切り文字列 YouTube検索と発見用のタグ。例: "cooking,recipe,shorts"。YouTubeは合計500文字まで許可しています。
youtube_visibility "public", "private", "unlisted" 動画を閲覧できるユーザーを制御します。省略した場合は"public"がデフォルトです。
youtube_shorts true / false 自動検出基準を満たさない場合でも、動画をShortとして扱うことを強制します。正方形(1:1)動画などのエッジケースに便利です。
youtube_category_id 整数 YouTubeカテゴリID。一般的な値: 22(人物とブログ)、24(エンターテイメント)、26(ハウツーとスタイル)、28(科学と技術)。
youtube_playlist_id 文字列 アップロードした動画を特定のプレイリストに自動追加します。YouTubeチャンネルのプレイリストIDを渡してください。
youtube_made_for_kids true / false COPPA準拠フラグ。コンテンツが子供向けの場合はtrueに設定します。これにより動画のコメントとパーソナライズド広告が無効になります。

youtube_shortsフラグは、Short扱いを保証したい場合に特に便利です。通常、YouTubeはアスペクト比と再生時間に基づいてShortsを検出しますが、動画が境界値に近い場合(例: 正方形フォーマットや60秒に非常に近い場合)、youtube_shorts=trueを明示的に設定することで曖昧さを排除できます。

最適な時間にShortsをスケジュールする

投稿のタイミングは重要です。YouTube Shortsは公開後最初の数時間で最も多くのトラクションを獲得するため、オーディエンスのアクティブ時間にアップロードのタイミングを合わせることで、アルゴリズムにより強いシグナルを与えます。

Shortをスケジュールするには、リクエストにscheduled_date(ISO-8601形式)とtimezone(IANA形式)を追加します:

curl -X POST https://api.upload-post.com/api/upload \
  -H "認可: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=5 AM routine that actually works #shorts #productivity" \
  -F "platform[]=youtube" \
  -F "youtube_visibility=public" \
  -F "scheduled_date=2025-09-15T08:00:00Z" \
  -F "timezone=America/New_York"

ハンズフリーのスケジューリングには、代わりにキューシステムを使用します。好みの投稿スロットを一度設定し、add_to_queue=trueでコンテンツを追加すれば、APIが各動画を次の空きスロットに自動的に割り当てます。1セッションで1週間分のコンテンツをアップロードする一括ワークフローに最適です。キュー設定の詳細については、スケジューリング完全ガイドをご覧ください。

YouTube Shortsの最適な投稿時間はニッチによって異なりますが、一般的には現地時間の午前7時から9時(朝のスクロール)、正午から午後2時(昼休み)、午後7時から10時(夜のリラックスタイム)に良いパフォーマンスが見られます。ソーシャルメディア記念日カレンダーを使って、Shortsをトレンドの日付やイベントに合わせましょう。

ショーツをTikTokとリールにクロスポストする

60秒以下の縦型動画はYouTube Shorts、TikTok、Instagram Reelsで使えます。3つの異なるインターフェースから同じファイルを3回アップロードする代わりに、1回送信してAPIに配信させましょう:

curl -X POST https://api.upload-post.com/api/upload \
  -H "認可: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=Wait for it... #shorts" \
  -F "tiktok_title=Wait for it... #fyp #viral" \
  -F "instagram_title=Wait for it... Full video on YouTube (link in bio)" \
  -F "platform[]=youtube" \
  -F "platform[]=tiktok" \
  -F "platform[]=instagram" \
  -F "media_type=REELS" \
  -F "youtube_visibility=public" \
  -F "privacy_level=PUBLIC" \
  -F "add_to_queue=true"

いくつかのポイント: media_type=REELSはInstagramにリール(フィード投稿ではなく)として公開するよう指示します。各プラットフォームはtiktok_titleinstagram_titleで独自のキャプションを取得し、メインのtitleはYouTubeに送られます。add_to_queue=trueフラグは、キュー設定に従って3つすべてをスケジュールします。

マルチプラットフォームワークフローの詳細については、クロスポスティングガイドをご覧ください。長尺のYouTube動画をShortsに再利用する場合は、リパーパスガイドでクリップと配信のパイプライン全体をカバーしています。

Pythonで一括アップロードする

投稿準備ができたShortsがフォルダにたくさんある場合、Python SDKで一括アップロードが簡単にできます。まずSDKをインストールしてください:

pip install upload-post

次に動画をループして、時間をずらしてスケジュールします:

import os
import glob
from datetime import datetime, timedelta
from upload_post import UploadPostClient

client = UploadPostClient(api_key="your-api-key-here")

video_folder = "/path/to/youtube-shorts"
videos = sorted(glob.glob(os.path.join(video_folder, "*.mp4")))

# Start scheduling from tomorrow at 8 AM Eastern
base_time = (datetime.now() + timedelta(days=1)).replace(
    hour=8, minute=0, second=0, microsecond=0
)

print(f"Found {len(videos)} Shorts to schedule")

for i, video_path in enumerate(videos):
    publish_time = base_time + timedelta(hours=3 * i)  # Every 3 hours
    filename = os.path.basename(video_path)
    title = filename.replace(".mp4", "").replace("-", " ").replace("_", " ")

    try:
        response = client.upload_video(
            video_path=video_path,
            title=f"{title} #shorts",
            user="mybrand",
            platforms=["youtube"],
            scheduled_date=publish_time.isoformat(),
            timezone="アメリカ/ニューヨーク",
            youtube_visibility="public",
            youtube_tags="shorts,daily",
            youtube_shorts=True,
            async_upload=True
        )
        job_id = response.get("job_id", "pending")
        print(f"[{i+1}/{len(videos)}] Scheduled {filename} for {publish_time} (Job: {job_id})")
    except Exception as e:
        print(f"[{i+1}/{len(videos)}] Failed: {filename} - {e}")

print("すべてのショートがスケジュールされました!")

このスクリプトは各Shortを3時間間隔でスケジュールし、次のShortsが公開される前に初期トラクションを獲得する時間を確保します。timedeltaを調整して好みの投稿ペースに合わせてください。platforms=["youtube", "tiktok", "instagram"]を渡せば、すべてのShortsを自動的にクロスポストすることもできます。

大規模な動画一括操作については、一括アップロードガイドで並列アップロード、リトライロジック、Webhookベースのステータス追跡などの高度なパターンを解説しています。

n8nでノーコード自動化

コードを書くよりビジュアルワークフローを好む場合、n8nが最適です。一般的なセットアップは、Google Driveフォルダを監視し、ファイルが表示されるたびにYouTube Shortsとして自動投稿するものです。

ワークフローは3つのノードで構成されます:

  1. Google Driveトリガー: 「Shorts」フォルダに新しいMP4ファイルが追加されたときに起動します。
  2. HTTPリクエスト: https://api.upload-post.com/api/uploadに動画、ファイル名から派生したタイトル、platform[]=youtubeadd_to_queue=trueを含むmultipart/form-data POSTリクエストを送信します。
  3. Slack/メール通知: アップロードの成功を確認するか、失敗した場合にアラートを送信します。

YouTube Shortsワークフローをカバーするすぐに使えるテンプレート:

その他のアイデアはn8nテンプレート一覧をご覧ください。Make.comでも同様の自動化を構築できます。

YouTube Shortsの要件

アップロード前に、動画がYouTubeのShortsの仕様を満たしていることを確認してください。これらの要件を満たさないファイルをアップロードすると、アップロードの失敗や通常の(Short以外の)動画として扱われます。

要件 仕様
最大再生時間 60秒
アスペクト比 9:16(縦型)。正方形(1:1)も可能ですが縦型を推奨。
推奨解像度 1080x1920ピクセル
対応フォーマット MP4, MOV, WebM
最大ファイルサイズ 256 GB(YouTube制限)。ただし短いShortsは通常50 MB以下
コーデック H.264推奨。H.265(HEVC)もサポート。
フレームレート 30または60 fps推奨

ソース動画がランドスケープ形式の場合、FFmpeg APIで公開前にクラウド上で縦型にクロップ・リサイズできます。これは長尺動画をShortsにリパーパスする際に特に便利です。

よくある質問

通常の(長尺)YouTube動画もアップロードできますか?

はい。同じPOST /api/uploadエンドポイントがShortsと通常の動画の両方を処理します。違いは自動的に判定されます: 縦型フォーマットの60秒以下の動画はShortsとして扱われ、それ以外は標準のYouTube動画として公開されます。youtube_shorts=trueパラメータを使ってShort扱いを強制することも、省略してYouTubeにファイルのサイズと再生時間に基づいて判断させることもできます。

複数のYouTubeチャンネルで使えますか?

はい。接続された各YouTubeチャンネルは、Upload-Postアカウント内で異なるuser値として表されます。ダッシュボードからチャンネルを接続し、対応するuserパラメータを渡すことで投稿先のチャンネルを指定します。異なるuser値で個別のリクエストを行うことで、同じShortを複数チャンネルにアップロードできます。

ショーツの収益化はどうなりますか?

Upload-Postは収益化ステータスに影響しません。API経由でアップロードされた動画は、YouTube Studioからアップロードされた動画と同じように扱われます。チャンネルがYouTubeパートナープログラムに参加している場合、Shortsは他のShortと同様にShortsの収益分配プログラムの対象となります。youtube_made_for_kidsフラグはここで重要です: trueに設定するとパーソナライズド広告が無効になり、収益に影響します。

ショーツ、リール、TikTokの違いは何ですか?

3つとも短い縦型動画フォーマットですが、制約が異なります。YouTube Shortsは最大60秒、Instagram Reelsは最大15分、TikTokは最大10分です。クロスポストの場合、YouTube Shortsの条件を満たすよう60秒以下に動画を収めてください。キャプションも異なります: TikTokはトレンドのハッシュタグとカジュアルなトーンを好み、YouTube Shortsは検索可能なタイトルとキーワード豊富な説明文が有効です。プラットフォーム固有のタイトルフィールド(tiktok_titleinstagram_title)で各キャプションをカスタマイズしてください。TikTok固有のヒントについては、TikTokスケジューリングガイドをご覧ください。

無料プランはありますか?

はい。Upload-Postには月10回のアップロードを含む無料プランがあり、すべての機能(スケジューリング、キュー、クロスポスト、YouTube固有パラメータ)が無料プランを含むすべてのプランで利用できます。クレジットカード不要で始められます。より多くのボリュームが必要な場合、有料プランは手頃な価格でスケールします。HootsuiteBufferのようなツールと比較して、APIファーストのアプローチはより低コストではるかに高い柔軟性を提供します。

今すぐYouTube Shortsの自動投稿を始めましょう

1回のAPI呼び出しでShortsをYouTube、TikTok、Instagramにアップロード、スケジュール、クロスポスト。キューを設定すれば、あとはシステムにお任せです。

クレジットカード不要。無料アップロード10回付き。