TikTok投稿を特定の時間にスケジュールする
最も直接的な方法は、正確な公開日時を設定することです。アップロードリクエストにscheduled_dateパラメータ(ISO-8601形式)とtimezone(IANA形式)を追加します。APIは最大365日先の日付を受け付けます。
以下は、TikTok動画をニューヨーク時間の9月22日午前10時にスケジュールし、プライバシーを公開、デュエットを無効にする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=Morning routine that changed everything #fyp #routine" \
-F "platform[]=tiktok" \
-F "scheduled_date=2025-09-22T10:00:00Z" \
-F "timezone=America/New_York" \
-F "privacy_level=PUBLIC" \
-F "disable_duet=false" \
-F "disable_comment=false" \
-F "disable_stitch=false"
投稿のスケジュールが成功すると、APIは202ステータスコードとjob_idを返します:
{
"success": true,
"job_id": "scheduler_job_abc123",
"scheduled_date": "2025-09-22T10:00:00Z"
}
このjob_idを保存してください。後で投稿の編集、リスケジュール、キャンセルに必要になります。保留中のスケジュール済み投稿はいつでも一覧表示できます:
curl https://api.upload-post.com/api/uploadposts/schedule \
-H "認可: Apikey your-api-key-here"
これにより、すべての保留中ジョブのjob_id、scheduled_date、プラットフォーム詳細、コンテンツのプレビューURLを含む配列が返されます。すべてのプラットフォームでのスケジューリングの詳細については、一般的なスケジューリングガイドをご覧ください。
キューを使ったハンズフリースケジューリング
数件の投稿であれば正確な日時指定が有効です。しかし、コンテンツを大量に制作している場合、各動画の時間を手動で選ぶのはすぐに面倒になります。キューシステムがこの問題を解決します。好みの投稿スケジュールを一度設定すれば、追加するすべてのコンテンツが自動的に次の空きスロットに割り当てられます。
キュースケジュールを設定する
まず、コンテンツを公開したい時間をシステムに伝えます。この例では、ニューヨークのタイムゾーンで月曜から金曜まで1日3スロットを設定します:
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": 8, "minute": 0 },
{ "hour": 12, "minute": 30 },
{ "hour": 18, "minute": 0 }
],
"days": [0, 1, 2, 3, 4]
}' これにより、週15スロットのTikTok投稿枠が確保されます: 月曜から金曜の午前8時、午後12時30分、午後6時。1日最大24スロットまで定義でき、曜日5と6を追加すれば週末も含められます。
コンテンツをキューに追加する
ここで、scheduled_dateを渡す代わりにadd_to_queue=trueを設定します。システムが次の空きスロットを自動的に埋めます:
curl -X POST https://api.upload-post.com/api/upload \
-H "認可: Apikey your-api-key-here" \
-F "[email protected]" \
-F "user=mybrand" \
-F "title=POV: you finally automated your TikTok posting #devlife" \
-F "platform[]=tiktok" \
-F "add_to_queue=true" \
-F "privacy_level=PUBLIC" 水曜日の午後2時であれば、この動画は同日の午後6時のスロットに入ります。水曜のスロットがすべて埋まっている場合は、木曜の午前8時に移動します。コンテンツを追加する前に、次の空きスロットをプレビューできます:
curl https://api.upload-post.com/api/uploadposts/queue/preview?count=10 \
-H "認可: Apikey your-api-key-here" これにより、次の10個の空きスロットの正確な日時が返されるため、キューに入れた各投稿がいつ公開されるか正確に把握できます。
知っておくべきTikTok固有の設定
TikTokのAPIには他のプラットフォームにはないパラメータがいくつかあります。オプションのものもありますが、特定の状況では法的に必須のものもあります。以下が完全なリファレンスです:
| パラメータ | 値 | 説明 |
|---|---|---|
privacy_level | "公開", "FRIENDS", "PRIVATE" | 動画を閲覧できるユーザーを制御します。省略した場合、TikTokアカウントの設定がデフォルトとなります。 |
disable_duet | true / false | 他のユーザーがあなたの動画でデュエットを作成するのを防ぎます。 |
disable_comment | true / false | 動画へのコメントを無効にします。 |
disable_stitch | true / false | 他のユーザーがあなたの動画をスティッチするのを防ぎます。 |
brand_content_toggle | true / false | 動画をペイドパートナーシップとしてマークします。宣伝費を受けてブランドを宣伝する場合、FTCおよびEU規制により必須です。 |
brand_organic_toggle | true / false | 動画を自社ビジネスの宣伝としてマークします。第三者スポンサーシップではなく、自社の製品やサービスに関するコンテンツの場合に使用します。 |
is_aigc | true / false | コンテンツがAIによって生成または大幅に編集されたことを開示します。TikTokは視聴者向けにラベルを表示する場合があります。 |
tiktok_title | string | プラットフォーム固有のタイトル/キャプション。TikTokのキャプションが他のプラットフォームに送信するメインのtitleフィールドと異なる場合に便利です。 |
cover_timestamp | integer (ms) | 指定したミリ秒の動画フレームをサムネイルとして使用します。例えば5000は5秒目のフレームを選択します。 |
post_mode | "DRAFT", "PUBLISH" | "DRAFT"に設定すると、TikTokに下書きとして動画がアップロードされます(後で確認して手動で公開可能)。デフォルトは"PUBLISH"です。 |
ブランドコンテンツに関する注意: スポンサード コンテンツを制作している場合は、brand_content_toggle=trueを設定する必要があります。これは任意ではありません。米国のFTCおよび同等のEU規制の両方が、有料パートナーシップの明確な開示を要求しています。TikTok側でもこれを強制しており、正しくフラグを設定しないとコンテンツが削除される可能性があります。第三者ブランドではなく自社ビジネスを宣伝している場合は、代わりにbrand_organic_toggle=trueを使用してください。
AI生成コンテンツの場合、is_aigc=trueを設定すると、視聴者に表示される開示ラベルが追加されます。AIコンテンツ規制が進化する中、これを事前にフラグ付けしておくことは良い習慣です。
PythonでTikTok投稿をスケジュールする
Python自動化ガイドでSDKを詳しく解説しています。ここではTikTokの実践的な例を紹介します: フォルダ内のすべての動画を、翌朝から1時間おきに一括スケジュールします。
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/tiktok-videos"
videos = sorted(glob.glob(os.path.join(video_folder, "*.mp4")))
# Start scheduling from tomorrow at 9 AM Eastern
base_time = (datetime.now() + timedelta(days=1)).replace(
hour=9, minute=0, second=0, microsecond=0
)
print(f"Found {len(videos)} videos to schedule")
for i, video_path in enumerate(videos):
publish_time = base_time + timedelta(hours=i)
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"],
scheduled_date=publish_time.isoformat(),
timezone="アメリカ/ニューヨーク",
privacy_level="公開",
disable_duet=False,
disable_comment=False,
cover_timestamp=3000,
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("すべての動画がスケジュールされました!")
このスクリプトは各動画を1時間間隔でスケジュールします。timedeltaを調整して好みの間隔に変更できます。TikTokはアカウントごとに24時間のローリングウィンドウで1日15件のアップロード制限を課していることに注意してください。15件を超える動画がある場合は、複数日に分散させるか、制限を自動的に処理するキューシステムを使用してください。
FFmpeg APIと組み合わせてスケジュール前に動画のリサイズやトリミングを行ったり、ソーシャルメディア記念日カレンダーを使って投稿日をトレンドトピックに合わせることもできます。
ノーコード: n8nでTikTok投稿をスケジュール
コードを書くよりビジュアル自動化を好む場合、n8nは優れた選択肢です。HTTP Requestノードを使ってUpload-Post APIを呼び出し、Google Sheets、Google Drive、Airtable、または手動ボタンからトリガーできます。
基本的なフローは次のようになります:
- トリガーノード: スケジュール、新しいスプレッドシートの行、またはクラウドフォルダの新しいファイルで起動します。
- HTTP Requestノード: APIキー、動画ファイル、タイトル、
platform[]=tiktok、add_to_queue=trueを含むmultipart/form-dataのPOSTリクエストをhttps://api.upload-post.com/api/uploadに送信します。 - オプション: アップロードの成功または失敗時にSlackまたはメール通知を送信します。
ワンクリックでインポートできるn8n用TikTokアップロードテンプレートを用意しています。その他の自動化アイデアはn8nテンプレート一覧をご覧ください。Make.comをお好みの自動化プラットフォームとしてお使いの場合も同様に設定できます。
TikTok動画の要件
スケジュール前に、動画がTikTokの仕様を満たしていることを確認してください。これらの要件を満たさないファイルをアップロードすると、投稿が失敗します。
| 要件 | 仕様 |
|---|---|
| 最大ファイルサイズ | 4 GB |
| 対応フォーマット | MP4, WebM, MOV |
| 推奨アスペクト比 | 9:16(縦型)。1:1と16:9も可能ですが、レターボックスで表示される場合があります。 |
| 解像度 | 1080x1920推奨。最低720p。 |
| 動画の長さ | 1秒から10分 |
| コーデック | H.264推奨。H.265(HEVC)もサポートされています。 |
| 1日のアップロード制限 | アカウントあたり24時間のローリングウィンドウで15動画 |
ソース動画のフォーマットやアスペクト比が正しくない場合、FFmpeg APIで公開前にクラウド上で変換できます。また、YouTube動画をTikTok向けに自動変換することもできます。
よくある質問
TikTok投稿を無料でスケジュールできますか?
はい。Upload-Postには月10回のアップロードを含む無料プランがあり、スケジューリングは無料プランを含むすべてのプランで利用できます。正確な日時での投稿予約やキューシステムを無料で使用できます。より多くのボリュームが必要な場合、有料プランは手頃な価格から始まり、長期契約は不要です。
スケジュールされた投稿の時間にTikTokがダウンしていたらどうなりますか?
Upload-Postは失敗したアップロードを自動的にリトライします。スケジュールされた時間にTikTokのAPIが一時的に利用できない場合、システムはその後数分間にわたって再度公開を試みます。問題が続く場合は、Webhook(設定済みの場合)で通知を受け取るか、GET /api/uploadposts/status?job_id=your_job_idエンドポイントでステータスを確認できます。コンテンツが失われることはありません。
TikTokとInstagramに同時にスケジュールできますか?
もちろんです。同じリクエストで複数のプラットフォームを指定するだけです: platform[]=tiktokとplatform[]=instagram。同じ動画、タイトル、スケジュール日がすべてのプラットフォームに適用されます。プラットフォームごとに異なるキャプションが必要な場合は、TikTok固有のテキストにtiktok_titleパラメータを使用し、メインのtitleフィールドは他のプラットフォームに送信されます。より高度なマルチプラットフォームワークフローについては、動画の一括アップロードガイドをご覧ください。
TikTok投稿は何日先までスケジュールできますか?
最大365日です。scheduled_dateパラメータは1年以内の任意の日付を受け付けます。キューシステムと組み合わせれば、理論上は1回のバッチセッションで1年分のコンテンツを埋めることができます。ほとんどのユーザーは1〜4週間先をスケジュールしており、計画性と柔軟性のバランスが取れています。ソーシャルメディア記念日カレンダーを使えば、年間を通じて重要な日付に合わせたコンテンツ計画に役立ちます。