mcpField
V
video-publish

video-publish

github.com/melvynxマーケティング・グロース6446 回インストール1 週間前に更新
リポジトリ

video-publish について

video-publish は、完成動画をクリエイター自身のアカウントへ投稿する手順を案内するスキルです。動画ごとの計画に明示的な承認を求め、Treg または手動で投稿できます。

主な機能

  1. 01形式と投稿済み記録の確認
  2. 02SNS向け動画とカバーの準備
  3. 03タイトルと投稿文の作成
  4. 04計画を提示して承認を待機
  5. 05Treg または手動で投稿

活用シーン

  1. 01YouTube、Instagram、TikTok へショートを投稿
  2. 02横長の長尺動画を YouTube に投稿
  3. 03動画の投稿文とカバーを準備
  4. 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. 動画を選ぶ

次のうち、最初に該当したものを選びます。

  1. 指定されたパス、スラッグ、またはタイトル:<edit>/final.mp4。
  2. この会話中に完成した動画。
  3. 該当なし:最新の 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
    
  • 接続:投稿するプラットフォームだけを選びます。それぞれのプラットフォームのログイン画面が開きます。
    treg connections connect --provider instagram --capability post
    treg connections connect --provider tiktok --capability post
    treg connections connect --provider youtube --capability post
    
    Instagram を利用するにはプロアカウントが必要です(クリエイターまたはビジネス。アプリの設定から無料で切り替えられます)。

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.mp4
    
    サイズとデコード可能であることを確認します:ffmpeg -v error -i <edit>/social.mp4 -f null -。
  • カバー画像:常に <edit>/cover.jpg を用意します。これがないと、Instagram はフレーム0を使用するため、まばたきの瞬間や何も映っていないフレームになることがよくあります。動画のフックから選びます。目を開けた顔、またはフックのカード全体が映っているものにします。最初の3秒のコンタクトシートを作成して読み取り、選んだ時刻 <t> のフレームを抽出します。
    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
    
    縦型:重要な映像を中央の3:4の範囲(y 240~1680)内に収めます。プロフィールのグリッド表示ではこの範囲にトリミングされます。長尺動画:1280x720 のサムネイルが適しています。作成には /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 リール

  1. ファイルをホストします(各ファイル最大 30 MB、7 日間)。treg host <edit>/social.mp4 と treg host <edit>/cover.jpg を実行すると、公開 URL が出力されます。
  2. instagram.instagram.media.container.create を実行し、ig_user_id(treg connections ls にある Instagram の resource_ref)、media_type=REELS、video_url、cover_url、caption を指定します。
  3. FINISHED になるまで、10 秒ごとに instagram.instagram.media.container.status をポーリングします(ERROR の場合はその内容を提示し、Instagram の処理を停止します)。
  4. コンテナー ID を指定して instagram.instagram.post.publish を実行します。次に、その permalink を取得します(fields=id,permalink を指定して instagram.instagram.user.posts を実行し、最新の投稿を確認します)。

TikTok

  1. tiktok.tiktok.creator.info を実行し、利用可能なプライバシー設定を確認します。
  2. キャプション、一覧にある privacy_level(選択肢にあれば公開)、カバーの時刻をミリ秒で指定した video_cover_timestamp_ms(TikTok は画像ではなく動画のフレームを使います)、およびファイルサイズを単一のチャンクとして指定した source_info FILE_UPLOAD を使って、tiktok.tiktok.video.publish.init を実行します。
  3. social.mp4 を、返された upload_url に Content-Type: video/mp4 と Content-Range: bytes 0-<size-1>/<size> を指定して PUT します。
  4. 公開されるまで tiktok.tiktok.publish.status をポーリングします。

unaudited_client_can_only_post_to_private_accounts と回答された場合(または選択肢が SELF_ONLY のみの場合)は、代わりに tiktok.tiktok.video.inbox.init を使って TikTok の受信箱に送信します(同じファイルをアップロードし、キャプションは付けません)。24 時間以内に TikTok を開き、キャプションを貼り付けて投稿するよう伝えます。

YouTube

  1. 日時指定の場合は uploadType=resumable、スニペット(タイトル、説明)、status {"privacyStatus": "private", "selfDeclaredMadeForKids": false}、および "publishAt": "<UTC ISO time>" を指定します(今すぐ投稿する場合は "public")。これらを使って youtube.youtube.video.upload を実行します。
  2. 返されたセッション URL に final.mp4 を PUT します。
  3. 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 では、アプリの監査が完了するまで、新しいサードパーティ製アプリからの投稿は非公開になります。受信トレイルートを使えば、この制限を回避できます。
  • プラットフォーム側で動画が拒否されることがあります(長さ、形式、音楽の権利など)。エラーはそのまま表示されます。手動ルートなら常に投稿できます。
  • 音楽を含め、クリエイター自身が所有する、または使用権を持つ動画のみを投稿してください。

コメント