ガイド

SNSへの動画一括アップロード方法

フォルダに50本の動画があるとします。製品デモ、クライアント向けリール、AI生成クリップなどかもしれません。各プラットフォームに1つずつアップロードしていたら何時間もかかります。ここでは、スクリプト、キューシステム、ビジュアル自動化ツールを使って数分で完了する方法を紹介します。

基本的な流れ: ループ、アップロード、キュー

考え方はシンプルです。動画ファイルのリストを取得し、ループして、1つずつソーシャルメディアAPIに送信します。一度に50本投稿してフォロワーを圧倒しないよう、キューシステムを使って1週間を通じた最適な時間帯に分散配信します。

技術レベルに応じて3つの方法があります:

  1. PythonまたはBashスクリプト: 完全なコントロールが可能
  2. n8n + Google Drive: ビジュアルなノーコードワークフロー
  3. Make.com: 別のインターフェースでの同様の自動化

3つすべてを順に見ていきましょう。

方法1: Pythonバッチアップロードスクリプト

最も柔軟なオプションです。動画フォルダを指定すると、キューを有効にして各動画をアップロードします。まずSDKをインストールしてください:

pip install upload-post

次にこのスクリプトを実行します:

import os
import glob
from upload_post import UploadPostClient

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

video_folder = "/path/to/your/videos"
videos = glob.glob(os.path.join(video_folder, "*.mp4"))

print(f"アップロードする動画が{len(videos)}件見つかりました")

for i, video_path in enumerate(videos):
    filename = os.path.basename(video_path)
    title = filename.replace(".mp4", "").replace("-", " ").replace("_", " ")

    try:
        response = client.upload_video(
            video_path=video_path,
            title=title,
            user="mybrand",
            platforms=["tiktok", "instagram", "youtube"],
            add_to_queue=True,
            async_upload=True
        )
        job_id = response.get("job_id", "async")
        print(f"[{i+1}/{len(videos)}] Queued: {filename} (Job: {job_id})")
    except Exception as e:
        print(f"[{i+1}/{len(videos)}] Failed: {filename} - {e}")

print("すべての動画がキューに入っています!")

このスクリプトのポイントをいくつか説明します。add_to_queue=Trueフラグにより、各動画はキュースケジュールの次の空きスロットに割り当てられます。async_upload=Trueにより、すべてのプラットフォームの処理が完了するのを待たずに各コールが即座に返されます。一括操作では、59秒以上かかる同期アップロードは自動的に非同期に切り替わるため、これは重要です。

方法1b: cURLを使ったBashスクリプト

コマンドラインが好みでPythonをインストールしたくない場合は、シンプルなBashループでも同じことができます:

#!/bin/bash
API_KEY="your-api-key-here"
VIDEO_DIR="/path/to/your/videos"

