ガイド

APIでSNS投稿をスケジュールする方法

スケジューリングツールは便利ですが、数百件の投稿を自動化したい、自社システムと連携したい、開発中のプロダクトにスケジュール機能を組み込みたい場合には限界があります。このガイドでは、固定日時、キューシステム、タイムゾーン処理を含む、APIによるコンテンツスケジューリングを詳しく解説します。

コンテンツをスケジュールする2つの方法

Upload-Postにはスケジューリングの2つのアプローチがあります。scheduled_dateパラメータで正確な日時を設定する方法と、キューシステムを使ってシステムに最適な時間を選ばせる方法です。どちらも動画アップロード、写真アップロード、テキスト投稿のすべてのエンドポイントで使用できます。

オプションA: 特定の日時にスケジュール

任意のアップロードリクエストにscheduled_dateパラメータを追加します。形式はISO-8601で、最大365日先まで予約できます。

curl -X POST https://api.upload-post.com/api/upload \
  -H "認可: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=Coming soon... stay tuned!" \
  -F "platform[]=tiktok" \
  -F "platform[]=instagram" \
  -F "scheduled_date=2025-09-22T10:00:00Z" \
  -F "timezone=Europe/Madrid"

いくつか重要なポイントがあります。日時はデフォルトでUTCですが、timezoneパラメータをIANA形式(アメリカ/ニューヨークヨーロッパ/ロンドンアジア/東京など)で指定すれば、正しい現地時間に投稿されます。タイムゾーンの計算を自分でする必要はありません。

投稿のスケジュールが成功すると、APIは202ステータスとjob_idを含むレスポンスを返します:

{
  "success": true,
  "job_id": "scheduler_job_abc123",
  "scheduled_date": "2025-09-22T10:00:00Z"
}

このjob_idは、後で投稿を編集またはキャンセルする際に必要になるので保存しておいてください。

オプションB: キューシステムを使う

キューは、正確な時間を指定せずに一定のペースで投稿したい場合に最適です。日時を選ぶ代わりにadd_to_queue=trueを設定すると、Upload-Postが設定済みのスケジュールに基づいて次の空きスロットを自動的に割り当てます。

キューの設定

まず、キューの設定を行います。投稿する曜日と時間帯を定義します:

curl -X POST https://api.upload-post.com/api/uploadposts/queue/settings \
  -H "認可: Apikey your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "timezone": "アメリカ/ニューヨーク",
    "slots": [
      { "hour": 9, "minute": 0 },
      { "hour": 12, "minute": 30 },
      { "hour": 17, "minute": 0 }
    ],
    "days": [0, 1, 2, 3, 4]
  }'

この例では、月曜から金曜の午前9時、午後12時30分、午後5時(ニューヨーク時間)に投稿されます。1日あたり最大24スロットまで設定できます。

キューにコンテンツを追加する

curl -X POST https://api.upload-post.com/api/upload \
  -H "認可: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=Monday motivation" \
  -F "platform[]=tiktok" \
  -F "platform[]=instagram" \
  -F "add_to_queue=true"

Upload-Postが自動的に次の空きスロットに投稿を割り当てます。例えば水曜の午後2時にリクエストした場合、その日の午後5時にスケジュールされます。水曜のスロットがすべて埋まっていれば、木曜の午前9時に移動します。

今後のキュースロットをプレビュー

コンテンツをキューに追加する前に、どの時間帯が空いているか確認したい場合は、プレビューエンドポイントを使います:

curl https://api.upload-post.com/api/uploadposts/queue/preview?count=10 \
  -H "認可: Apikey your-api-key-here"

次の10個の空きスロットと正確な日時が返されます。一度に最大50件まで取得できます。

スケジュール済み投稿の管理

コンテンツがスケジュールされると、APIを通じて完全にコントロールできます。

スケジュール済み投稿の一覧表示

curl https://api.upload-post.com/api/uploadposts/schedule \
  -H "認可: Apikey your-api-key-here"

