بنقرة واحدة
video-upload
Use when コレクションの動画が完成し、YouTubeへのアップロード自動化が必要なとき。Complete Collection のアップロードと live 移行を実行
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Use when コレクションの動画が完成し、YouTubeへのアップロード自動化が必要なとき。Complete Collection のアップロードと live 移行を実行
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Use when まだコレクションディレクトリが存在せず、新規コレクション制作を立ち上げたいとき。「新しいコレクション始めたい」「制作開始」「新規ワークフロー」など、企画選択からディレクトリ作成・素材準備までを行う初期化フェーズで使用する。既存コレクションの進行は /wf-next
Use when /suno で生成したプロンプトを Suno UI で曲にしたあと、そのプレイリストを DL + クロスフェードマスター化したいとき。前工程: /suno(プロンプト生成 → Suno UI で人手楽曲生成)。プレイリスト URL を指定して MP3 一括 DL + マスター音源を自動生成(次工程: /videoup)。Lyria チャンネルでは /lyria が自動で音源を出力するため本スキルは不要
Use when Suno UI に投入する音楽プロンプトを生成したいとき。SunoAI V5.5 向けの YAML 定義(インストは `tracks_per_collection` で曲数指定の独立 entry 並列、ボーカルは `/suno-lyric` で作成済みの歌詞を前提に pattern × tracks_per_pattern 設計)から suno-prompts.md / suno-prompts.json を作成する(次工程 `/suno-helper` でブラウザ自動生成 + playlist 一括追加、その後 `/masterup` で DL + マスター化)。プロンプト作成・Style 文など Suno 連続生成の前段で使用すること。Lyria チャンネルでは /lyria を使う
Use when コレクションの楽曲を DistroKid 配信用に準備し、distrokid-helper Chrome 拡張へ渡すローカルサーバーを起動したいとき(30-distrokid 生成 / disc 分割 / metadata.md / ジャケット 3000×3000 新規生成 / yt-collection-serve 起動)。『DistroKid 準備』『配信準備』『アルバム化』『distrokid-helper』で発動。DistroKid Web への転記・アップロード操作そのものは Chrome 拡張側の責務
Use when YouTube コミュニティ投稿の下書きを生成したいとき。`--type` で behind-the-scenes / next-teaser / poll (deprecated) / day-of-reminder / weekly-feedback を切り替え、本文を生成して `pbcopy` でクリップボードに送る。「コミュニティ投稿作って」「community post」「day-of reminder」「sunday vote」「weekly feedback」「視聴者投票」「公開当日リマインダー」など、YouTube Studio に手動投稿するコミュニティ投稿の下書きが必要な場面で使用すること
Use when YouTube コミュニティ投稿用テキストを生成し、クリップボードコピーと YouTube Studio 起動まで行いたいとき。固定テンプレ運用(動画 1 本 = 投稿 1 本)の Flow365 TTP。「コミュニティ投稿」「community post」「投稿準備」「Studio で投稿」「コミュニティタブ」など、動画公開と前後する投稿準備に関わる場面で使用すること。`/video-upload` の最終ステップから自動で呼ばれる。
| name | video-upload |
| description | Use when コレクションの動画が完成し、YouTubeへのアップロード自動化が必要なとき。Complete Collection のアップロードと live 移行を実行。動画ファイルの生成(MP3→MP4)は /videoup |
Complete Collection を YouTube にアップロードし、planning/ → live/ へ自動移行します。/video-description スキルで事前生成した概要欄・タイトル・タグを使用します。
config/channel/ が存在すること(load_config() でロード可能)。
存在しない場合、ユーザーに確認:
/channel-new を案内/channel-new(既存チャンネル取り込みモード)を案内| 引数 | 説明 | 例 |
|---|---|---|
$ARGUMENTS | コレクションディレクトリパス(省略可) | /video-upload collections/planning/20260304-clm-fairy-forest-collection |
| 未指定 | collections/planning/ から自動検出 | /video-upload |
実行前に config/channel/youtube.json の content_model を読み取り、チャンネルに適応する:
| content_model.type | 動作 | 対応言語の出所 |
|---|---|---|
collection | Complete Collection アップロード → live 移動(単一動画) | config/localizations.json / load_config().localizations.* |
single_release | 言語ごとに別動画をアップロード | content_model.languages(発音言語リスト) |
collection_uploader.py を使用config/localizations.json の supported_languages が Canonical ソース(v2.0.0 以降は単一ソース化)supported_languages が 2 言語以上の場合のみ scene_phrases / 概要欄多言語版 / YouTube localization メタデータを生成・検証する。単一言語チャンネルでは scene_phrases は不要config/channel/playlists.json の playlists.jp / playlists.en に自動追加uv run yt-upload-auto を使用content_model.languages が発音言語リストとして解釈される(collection 型とは意味が異なる)uv run yt-upload-collection --plan は collection 専用の事前確認であり、single_release 型では使わない。公開時刻は uv run yt-upload-auto の実アップロード経路(metadata の publish_at または config/channel/youtube.json の既定時刻 fallback)に従うあなたは YouTube アップロード自動化スペシャリストです。YouTube Data API v3、OAuth 2.0 認証、Collection Uploader の運用に精通しています。
$ARGUMENTS
引数が指定されている場合はそのディレクトリを、未指定の場合は collections/planning/ 配下のコレクションを自動検出します。
アップロード前に以下を確認する(詳細は references/posting-checklist.md 参照):
01-master/*.mp4 または 03-Individual-movie/*master*.mp4 — 存在しなければエラー終了10-assets/thumbnail.jpg → 10-assets/thumbnail.png の候補順で探索 — いずれも存在しなければエラー終了。main.png/jpg は textless 動画背景なので upload thumbnail には使わない20-documentation/descriptions.md — 存在しない場合は /video-description スキルを実行して自動生成する(対象コレクションパスを引き継ぐ)。生成完了後にアップロードフローへ進むconfig/channel/playlists.json が存在する場合は /playlist スキルで uv run yt-playlist-status を実行する。(未作成) があるときは、初投稿前に uv run yt-playlist-manager --init --dry-run → ユーザー確認 → uv run yt-playlist-manager --init で playlist ID を作成・書き戻してからアップロードへ進むcontent_model.type = "collection" のとき、以下を自動実行:
uv run yt-upload-collection --plan [-c NAME] を実行し、実際の公開挙動を確定する。config/schedule_config.json の予約設定や config/channel/youtube.json の既定時刻により、privacy=public でも status.publishAt が設定される場合があるため、plan 結果なしに「即時公開」と案内しないcollections/planning/ → collections/live/config/channel/community.json が存在する場合、/community-post を呼び出してテンプレ展開 → pbcopy → YouTube Studio 起動まで自動で行う(投稿ボタン押下は Studio 上で手動)。community.json が無いチャンネルではスキップメタデータは descriptions.md から title / description / tags を優先使用。存在しない場合は BAHMetadataGenerator で自動生成にフォールバック。
プレイリストへの動画追加は後続のアップロード経路が担う。collection 型では collection_uploader 内部の assign_video() に任せる。初投稿時に /playlist で行うのは未作成プレイリストの作成と playlist_id 書き戻しであり、個別動画の手動 assign ではない。
content_model.type = "single_release" のときは uv run yt-upload-auto を使い、言語ごとに別動画をアップロードする。uv run yt-upload-collection --plan は collection uploader の公開予定計算なので、この分岐では実行しない。公開時刻を案内する場合は、uv run yt-upload-auto が読む metadata の publish_at と config/channel/youtube.json の既定時刻 fallback に基づくことを明示し、collection 用 plan 結果を流用しない。
# Complete Collection アップロード(デフォルト動作)
uv run yt-upload-collection [-c NAME]
# 進捗確認
uv run yt-upload-collection --status [-c NAME]
# スケジュール計算(ドライラン)
uv run yt-upload-collection --plan [-c NAME]
# single_release アップロード
uv run yt-upload-auto
20-documentation/upload_tracking.json (v3 スキーマ) へのログ保存references/posting-checklist.md を参照status.publishAt)のセットアップは references/scheduled-publish.md を参照CC は config/schedule_config.json の schedule セクションに応じて即時公開と予約公開を切り替える。
schedule 内に設定する:
auto_schedule_enabled: true(明示的に有効化)cadence: ["tue", "thu", "sat"] のような曜日リスト(暗黙オプトイン)publish_time: "20:00" のような時刻指定(暗黙オプトイン)config/channel/youtube.json の youtube.default_publish_time / default_publish_timezone を設定すると、schedule_config.json で予約設定が無い場合の fallback として次回の予約時刻を自動適用するauto_schedule_enabled: false を明示すれば、他のキーが設定されていても即時公開を強制するcollection 型では、ユーザーに公開方法を提示する前の挙動確認は必ず --plan を実行する。--plan はアップロード API は叩かないが、予約日時計算のため YouTube read API を呼ぶ場合がある:
uv run yt-upload-collection --plan -c <NAME>
# → "📅 公開予定: 2026-06-15T20:00:00+09:00" が出れば予約公開、
# "📅 公開設定: 即時公開 (public)" なら即時公開、
# "📅 公開設定: 限定公開 (unlisted)" / "📅 公開設定: 非公開 (private)" ならその公開範囲でアップロード
「即時公開」と断定してよいのは、plan 結果が 📅 公開設定: 即時公開 (public) の場合のみ。📅 公開設定: 限定公開 (unlisted) / 📅 公開設定: 非公開 (private) が出た場合は、その公開範囲でアップロードされることを明示する。📅 公開予定: <日時> が出た場合は「今アップロード → <日時> に自動で一般公開」と、実際の公開予定時刻を明示して案内する。
詳細とトラブルシュート("設定したのに即時公開された" の早期発見手順)は references/scheduled-publish.md を参照。
アップローダーが以下を自動設定する(手動指定不要):
selfDeclaredMadeForKids: false — 子ども向けコンテンツではないcontainsSyntheticMedia: true — AI 生成コンテンツの申告config/channel/content.json の tags.base 参照)アップロードは upload_core の再開可能アップロードを使うため、ネットワーク中断後はコマンド再実行で途中から続行できる。
| 状況 | 兆候 | 対処 |
|---|---|---|
| OAuth 未認証/失効 | auth.oauth_handler の FileNotFoundError(client_secrets.json 不在)/ AuthError / HTTP 403 | 初回認証フローを再実行。403 が続く場合は auth/token.json を削除しスコープを確認のうえ再認証 |
| YouTube quota / rate | HTTP 429 / 403 quotaExceeded | 日次 quota(既定 10,000 units・太平洋時間 0 時リセット)を待つか呼び出しを抑える |
| API 障害 / サービス停止 | HTTP 503 / タイムアウト | Google Cloud / YouTube のステータスを確認し、時間を置いて再実行 |
/video-description — アップロード前に descriptions.md を生成/playlist — 初投稿前のプレイリスト初期化、状態確認、手動 assign、クリーンアップ(アップロード時の自動 assign は本スキル内で実行される)/metadata-audit — アップロード後のローカル ↔ YouTube 整合性監査/community-post — アップロード完了後にコミュニティ投稿テンプレを展開して Studio を起動(config/channel/community.json がある場合のみ)