一键导入
video-description
Use when YouTube 概要欄を Complete Collection 形式で自動生成するとき。「概要欄」「説明文」「SEO最適化」「メタデータ生成」で発動
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when YouTube 概要欄を Complete Collection 形式で自動生成するとき。「概要欄」「説明文」「SEO最適化」「メタデータ生成」で発動
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
| name | video-description |
| description | Use when YouTube 概要欄を Complete Collection 形式で自動生成するとき。「概要欄」「説明文」「SEO最適化」「メタデータ生成」で発動 |
コレクション用の YouTube 概要欄を自動生成します。ファーストビューに情景フックとタイムスタンプ(チャプター)を配置し、シーン描写・Perfect for セクション・Usage & Attribution・ハッシュタグで構成します。
前提確認や Step 1 に入る前に、以下を必ず Read(Codex では同等のファイル閲覧)で開く。SKILL.md の説明や記憶から設定値を推測しない。
.claude/skills/video-description/config.default.yamlconfig/skills/video-description.yaml(存在する場合)読み込み後は youtube_automation.utils.skill_config.load_skill_config("video-description") と同じ deep-merge 前提で、チャンネル上書きを優先して扱う。存在しない override は未設定として扱い、勝手に作成しない。
config/channel/ が存在すること(load_config() でロード可能)。
存在しない場合、ユーザーに確認:
/channel-new を案内/channel-new(既存チャンネル取り込みモード)を案内| 引数 | 説明 | 例 |
|---|---|---|
$ARGUMENTS | コレクションディレクトリパス(省略可) | /video-description collections/planning/20260303-clm-merlin-study-collection/ |
| 未指定 | アクティブなコレクションを自動検出 | /video-description |
Complete Collection 形式(情景フック+タイムスタンプ+Perfect for)で生成する。
ハッシュタグ・CTA・チャンネル URL は config/channel/*.json から取得。
あなたは YouTube 概要欄最適化スペシャリストです。config/channel/*.json からチャンネル名・ジャンル・ハッシュタグ等を読み取り、チャンネルに最適化された概要欄を生成します。
$ARGUMENTS
対象コレクションの workflow-state.json と 20-documentation/suno-prompts.md を読み込み、コレクションのテーマ・雰囲気を把握してから概要欄を生成してください。
ベンチマーク先の概要欄構造を忠実に転写し、自チャンネル用に最小限のカスタマイズだけ加える。 オリジナリティは概要欄ではなくコンテンツで出す。下記の Complete Collection テンプレートはベンチマークデータが一切ない場合のフォールバックに過ぎない。
docs/benchmarks/*.md の 概要欄TTPサンプル セクションを最優先で参照する(再生数 top 3 のサンプルを重点的に)data/benchmark_*.json の channels[].videos[].description を参照するベンチマークの概要欄から以下の要素を そのまま 転写する(文言は自チャンネル向けに書き換えるが、構造・順序・セクション配置は変えない):
| 抽出対象 | 転写方法 |
|---|---|
| 冒頭ハッシュタグの有無と位置 | ベンチマークがタイトル直後にハッシュタグを置いているなら同じ位置に置く |
| 段落構成と段落数 | 段落の数・各段落の役割(情景フック / 音楽説明 / リスニングアドバイス / エンゲージメント質問 / ユースケース / チャンネル紹介)を同じ順序で配置する |
| エンゲージメント質問の挿入位置と数 | ベンチマークが 2 回質問を挟むなら同じ位置に同数挿入する |
| ADHD / 特定ユースケースへの言及パターン | ベンチマークが「Many listeners also use...as ADHD focus music」と書いているなら同じ文脈で同じ構造の文を置く |
| Keywords セクションの有無と量 | ベンチマークにロングテール Keywords セクションがあれば同量のキーワードリストを生成する |
| CTA の語調とスタイル | ベンチマークの CTA 文を語調ごと転写し、チャンネル名だけ差し替える |
| 著作権表記のフォーマット | Ownership / Copyright 表記のスタイルを揃える |
コレクションごとに冒頭フックと音楽説明を固有に書く。 以下は禁止:
冒頭フックは workflow-state.json の planning.music.atmosphere と suno-prompts.md のシーン描写を素材にし、コレクション固有の情景を毎回ゼロから書く。
情景フック+タイムスタンプ+Perfect for 構成のテンプレート。装飾ヘッダー・Usage & Attribution 本文は
config.default.yaml の section_headers / usage_attribution_lines に集約されており、
チャンネル特性に応じて config/skills/video-description.yaml で上書きできる(BGM 系・ゲーム音楽系・ASMR 系などへ展開可能)。
テンプレート本文・ポイント解説は references/description-templates.md の「Complete Collection 概要欄テンプレート」セクションを参照すること(記載値はデフォルトのサンプル)。
02-Individual-music/): metadata_generator.py の analyze_audio_files() で自動計算
yt-generate-master --loop N / --target-duration)で全ループ分のチャプターを展開する場合は generate_timestamps(loops=N) / format_timestamps_text(loops=N) を使う。2 周目以降の開始秒は 1 周目と同じクロスフェード算術で連続計算される。2 周目以降のタイトルは 1 周目と同一になるため、チャプター名をユニークにしたいチャンネルでは各行の loop フィールド(1 始まり)を手掛かりに LLM リネームで装飾する(1 ループ分のみ載せる従来運用は loops=1 のままで変更なし)\d+-pattern-[a-d] を持つコレクションでは、format_timestamps_text() がテーマ見出し(── Pattern A: <name> ──)と楽曲行(00:00 Track 1)を組み合わせた 個別楽曲単位 のタイムスタンプを返す。テーマ見出し行は YouTube のチャプター parser に拾われないよう先頭 timestamp を持たない(重複 timestamp は chapter list 全体を無効化する)
workflow-state.json の planning.music.patterns[<letter>].display_name(無ければ .name を Pattern X: <name> に整形)から解決される。両方無ければ Pattern X にフォールバックBAHMetadataGenerator.detect_duplicate_track_titles() を呼び、case-insensitive で重複しているタイトル群を取得するworkflow-state.json の planning.music.patterns[<letter>](pattern ごとの mood / instruments / tempo 等)20-documentation/suno-prompts.md(pattern 別の Style / Lyrics 文脈)pattern_key(テーマ群が同じか別か判定)Quiet Hours × 2 → Quiet Hours — Dusk / Quiet Hours — Dawn、Rain Window × 3 → Rain Window I 型ではなく Rain Window — Distant / Rain Window — Closer / Rain Window — Driftv1〜v9 / ロマン数字 I〜VIII を付けない(preflight の variation suffix 検出で reject される)BAHMetadataGenerator.apply_track_display_names({index: "新表示名", ...}) に渡す。これで:
self.tracks[i]["title"] が上書きされるworkflow-state.json の track_display_names に {filename: display_name} 形式で永続化される(次回ロード時 _apply_persisted_display_names() で再適用される)02-Individual-music/ のファイル名や ID3 タグは変更しない(派生アセットへの波及防止)00:00 から始まること(YouTube チャプター要件)、最低3チャプターskill-config (.claude/skills/video-description/config.default.yaml / 上書き config/skills/video-description.yaml)
の perfect_for_themes からコレクションのテーマにマッチするキーを選択:
config/channel/content.json の descriptions.perfect_for(デフォルト)を使用theme_emoji から引く(例: 📚(study), 🌙(sleep), 🍺(tavern), 🌊(ocean), 🌿(forest), 🔮(druid/magic), 🌧️(rain), 🔥(hearth))config/channel/content.json の title.template に基づいてタイトルを生成する。
[総時間]: 2+ Hours / 1+ Hour 等(切り捨て表記)タイトル案を決めたら、まず 100 codepoint 以内であることを確認する(YouTube タイトル上限。超過は upload preflight で必ず fail するため、この段階で RHS の修飾語を削って短縮する。用途語・尺表記・テーマ語は残す)。
続けて、descriptions.md に保存する前に過去 live タイトルとの重複 warning を確認する(yt-title-duplicate-check は 100 codepoint 超過も検出し、超過時は --strict に関係なく exit 1 になる):
uv run yt-title-duplicate-check "$COLLECTION_DIR" --title "$PROPOSED_TITLE"
タイトル全体 / タイトル後半 / 長い タイトル末尾 が過去タイトルと一致した warning は、アップロード直前まで持ち越さずこの段階で見直すconfig/channel/content.json の tags.base + tags.themes.<theme> を結合してタグリストを生成する。
テーマに応じてキーワードを調整すること。
各要素は YouTube SEO と視聴者信頼の両面で CTR・視聴維持率に寄与する:
config/channel/content.json の tags.base に基づく戦略的キーワード — YouTube 検索とおすすめアルゴリズムの両方で発見性を高める00:00 始まり、3チャプター以上 — YouTube がチャプターを自動認識し、検索結果にプレビュー表示される概要欄生成時に、カードセクションも descriptions.md に含める。設定は skill-config の cards セクション参照。
cards.timing(デフォルト 12:00)cards.text_template(デフォルト Up next from {channel_name})yt-title-duplicate-check が超過検出)概要欄は必ずコレクションの 20-documentation/descriptions.md に保存する。
保存フォーマット(ヘッダー、概要欄本文、タイトル案、タグ、Cards、品質チェック)は
references/description-templates.md の「descriptions.md 保存フォーマット」セクションを参照すること。
保存後、workflow-state.json の description.generated = true に更新する。
概要欄はエージェント生成(テキスト)で、外部サービスを呼ばない。
| 状況 | 兆候 | 対処 |
|---|---|---|
| 入力データ/設定の不在 | 参照先のローカルファイルが見つからない | 該当ファイルを用意するか前段スキルを先に実行(外部サービスに依存しないため API 障害・quota の影響は受けない) |
概要欄生成後:
→ /video-upload <collection-path> で YouTube へアップロード
Use when YouTube Analytics データの収集・最新化が必要なとき。「データ更新」「統計を取得」「分析の準備」で発動。/analytics-analyze の前段
Use when コレクションの楽曲を DistroKid 配信用に準備し、distrokid-helper Chrome 拡張へ渡すローカルサーバーを起動したいとき(30-distrokid 生成 / disc 分割 / metadata.md / ジャケット 3000×3000 新規生成 / uv run yt-collection-serve 起動)。『DistroKid 準備』『配信準備』『アルバム化』『distrokid-helper』で発動。DistroKid Web への転記・アップロード操作そのものは Chrome 拡張側の責務
Use when Suno UI で生成した曲のプレイリストを一括 DL + マスター化するとき(前工程 /suno、次工程 /videoup)。Lyria チャンネルでは不要
Use when プレイリストの作成・割り当て・確認をするとき。「プレイリスト作って」「初投稿」「初回投稿」「初回公開前にプレイリスト初期化」「/playlist」で発動
Use when Suno UI に投入する曲をブラウザで連続生成 + playlist 追加 + 一括ダウンロードしたいとき。uv run yt-collection-serve で suno-prompts.json を配信し、suno-helper Chrome 拡張で 1 タブ完結の自動実行(pattern 注入 → Generate → 完了待機 → 次へ → 全件完了で playlist 一括追加 → ZIP 一括 DL)を回す operator 手順。`/suno` でプロンプトが揃った後、または既存 collection の途中再開で使用する
Use when Suno ボーカル曲の歌詞を生成するとき。「歌詞生成」「vocal」「rap」「suno-lyric」で発動。/suno の前工程。Style / UI 投入は /suno と /suno-helper の責務