保留中のジョブの配列が返されます。各ジョブにはjob_idscheduled_date、プラットフォーム詳細、コンテンツのプレビューURLが含まれます。

スケジュール済み投稿の編集

投稿日時の変更やキャプションの更新が必要な場合は、PATCHリクエストを使います:

curl -X PATCH https://api.upload-post.com/api/uploadposts/schedule/scheduler_job_abc123 \
  -H "認可: Apikey your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "scheduled_date": "2025-09-25T14:00:00Z",
    "title": "より良いハッシュタグを使用した更新されたキャプション"
  }'

スケジュール済み投稿のキャンセル

curl -X DELETE https://api.upload-post.com/api/uploadposts/schedule/scheduler_job_abc123 \
  -H "認可: Apikey your-api-key-here"

投稿とアップロード済みのアセットは即座に削除されます。

キューでコンテンツカレンダーを構築する

多くの代理店が使っている実用的なワークフローを紹介します。月曜日にコンテンツをまとめて制作し、すべてキューにアップロードすると、システムが1週間を通して自動的に配信してくれます。水曜の午前9時にオンラインで投稿ボタンを押す必要はありません。

これはn8nMake.comと組み合わせると特に強力です。例えば、Google Driveフォルダの新しいファイルが自動的にキューに追加されるワークフローを設定できます。すぐに使えるGoogle Sheetsスケジューリング用n8nテンプレートもご覧ください。

年間を通じた重要な日程のコンテンツ企画には、ソーシャルメディアカレンダーも便利です。

Pythonでスケジュール

from upload_post import UploadPostClient
from datetime import datetime, timedelta

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

# Schedule a video for tomorrow at 10 AM Madrid time
publish_date = (datetime.now() + timedelta(days=1)).replace(
    hour=10, minute=0, second=0
)

response = client.upload_video(
    video_path="/path/to/video.mp4",
    title="Pythonからスケジュールされました",
    user="mybrand",
    platforms=["tiktok", "instagram", "youtube"],
    scheduled_date=publish_date.isoformat(),
    timezone="Europe/Madrid"
)

print(f"スケジュールされました!ジョブID: {response['job_id']}")

プラットフォーム別の1日あたりアップロード上限

大量のコンテンツをスケジュールする際は、各プラットフォームが1日あたりのアップロード上限を設けていることに注意してください。これは接続アカウントごとの24時間ローリングウィンドウです:

プラットフォーム 1日の上限
TikTok15アップロード
YouTube10アップロード
Pinterest20アップロード
Facebook25アップロード
Reddit40アップロード
Instagram50アップロード
X(Twitter)50アップロード
スレッド50アップロード
Bluesky50アップロード
LinkedIn150アップロード

キューシステムはこれらの上限を自動的に考慮し、どのプラットフォームでも過剰なスケジューリングは行いません。

よくある質問

同じコンテンツを異なるプラットフォームで異なる時間にスケジュールできますか?

1つのリクエストでは対応していませんが、各プラットフォームに異なるscheduled_dateを設定した別々のリクエストを送ることができます。または、自動的に分散配信するキューシステムをご利用ください。

スケジュール済みの投稿が失敗した場合はどうなりますか?

ウェブフック(設定済みの場合)を通じてエラーの詳細を含む通知が届きます。GET /api/uploadposts/status?job_id=your_job_idエンドポイントでもステータスを確認できます。

ノーコードツールとスケジューリングを組み合わせることはできますか?

もちろんです。n8nMake.comのどちらでも、HTTPリクエストモジュールでscheduled_dateadd_to_queueパラメータを送信できます。スプレッドシートからデータを読み込んで、すべてを自動的にスケジュールするビジュアルワークフローを構築できます。

APIでコンテンツカレンダーを構築しましょう

数分で数週間分のコンテンツをスケジュールできます。一度設定すれば、すべてのプラットフォームで適切な時間に投稿が公開されます。

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