video-publish について
video-publish は、完成動画をクリエイター自身のアカウントへ投稿する手順を案内するスキルです。動画ごとの計画に明示的な承認を求め、Treg または手動で投稿できます。
主な機能
- 01形式と投稿済み記録の確認
- 02SNS向け動画とカバーの準備
- 03タイトルと投稿文の作成
- 04計画を提示して承認を待機
- 05Treg または手動で投稿
活用シーン
- 01YouTube、Instagram、TikTok へショートを投稿
- 02横長の長尺動画を YouTube に投稿
- 03動画の投稿文とカバーを準備
- 04投稿状況とリンクを記録
MCP 対応
Treg MCP を使い、接続済みのクリエイターアカウントへ投稿できます。Treg の設定が不要な手動手順も記載されています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ melvynx/ video-agent-skills --skill video-publishインストール後、Claude Code で/video-publishを入力して読み込まれたか確認します。
詳細
動画の投稿
完成した動画をクリエイター本人のアカウントに1本投稿します。動画を作成するのは /video-edit です。
ステップ5のプランについて、クリエイター本人から明示的な承認を得るまでは投稿しません。 その承認の対象は、その動画に限られます。
相手の言語で話しかけます。<edit> = video-agent/edits/<slug>/ です。
1. 動画を選ぶ
次のうち、最初に該当したものを選びます。
- 指定されたパス、スラッグ、またはタイトル:
<edit>/final.mp4。 - この会話中に完成した動画。
- 該当なし:最新の
video-agent/edits/*/final.mp4。プラン内でファイル名を伝えます。
次に <edit>/published.md を確認します。すでにファイルがあり、そのプラットフォームへの投稿記録がある場合は、その旨を伝えて終了します(再投稿を希望する場合を除きます)。
ffprobe でフォーマットを確認します。縦型(ショート動画。YouTube Shorts、Reels、TikTok向け)または横型(長尺動画。デフォルトではYouTubeのみ)です。
2. Treg のセットアップ(初回のみ)
Treg は、本人に代わって本人のアカウントに無料で投稿します。次を確認します。
treg --version
treg connections ls
投稿する各プラットフォームが、投稿権限付きで一覧に表示されている必要があります(Instagram は content_publish を含む scopes、TikTok は video.publish、YouTube は youtube.upload または youtube)。
不足している場合は、1行で説明して確認を求めたあと、次を行います。
- インストール(macOS と Linux。Windows では MCP を使用:
claude mcp add --transport http treg https://treg.to/mcp/を実行し、その後/mcpでサインイン):curl -fsSL https://treg.to/install.sh | sh treg login - 接続:投稿するプラットフォームだけを選びます。それぞれのプラットフォームのログイン画面が開きます。
Instagram を利用するにはプロアカウントが必要です(クリエイターまたはビジネス。アプリの設定から無料で切り替えられます)。treg connections connect --provider instagram --capability post treg connections connect --provider tiktok --capability post treg connections connect --provider youtube --capability post
Treg を希望しない場合は、セットアップ不要の手動ルート(6a)を利用できます。
3. ファイル
- マスター:
<edit>/final.mp4。YouTube 用の最高画質です。 - ソーシャル用書き出し(ショート動画のみ):
<edit>/social.mp4。H.264 + AAC、30 MB 未満にします。Treg が Instagram 用にホストできるサイズです(TikTok は最大64 MBを受け付けます)。ファイルがない場合、またはマスターより古い場合は、収まるビットレートで再エンコードします(約28 MB × 8000 ÷ 再生時間(秒)、そこから音声分の160 kb/sを差し引いた値、単位は kb/s):
サイズとデコード可能であることを確認します:ffmpeg -y -i <edit>/final.mp4 -c:v libx264 -preset slow -b:v <rate>k -maxrate <rate>k -bufsize <2x rate>k -pix_fmt yuv420p -c:a aac -b:a 160k -movflags +faststart <edit>/social.mp4ffmpeg -v error -i <edit>/social.mp4 -f null -。 - カバー画像:常に
<edit>/cover.jpgを用意します。これがないと、Instagram はフレーム0を使用するため、まばたきの瞬間や何も映っていないフレームになることがよくあります。動画のフックから選びます。目を開けた顔、またはフックのカード全体が映っているものにします。最初の3秒のコンタクトシートを作成して読み取り、選んだ時刻<t>のフレームを抽出します。
縦型:重要な映像を中央の3:4の範囲(y 240~1680)内に収めます。プロフィールのグリッド表示ではこの範囲にトリミングされます。長尺動画:1280x720 のサムネイルが適しています。作成にはffmpeg -v error -y -ss 0.1 -t 3 -i <edit>/final.mp4 -vf "fps=10,scale=270:-1,tile=6x5" -frames:v 1 video-agent/.tmp/hook-sheet.jpg ffmpeg -v error -y -ss <t> -i <edit>/final.mp4 -frames:v 1 -q:v 2 <edit>/cover.jpg/codex-imagesを提案するか、動画のフレームを使います。
4. テキスト
<edit>/post.md がある場合はその内容(video-edit が作成)、ない場合は動画のスクリプトまたは文字起こしと video-agent/voice.md をもとに、動画と同じ言語で作成します。
- キャプション(Instagram と TikTok):話し言葉のフックをそのまま繰り返さず、興味を引く1行目(最初の125文字が「続きを読む」の前に表示されます)、視聴者が得られる内容を伝える2~4行の短い説明、voice.md に記載された呼びかけ、最後にトピックに関するハッシュタグを3~5個。#fyp は使わず、絵文字を大量に並べないでください。
- TikTok のキャプション:内容を変える必要がある場合のみ作成します(短くする、ハッシュタグを変えるなど)。
- YouTube のタイトル:Shorts は60文字未満、長尺は70文字未満。動画の内容に忠実な、動画の価値を伝えるものにします。
- YouTube の説明:キャプション、長尺動画の場合はチャプター(post.md に記載)、続いて本人のリンク(1度だけ確認し、voice.md に追加します)。
video-script スキルがインストールされている場合は、すべてのテキストに対して人間らしい文章に整える処理(references/humanize.md)を実行します。名前、数字、主張はすべて動画に基づくものとし、新たに追加してはいけません。各テキストに見出しを1つずつ付けて <edit>/post.md に保存します。
5. 計画(必須)
- プラットフォーム:ショート動画は YouTube + Instagram + TikTok、長尺動画は YouTube に投稿します。ほかの指定がある場合はそちらに従います。
- 時刻:指定された時刻(現地時刻と UTC の両方で記載)を使い、指定がなければ今すぐにします。
- プラットフォームごとの投稿方法:Treg(接続済み)または手動です。Instagram と TikTok は Treg で予約投稿できないため、今すぐ投稿します。YouTube は指定日時まで待機させられます(非公開 +
publishAt)。Instagram または TikTok への投稿を後の時刻にする場合は、その時刻にもう一度/video-publishを実行するか、手動に切り替えてアプリの予約投稿機能を使います。
計画を提示し、明確な承認を待ちます。
PLAN · budget-margins · 0:47 · social.mp4 18 MB
Cover: cover.jpg (0.8 s) [shown as an image]
YouTube Shorts · Treg · 2026-10-11 18:00 Paris (16:00 UTC) · private until then
Instagram Reel · Treg · now
TikTok · manual (not connected)
Title: Your margin is lying to you
Caption: ...
Reply yes to publish, or tell me what to change.
計画の変更があった場合は反映し、計画を再度提示します。
6a. 手動
フォルダーを開き(macOS open <edit>、Windows explorer <edit>、Linux xdg-open <edit>)、次の手順を案内します。
- YouTube:studio.youtube.com → 作成 → 動画をアップロード →
final.mp4→post.mdのタイトルと説明 → サムネイルにcover.jpg→ 公開設定 → 予約投稿または公開。 - Instagram:アプリ → + → リール →
social.mp4→ キャプション → カバーを編集 → カメラロールから追加 →cover.jpg→ シェア(またはプロアカウントの詳細設定から予約投稿)。 - TikTok:アプリまたは tiktok.com/upload →
social.mp4→ キャプション → カバーの時刻にカバーを設定 → 投稿(またはウェブで予約投稿)。
6b. Treg
各呼び出しの前に treg catalog get <id> を実行して、正確なパラメーターを確認します(変更される場合があります)。これらはすべて、各自のアカウントで無料で利用できます。stdout のみを保持します(2>/dev/null)。1つのプラットフォームで失敗しても、ほかのプラットフォームの投稿は止めません。
Instagram リール
- ファイルをホストします(各ファイル最大 30 MB、7 日間)。
treg host <edit>/social.mp4とtreg host <edit>/cover.jpgを実行すると、公開 URL が出力されます。 instagram.instagram.media.container.createを実行し、ig_user_id(treg connections lsにある Instagram のresource_ref)、media_type=REELS、video_url、cover_url、captionを指定します。FINISHEDになるまで、10 秒ごとにinstagram.instagram.media.container.statusをポーリングします(ERRORの場合はその内容を提示し、Instagram の処理を停止します)。- コンテナー ID を指定して
instagram.instagram.post.publishを実行します。次に、そのpermalinkを取得します(fields=id,permalinkを指定してinstagram.instagram.user.postsを実行し、最新の投稿を確認します)。
TikTok
tiktok.tiktok.creator.infoを実行し、利用可能なプライバシー設定を確認します。- キャプション、一覧にある
privacy_level(選択肢にあれば公開)、カバーの時刻をミリ秒で指定したvideo_cover_timestamp_ms(TikTok は画像ではなく動画のフレームを使います)、およびファイルサイズを単一のチャンクとして指定したsource_infoFILE_UPLOADを使って、tiktok.tiktok.video.publish.initを実行します。 social.mp4を、返されたupload_urlにContent-Type: video/mp4とContent-Range: bytes 0-<size-1>/<size>を指定して PUT します。- 公開されるまで
tiktok.tiktok.publish.statusをポーリングします。
unaudited_client_can_only_post_to_private_accounts と回答された場合(または選択肢が SELF_ONLY のみの場合)は、代わりに tiktok.tiktok.video.inbox.init を使って TikTok の受信箱に送信します(同じファイルをアップロードし、キャプションは付けません)。24 時間以内に TikTok を開き、キャプションを貼り付けて投稿するよう伝えます。
YouTube
- 日時指定の場合は
uploadType=resumable、スニペット(タイトル、説明)、status{"privacyStatus": "private", "selfDeclaredMadeForKids": false}、および"publishAt": "<UTC ISO time>"を指定します(今すぐ投稿する場合は"public")。これらを使ってyoutube.youtube.video.uploadを実行します。 - 返されたセッション URL に
final.mp4を PUT します。 cover.jpgを使ってyoutube.youtube.video.thumbnail.setを実行します(認証済み YouTube アカウントで利用できます。拒否された場合はその旨を伝えてください)。
回答にセッション URL がない場合は、YouTube の投稿を手動に切り替えます。
7. 記録
<edit>/published.md に、プラットフォームごとに1行で、日付、時刻、投稿方法、公開後のリンク(https://youtube.com/shorts/<id> または https://youtu.be/<id>、リール、TikTok)を記録します。手動の場合は、投稿したと連絡があった時点で記録します。
公開中のコンテンツとリンクを伝え、1 週間後に結果を確認するための /video-audit を提案します。
制限事項
- Instagram と TikTok は Treg 経由で予約投稿できず、すぐに投稿する場合のみ利用できます。各プラットフォームのアプリでは予約投稿できます。
- TikTok では、アプリの監査が完了するまで、新しいサードパーティ製アプリからの投稿は非公開になります。受信トレイルートを使えば、この制限を回避できます。
- プラットフォーム側で動画が拒否されることがあります(長さ、形式、音楽の権利など)。エラーはそのまま表示されます。手動ルートなら常に投稿できます。
- 音楽を含め、クリエイター自身が所有する、または使用権を持つ動画のみを投稿してください。