for video in "$VIDEO_DIR"/*.mp4; do
    filename=$(basename "$video" .mp4)
    echo "Uploading: $filename"

    curl -s -X POST https://api.upload-post.com/api/upload \
      -H "認可: Apikey $API_KEY" \
      -F "video=@$video" \
      -F "user=mybrand" \
      -F "title=$filename" \
      -F "platform[]=tiktok" \
      -F "platform[]=instagram" \
      -F "add_to_queue=true" \
      -F "async_upload=true"

    echo ""
done

echo "完了!すべての動画がキューに入っています。"

方法2: n8n + Google Drive(ノーコード)

フォルダに新しい動画が追加されるたびに自動実行されるビジュアルワークフローを作りたい場合に最適です。流れは次のとおりです: Google Driveが新しいファイルを検出 → ダウンロード → Upload-Postに送信 → キューに追加して配信。

n8nインスタンスにワンクリックでインポートできるGoogle DriveからSNSへのテンプレートを用意しています。AI生成の説明文とAirtableトラッキングを使ったより高度なバージョンもあります。

自分で構築したい場合は、n8n連携ガイドでステップバイステップのセットアップを確認してください。ポイントは、HTTP Requestノードをマルチパートフォームデータで設定し、Google DriveノードからバイナリファイルをParsすることです。

AI活用のコンテンツには、AIキャプション付き動画の一括自動配信テンプレートもあります。

方法3: Make.comの自動化

Make.com(旧Integromat)も同様に機能します。Google DriveまたはDropboxのトリガーでシナリオを作成し、Upload-Post API用に設定したHTTPモジュールに接続して、スケジュールまたは新しいファイルの検出時に実行するよう設定します。

HTTPモジュールのコンテンツタイプをmultipart/form-dataに設定し、カスタムヘッダーにAPIキーを指定する必要があります。プリビルトのシナリオはMake.comテンプレートをご覧ください。

アップロード前に動画を処理する

ソース動画が正しいフォーマットでないこともあります。長すぎたり、アスペクト比が違っていたり、TikTokが受け付けないコーデックでエンコードされていたり。ローカルで処理する代わりに、Upload-Post FFmpegエディターAPIを使ってクラウド上で動画を変換してから配信できます。

例えば、横長の動画を縦型9:16にクロップしたり、YouTube Shorts用に60秒にトリミングしたり、最大互換性のためにH.264で再エンコードしたりできます:

curl -X POST https://api.upload-post.com/api/uploadposts/ffmpeg/jobs/upload \
  -H "認可: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F 'full_command=ffmpeg -i {input} -vf "crop=ih*9/16:ih,scale=1080:1920" -c:v libx264 -preset medium -t 60 {output}' \
  -F "output_extension=mp4"

FFmpeg APIはすべてのプランに含まれています(無料プランで月30分、Businessプランで最大10,000分)。

一括アップロードの監視

大量の動画をアップロードする場合、何が成功して何が失敗したかを追跡する必要があります。方法は2つあります:

ステータスエンドポイントのポーリング

curl https://api.upload-post.com/api/uploadposts/status?request_id=abc123 \
  -H "認可: Apikey your-api-key-here"

レスポンスにはcompletedtotalのカウントが含まれており、リアルタイムで進行状況を確認できます。

Webhookの設定

ハンズフリーで管理したい場合は、ウェブフックURLを設定すると、プラットフォームへのアップロードが完了するたびにサーバーに通知が届きます。各通知にはプラットフォーム名、投稿URL、成功/エラーステータスが含まれます。

アップロード履歴

履歴エンドポイントで、これまでにアップロードしたすべてを確認することもできます:

curl "https://api.upload-post.com/api/uploadposts/history?page=1&limit=50" \
  -H "認可: Apikey your-api-key-here"

各エントリにはプラットフォーム、タイムスタンプ、成功ステータス、投稿URL、ファイルサイズ、エラーメッセージが表示されます。レポート作成やアップロードの監査に便利です。

大量アップロードのコツ

  • 一括操作では必ずasync_upload=trueを使用してください。同期アップロードは単一投稿には問題ありませんが、次のファイルを送る前に10プラットフォームの処理が完了するのを待つのは非効率です。
  • 特定のタイミングが必要でない限り、固定日時ではなくキューを使いましょう。キューはコンテンツを均等に分散し、プラットフォームの1日あたりの上限も自動的に考慮します。
  • 1日あたりの上限に注意してください。TikTokは1日15本、YouTubeは10本までです。TikTok動画を50本キューに入れると、自動的に複数日にわたって分散されます。
  • ファイル名をわかりやすくつけましょう。上記のスクリプトのようにファイル名を投稿タイトルとして使用する場合、「VID_20250615_001.mp4」よりも「summer-collection-lookbook.mp4」の方がはるかに見栄えが良いです。
  • キャプションを変えたい場合は、プラットフォーム固有のタイトルを使いましょう。tiktok_titleで短いキャプション、youtube_descriptionでSEOキーワード入りの長い説明文を設定できます。

よくある質問

一度にアップロードできる動画数に上限はありますか?

送信できるAPIリクエスト数に厳密な上限はありません。ただし、各プラットフォームには1日あたりのアップロード上限があります(TikTokは15、YouTubeは10など)。キューシステムが自動的に日をまたいで分散してくれます。

ローカルファイルの代わりにURLから動画をアップロードできますか?

はい。-F "[email protected]"でファイルを渡す代わりに、公開URLをvideoパラメータとして渡せます。Upload-Postがダウンロードして処理します。

最大ファイルサイズは?

プラットフォームによって異なります。YouTubeは最大256GB、TikTokは最大4GB、Instagramは最大300MBです。詳しくは動画要件ページをご確認ください。

すべての動画を一度にアップロード

手動アップロードに何時間も費やすのはやめましょう。コンテンツをまとめて、APIに送信して、あとはキューにお任せ。セットアップは5分です。

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