Releases: daiki-beppu/youtube-automation
Release list
v5.6.0
-
chore(takt): takt 0.54.1 追随 — 0.53 で既定 off になった Codex Skill 継承(.agents/skillsの repo スコープ)を yt-auto-* 全 workflow で復元し、builtin 準拠の fix-report 契約(instruction: fixの 2 step)・session: compact(yt-auto-audit の台帳拡張 step)・final-gate タグルーティング(最終関門のみ Sol へ)・use-relevant-skillspartial(実装系 4 instruction)を導入した(#2686)。 -
chore(takt): audit-unit-split の検収ゲートを v4/v5 へ更新。v4 は supervise を project facet で shadow(承認基準 5 点・差し戻しは物理的欠落のみ)しpolicy: reviewの「APPROVE は issue 0 件」注入を除去(T07/T08/T10/T11 の max_steps 枯渇対策)。v5 は判定 LLM が承認宣言の応答を差し戻しへ誤分類する事象(T15/T16 で計 3 回・約 9 step 空転)への対策として全 rule condition を宣言文の機械照合形式へ変更し、review からもpolicy: reviewを除去。F 番号の連番規約(F-001 起点・欠番禁止・取り下げ見出し)と優先度集計の実数カウントを契約・instruction に明文化した(#2680)。 -
fix(extensions): Community / DistroKid helper の cleanup・stop・storage・asset relay・content injection 失敗を後続副作用なしで扱い、shared-ui の portal・primitive・refresh・drag・viewport 境界と entrypoint lifecycle を実 mount 回帰テストで固定した(#2926〜#2946)。 -
fix(skills): スキル配布・パッケージング監査の25件を実行可能な成功/失敗契約へ置換し、market/persona の状態判定、schedule/GCP/shell reference の外部コマンド境界、thumbnail のatomic更新、動画ベンチマーク、コメント収集のpagination・途中失敗・atomic保存・CLI終了コードを回帰テストで固定した(#2831〜#2855)。 -
test(repository): リポジトリ契約監査の文字列・行数・自己テストを実行時境界へ置換し、Chrome extension/worktree解決、Git ignore、dotenv非使用、pytest lane、shared-ui relay、隔離fallow cacheの回帰契約を強化した(#2888)。 -
fix(dashboard): detail 選択の競合 response が現在の表示・loading/error 状態を上書きしないようにし、Analytics snapshot の bool・負値・不正 nested shape を公開 read model/API で安全な値へ正規化。dashboard・refresh・architecture・fixture/helper の失敗/境界経路を実行時回帰テストで補強し、session-expiry の定数形式テストを 404/410 の公開 upload 動作へ統合した(#2857, #2858, #2859, #2860, #2861, #2862, #2863, #2864, #2865, #2866, #2867)。 -
fix(system): notification・競合 CLI・automation update・settings merge・doctor・preflight の失敗/境界契約を実行テストで固定し、thumbnail routing の 21 件の文書固定テストを provider・reference routing・thumbnail/main 成果物・loop-video on/off・cost 拒否の実行シナリオへ置換。doctor readiness は現行のcomposition_rules.text_lines契約へ更新した(#2807, #2808, #2809, #2810, #2811, #2812, #2813, #2814, #2815, #2816)。 -
fix(metadata): metadata remote audit の不正snippet応答を動画単位の診断へ変換し、連続 channel 実行時の skill-config 混入を防止。collection 必須 directory の壊れた symlink と作成 I/O 失敗も文脈付きValidationErrorへ統一し、metadata・collection・localization の監査 findings 19件を実回帰テストで固定した(#2787〜#2806)。 -
fix(suno-distrokid): DistroKid の atomic write・metadata・workflow-state 読込境界と、Suno の ffmpeg cleanup・unattended HTTP・verify CLI・artifact reader の成功/失敗契約を直接回帰テストで固定し、不正な workflow-state shape と I/O 失敗をConfigErrorに統一した(#2719, #2720, #2721, #2722, #2723, #2724, #2725, #2726, #2727, #2728, #2729)。 -
fix(thumbnail): 画像保存・provider retry・参照履歴・自動選択・比較CLI・stock設定の失敗/境界契約を実回帰テストで固定し、参照画像欠落を stderr へ報告、非有限の自動選択 tolerance、非object stock metadata、不正な stock theme/max-count 設定を安全に拒否する。Codex wrapper と thumbnail skill の内部文字列だけを固定していた重複テストは、同等以上のCLI・成果物・失敗診断テストへ統合した(#2768〜#2786)。 -
fix(analytics): 競合候補の channel ID を YouTube API 上限の 50 件単位で取得し、uploads playlist 欠損または有効な公開日を持つ動画がない候補を結果から除外する境界を公開 API テストで担保した(#2631)。 -
fix(analytics): retention timeline が不正な retention 数値(変換不能・NaN・Infinity)や非有限の動画尺をValidationErrorとして利用者向けに拒否し、壊れたJSON・曖昧なanalysis参照・duration fallback・未照合・Markdown escaping の境界を直接検証した(#2612, #2636)。 -
fix(live-chat): Codex の構造化出力が JSON object でない場合もGeneratorErrorとして安全に拒否し、facade・filter・history保存失敗・投稿失敗・chat終了後再探索・CLI enabled/割込み/例外終了の実行時契約を直接検証した(#2648, #2651)。 -
fix(playlist): playlist manager/status CLI が成功・中断・外部失敗を明示的な終了コードで返し、status/help/引数不備では不要な書き込み認証を開始せず、init/status/clean/assign の引数伝播と表示を command-level test で担保した(#2653)。 -
fix(video-analyze): Gemini が JSON object 以外を返した場合を明示的なValidationErrorとして扱い、解析失敗時に sleep や結果保存へ進まない境界を固定(#2678)。 -
fix(benchmark): Gemini サムネイル分析が依存欠落・client初期化・画像取得・生成・JSON解析で失敗した場合は収集済み動画データを変更せず、解析成功時だけthumbnail_analysisとgeneration記録を追加する fail-soft 契約を明確化(#2611)。 -
fix(benchmark): Short判定のISO 8601 durationを完全一致で検証し、空のPTや末尾に不正文字を含む値をShortとして扱わないよう修正(#2618)。 -
fix(analytics): launch-curve plotでtargetなし・benchmarkサンプル不足によりラベル対象がない場合、空legendを描画せず警告なくPNGを生成する(#2617)。 -
fix(config): channel targetの明示指定・CHANNEL_DIR・cwd fallbackの優先順位を検証し、fallback cwdがdirectoryでない場合もConfigErrorで拒否する(#2630)。 -
fix(video-validator): ffprobe の0/0frame rate を検証失敗として扱い、CLI をクラッシュさせず既存の metadata 読取失敗契約へ統一(#2644)。 -
fix(pinned-comment): CLI で破損した履歴 JSON と atomic 履歴保存の I/O 失敗を終了コード 1 のエラー契約へ変換し、未処理例外で終了しないようにした(#2652)。 -
fix(apply-rain-layers): ffmpeg 出力後の workflow-state 保存失敗を終了コード 1 として報告し、生成済み出力と更新前 state を保ったまま安全に再実行できるようにした(#2660)。 -
fix(generate-videos-batch): 複数 collection の workflow-state 永続化が途中で失敗した場合を終了コード 1 に変換し、更新済み collection を再実行対象から除外したまま未更新分だけ再開できる契約を固定(#2662)。 -
ffprobe の
nan/inf/-infを duration・bitrate の取得失敗として正規化(#2668) -
動画 metadata の codec 欠落・非文字列を例外にせず validation error として分類(#2671)
-
Lyria の中断時回収ファイル保存に失敗しても元の
KeyboardInterruptを保ち、誤った回収成功表示を出さないよう修正(#2667) -
chore(takt): ユニットテスト監査で稼働中のaudit-unit-splitworkflow 資産(workflow 1 本 + facets 4 本、v3 の上書きセマンティクス対策済み)を無改変で git 管理下に置いた。#2686 で.takt/workflows//.takt/facets/の git 管理が前提となったため、worktree・他 checkout でも定義を解決できるようにする(#2690)。 -
feat(takt): リポジトリ専用 workflow 群を整備し、takt を開発の標準実装経路へ戻した(#2453 の廃止根拠だった「workflow 実体の不在」を、.takt/workflows/の git 管理 +takt workflow doctor検証で解消)。レーンは yt-auto-feature(設計ゲート + テスト先行)/ yt-auto-fix(診断ゲート + 再現テスト red 検証)/ yt-auto-docs(文書・スキル限定の軽量レーン)/ yt-auto-maintenance(維持契約の列挙 + safety net 付きリファクタリング)/ yt-auto-audit(台帳ベース汎用監査)の 5 本と、共通 callable の yt-auto-intake / yt-auto-impl-review。全実装レーンに CI 同等ゲート(ci_verify: ruff / any-gate / pytest / CHANGELOG のローカル実行。ローカル git hook 廃止後の push 前関門)を置き、facets(personas / knowledge / policies / instructions / output-contracts)約 50 本と persona routing を追加した。CLAUDE.md / AGENTS.md /docs/development.md/docs/takt-operations.mdの「takt は使用しない」を反転し、/issue-directは対話用の代替経路として残した(#2686)。 -
fix(config): DistroKid credits の role と songwriter 名を空でない文字列に限定し、契約外 shape をConfigErrorで早期拒否する。audio 上限、community draft、localizations、branding の実行時設定契約テストを補強し、community draft ADR 本文の文字列固定テストを削除(#2593, #2594, #2595, #2596, #2597, #2658)。 -
fix(analytics): 不正な video analytics row と短い video-daily row を fail-soft に扱い、audience / channel / CTR / retention / revenue / traffic / video mixin の空応答・ゼロ値・API失敗・query境界を実行時テストで固定。audience mixin の docstring 文字列固定テストを削除(#2620, #2621, #2622, #2623, #2624, #2625, #2626, #2627, #2637)。 -
refactor(integration): B6 の統合 receipt と sdist allowlist を追加し、rootauth/、未使用 logging/template、helper の旧 Prettier 設定を整理した。Community Helper の install/update 導線を/ext-installと機能カタログへ追加した。OAuth セットアップは推奨経路(/setup)をONBOARDING.md2.3、手動ルート A / B・client_secrets.jsonの解決順・Vertex AI の project / location 解決・トラブルシューティングを新設のdocs/oauth-setup.mdへ移し、rootauth/SETUP.mdを廃止した。解決順の記述はclient_secrets_file_candidates()の実装に合わせ、workspace root と main 作業ツリーへのフォールバック(#1721)を追記している。README 側の環境変数表も同じ 4 候補を明記し、workspace channel かつ linked worktree の fixture で全候補を観測して README /docs/oauth-setup.mdの記載順が実装の候補列と一致することをtests/test_oauth_onboarding_contract.pyで機械担保した。sdist allowlist にはONBOARDING.md/docs/oauth-setup.md/docs/oauth-scopes.mdと、ルート B 詳細のinfra/terraform/gcp/README.mdを含め、README から辿る OAuth 導線が配布物内で解決することを実ビルド検査で機械担保した(infra/はこの README 以外を配布しない)。移設に伴って存在確認へ弱まっていた契約テスト(dashboard の起動時 API・--skip-refresh・部分エラー・配布境界・Spell UI 禁止、onboarding の dotenv 禁止と ADC / 1Password 記述、手動ルート A / B)は、移設先のdocs/architecture.md/ONBOARDING.md/docs/oauth-setup.mdに対して削除前と同等の内容 assertion を復元した(#2309)。 -
refactor(packaging): 旧cli/16 files とscripts/64 files をcommands/{analytics,channel,collections,distrokid,media,metadata,suno,system,thumbnail,uploads,youtube}/の 11 domain へ移し、cli_entrypoints.pyをentrypoints.pyへ改名。console script を 76→75 とし、yt-distrokid-migrateを entry / wrapper / module / test / CLI mapping /NON_BILLED_CLISの 6 面から削除(DistroKid domain・extension・yt-distrokid-prepareは維持)。20 個の skill symlink は link path を維持したまま 14 個の新 command target へ張り替えた。agents/に残っていたyt-upload-auto/yt-upload-collection/yt-upload-shorts、utils/のyt-audio-visualizer-fill、infrastructure/auth/のyt-oauthもcommands/{uploads,media,system}/へ移し、agents/パッケージを退役させて、全 75 wrapper が例外なくcommands/<domain>を target とする状態にした(tests/test_cli_stdio.py::test_entrypoint_wrappers_only_target_command_modulesがentrypoints.pyの AST から機械担保する)。あわせて--helpが設定・skill-config なしで exit 0 を返すよう、yt-channel-status/yt-playlist-manager/yt-playlist-status/yt-suno-unattended-request/yt-upload-auto/yt-upload-collection/yt-discover-competitorsの設定解決を引数解析より後ろへ移動し、yt-metadata-auditのモジュールトップCOLLECTIONS_DIR即時評価を解消。help 文言は静的化した(parser 構築時にチャンネル名を解決する経路を作らない)。yt-skillsの repo root 解決を深さ index からyoutube_automationパッケージ基準へ変更し、移動のたびに壊れる/上位ディレクトリを誤認する事故を防いだ。この--help契約はtests/test_cli_help_contract.pyで機械担保する(全 75 console script の実バイナリをCHANNEL_DIR未設定・credential 欠落の隔離 subprocess で起動し、exit 0 /usage: <script 名>/load_config()・channel_dir()・認証・API client 生成の未呼び出し / 隔離 HOME への非書き込み / 15 秒以内を検証。設定解決まで観測点に含めるのは、ConfigErrorを握り潰す fallback を挟めば「設定なしで exit 0」は保ててしまい、help 文言の設定依存を検出できないため。観測はPYTHONPATH注入のsitecustomizeプローブで行い、実プロセスを 75 本起動するため slow レーンに分類)(#2308)。 -
refactor(packaging): command adapter に残っていた共有ロジックを business layer へ移し、commands/を thin adapter に揃えた。benchmark の鮮度更新(ensure_benchmark_fresh)と JSON クエリ(find_latest_benchmark_json/load_benchmark_videos)をapplication/analytics/、DistroKid の disc 列挙をapplication/distrokid/、live / short 判定などの動画ポリシーをdomains/analytics/benchmark.py、Suno の route 定数群をdomains/suno/downloaded/models.py、--targetディレクトリ解決をutils/channel_target.py、setup ディレクトリ契約をutils/setup_directory_contract.pyへ移設(application//domains//utils/からcommands/への import は 0 件)。ensure_benchmark_freshは collector / analyzer / reporter を Protocol + factory で受け取る形にし、収集結果が空・サムネイル取得失敗のときに JSON 保存とレポート生成へ進まないことをtests/test_benchmark_collector_no_fallback.pyで固定した...
ext-v0.3.0
収録拡張
- Suno Helper —
suno-helper-*.zip - DistroKid Helper —
distrokid-helper-*.zip - Community Helper —
community-helper-*.zip
初回インストール
- 目的の拡張の zip(
*.zip)をダウンロードして任意のフォルダに展開する。 - Chrome で
chrome://extensionsを開き、右上の デベロッパーモード を ON にする。 - パッケージ化されていない拡張機能を読み込む(Load unpacked)をクリックし、展開したフォルダを選択する。
更新
- 新しい zip をダウンロードして展開し、既存の展開フォルダを置き換える。
chrome://extensionsを開き、対象拡張の リロード(更新アイコン)をクリックする。
v5.5.17
Added
feat(video-description): skill-config にchapters_enabled(既定true)を追加し、章運用を廃止したチャンネル(BGM / ASMR 等)向けの標準 opt-out を提供した(#1665)。config/skills/video-description.yamlでchapters_enabled: falseを設定すると、タイムスタンプ列(チャプター行・テーマ見出し行)の生成・重複トラック名の LLM リネーム・workflow-state.jsonへのtrack_display_names永続化をすべて skip する(構造化メタブロック / Music Time セパレータ / playlist 名 / CTA / hashtag は変わらず生成)。未設定チャンネルは既定trueで挙動不変feat(skills): 2026-05 skills 監査の残件として、skill-config 未適用スキルの直書き値を skill-config 機構へ切り出した(#1669)。(1) analytics-collect / analytics-analyze 双方に直書きされていた鮮度判定しきい値(30 分)をanalytics-collect/config.default.yaml::freshness_minutesに単一ソース化(config/skills/analytics-collect.yamlの上書きが両スキルの判定に効く)。(2)discover-competitors(検索フィルタ既定値・キーワード数ガイドレール)/live-clean(削除対象・保護パターン)/postmortem(症状判定しきい値・仮説マッピング係数)/video-upload(preflight 探索パターン・誇張語 NG リスト)にconfig.default.yamlを新設し、各 SKILL.md の直書き値を config 参照へ書き換えた。yt-discover-competitorsは CLI フラグ既定値をload_skill_config("discover-competitors")経由で解決する(CLI フラグ明示指定 > チャンネル上書き > default)。(3)analytics-reportの#Shorts除外キーワードと KPI カード構成をanalytics-report/config.default.yaml::html.{exclude_title_keywords,kpi_cards}に、metadata-auditの REMOTE チャプター上限(>12)をmetadata-audit/config.default.yaml::chapters.remote_maxに skill-config 化し、metadata_audit.py::audit_remoteが実行時に読むよう変更したchore(repo): リポジトリルートに.gitattributesを追加し、画像 / 音声 / 動画 / アーカイブ / フォント / PDF(計 20 拡張子)をbinarymacro で diff 抑止指定した(#1671)。git diffにバイナリ差分がテキスト表示されなくなるfeat(live-clean):/live-clean tmpとして collections 配下のtmp/残骸クリーンアップモードを追加した(#1671)。find collections -type d -name tmpで検出し、既存の大容量メディア削除と同じ「スキャン → ドライラン → 明示承認 2 択 → 削除 → レポート」フローを適用する。削除はrm -rfを使わず「ファイル単位rm -f→ 空ディレクトリrmdir」の depth-first 方式で、<CHANNEL_DIR>/tmp/(veo-operations//lyria-recovered/は /loop-video・/lyria の管理領域)と symlink は対象外。yt-clean CLI を新設しない棲み分けの根拠を SKILL.md に明記したdocs(skills): 「## 前提」セクション未導入だった 18 skill(automation-release / automation-update / channel-new / channel-research / community-post / discover-competitors / distrokid-helper / ext-install / live-clean / masterup / metadata-audit / setup / suno / suno-lyric / thumbnail-compare / videoup / viewer-voice / wf-new)に skill-authoring-guidelines 準拠の前提存在ガード(確認 → 満たさなければ前工程を案内して停止)を追加した(#1671)。これで全 skill が導入済みになる。設定読み込みゲートを持つ skill ではゲートより後に配置する既存契約(test_skill_config_defaults_have_read_gate_in_skill_docs)を維持docs(skills):/discover-competitorsの SKILL.md に他 skill と同一フォーマット(状況 / 兆候 / 対処)の「障害時ガイダンス」節を追加(#1652)。OAuth 未認証・失効時の再認証手順、YouTube quota 超過(HTTP 429 /quotaExceeded。本スキルは約 660 units/回消費)時のリセット待ち・呼び出し抑制、同一--outputでの再実行時に出力ペア(.md+ 同名.csv)が全体上書きされ部分結果は保持されないこと(途中失敗時はファイル未書き込みで前回出力が残ること)を文書化したfeat(suno-helper): 連続実行に投入方式セレクタ(Serial / Queue)を追加(#1586)。Queue は投入 ACK と clip ID 観測を確認したら生成完了を待たずに次 entry を先行投入し、最大 10 request(20 clip)まで Suno queue を使って全体の実行時間を短縮する。全 entry 投入後に生成完了をまとめて待ってから playlist 追加へ進む。進捗 UI には投入済み・生成未完了を表すsubmitted状態(琥珀色)を追加。選択は chrome.storage.local(sunoRunMode)に永続化し、既定は従来挙動の Serial。中断時は投入方式を resume state に保存し、再開は popup の現在選択ではなく元 run のモードで行う。制約: Queue は per-entry duration guard の自動再生成を行わず(範囲外 clip は playlist 追加時に除外のみ)、bridge の clip ID 観測が必須(未観測は fail-loud で run 停止)feat(suno-helper):/suno-helperを browser use 主経路で操作・監視できるように、SKILL.md に agent primary flow、DOM signal、無限待機回避、handoff 条件を追加。Chrome DevTools MCP は診断・補助・フォールバック扱いに固定し、拡張 overlay / popup にはdata-suno-*とrole="status"の観測 signal を追加した。/wf-newの Suno 後続案内も/suno-helperの browser use 主導フローへ接続する表現に更新(#1382)feat(doctor):yt-doctorに playlist スキル向けのplaylist_config/playlist_create_dry_runチェックを追加(#1504)。config/channel/playlists.jsonの欠落・JSON 破損・playlist_id未設定を channel カテゴリで診断し、PlaylistManager.create_all_playlists(dry_run=True)経路で作成計画を検証する。dry-run は YouTube API への書き込みを行わず、失敗時は human next_action で設定修正手順を示す。feat(collection-serve):yt-collection-serveに unpacked Chrome 拡張名から exact origin lock を自動解決する--allow-extension <name>を追加(#1486)。macOS Chrome profile のSecure Preferences(無ければPreferences)を走査し、extensions.settings[*].pathが絶対パスかつ basename が指定名に一致する拡張 IDからchrome-extension://<id>を組み立て、既存の/auth/token/ write endpoint lock にそのまま適用する。--allow-originとは排他で、検出 0 件・複数 ID 競合・profile root 走査不可・Preferences 読み取り不可・Preferences JSON parse failure は--allow-originfallback 案内付きのConfigErrorで fail-loud する。/suno-helper//distrokid-helper//wf-newのサーバー起動手順と拡張 README も--allow-extension基準へ更新したtest(deps): 2020 年から未更新のjapanize-matplotlibの font 登録が壊れたら検知する回帰テストtests/test_japanize_font_regression.pyを追加した(plan 024)。壊れた場合の症状(日本語ラベルの豆腐化)を matplotlib のGlyph ... missing from font(s)UserWarning で機械検知する
Changed
docs(wf-new): Phase 2c の codex / single_step 分岐に残っていた textless 背景先行の旧フロー記述を、#1611 のテキスト付き thumbnail 先行フロー(テキスト付きthumbnail.jpgを先に生成・承認 → 承認済みthumbnail.jpgから textlessmain.png/jpgを再生成)へ更新した(#1854)。契約テストtest_wf_new_routes_codex_and_single_step_through_thumbnail_contractも新フロー表記をロックするよう追従refactor(repo): GitHub ownerdaiki-beppuのハードコード残存(fork 運営者に生成物のズレを生む固定参照)を整理した(#1653)。yt-doctorのautomation_packagefail 時のnext_action.cmdをautomation_update_refs.UPSTREAM_REPO定数(official upstream 検証と同じ単一ソース)から組み立てるよう変更し、リテラル重複を削減。/automation-updateに Step 1-0、/ext-installに Step 0 を新設し、両スキルのgh/curlコマンドの upstream 参照を導入済みパッケージのUPSTREAM_REPOから実行時導出する形へ置換。定数から導出できない箇所(/setupの bootstrap 用uv add(パッケージ導入前に実行)、prose・doc リンク等)は固定のまま、.claude/CLAUDE.template.mdに新設した「fork 運用者向け」節(§9)に残存ファイル一覧とrgポインタを明記した。サプライチェーン保護の_require_official_upstream/UPSTREAM_REPO自体は変更していないdocs(skills):content_model.typeの docs 表記を実装(ContentModel.type = "release" / "collection"、src/youtube_automation/utils/config/youtube.py)の正に合わせ、single_releaseをreleaseに統一した(#1772)。対象はvideo-upload/SKILL.md(完了条件 / Channel Adaptation 表 / release アップロードフロー / コマンドリファレンス)、video-upload/references/posting-checklist.md、channel-new/references/claude-md-template.md。型名の初出箇所には「release 型(単曲リリース)」の補足を付与し、doc-contract テスト(tests/test_skill_docs_consistency.py)の見出し担保も新表記へ追従。無関係な GitHub release 集約テスト名test_attaches_both_zips_to_single_releaseは誤検知回避のためtest_attaches_both_zips_to_one_gh_releaseにリネームfix(thumbnail):.claude/skills/thumbnail/config.default.yamlのimage_generation.codex.default_prompt_templateを #1611 のテキスト付き thumbnail 先行フローへ更新し、SKILL.md「既定テンプレート」ブロックと完全一致させた(#1680)。#1502 の textless 背景先行テンプレートが出荷 default に残っており、Phase 2 のテキスト付き候補生成で「タイトルテキストを入れるな」と指示する矛盾があった。channel-new の config-template(references/config-template/skills/thumbnail.yaml)も同一テンプレートへ追従。{title}の意味論(サムネに焼く見出し + 短いサブタイトルのみ。動画タイトル全文を渡さない — 全文焼き込み事故の再発防止)を thumbnail / collection-ideate の codex 例と config コメントに明文化し、collection-ideate SKILL.md の「textless 背景先行」コメント(parallel / sequential 両分岐)と Next Step / コスト拒否時の旧フロー記述を現行の thumbnail 先行フローへ修正。SKILL.md 記載テンプレートと config.default.yaml の完全一致はtests/test_thumbnail_skill_assets.py::test_thumbnail_default_config_codex_template_matches_skill_md_blockで機械担保するdocs(distrokid-helper): SKILL.md の前提チェックにconfig/channel/distrokid.json::profile.songwriterの設定確認を追加した(#1745)。schema 上は任意のまま(CLI バリデーション追加なし)、未設定時は plan / build 前に「設定して進める / フォーム手入力を了承して進める」の 2 択を AskUserQuestion で提示する。ステップ 7 のリリース日提案を「申請日から 4 営業日後の最短日をデフォルト提案(営業日 = 土日除外、祝日は考慮しない)」と明文化し、agent ごとの提案ぶれを排除。あわせてdistrokid.jsonに PII(songwriter の本名)が入りうる旨・記入例・.gitignore運用(public リポジトリでは untrack、コミット済みならgit rm --cached、履歴残存時は filter-repo 検討)をreferences/pii-gitignore.mdに単一ソース化し、SKILL.md の Overview と前提チェックから Read 誘導で接続したdocs(suno-lyric):/suno-lyricの名言取得元 iyashitour.com の安全境界を実サイト構造に合わせて更新した(#1728)。英語名言の原文ページは/meigen/配下ではなく/archives/<ID>にあるため、host=iyashitour.com / scheme=https 固定のまま「/meigen/配下のインデックスからリンクで辿った/archives/<ID>への 1 ホップ限定」を許可 path に追加(/archives/<ID>を起点にした更なる遷移は不可)。別 host / private IP /..を含む path / 許可 path 以外の停止規則は従来どおり。SKILL.md の Quote Source Safety 節と config.default.yaml の安全境界コメントを整合させたfeat(channel-new): 新規チャンネル初期化時のデフォルトschedule.cadenceを週 3 回(["tue", "thu", "sat"])から毎日投稿(["sun", "mon", "tue", "wed", "thu", "fri", "sat"])に変更した(#1730)。対象は配布テンプレート.claude/skills/channel-new/references/schedule-template.jsonとyt-channel-initが生成するschedule_config.json(cli/channel_init_templates.py::_render_schedule)の 2 箇所。publish_time(20:00)・auto_schedule_enabled(true)等の他キーは変更なし。既存チャンネルのschedule_config.jsonには影響しないfix(thumbnail): OpenAI Image provider の既定qualityをhighからmediumに変更した(#1697)。provider を OpenAI に切り替えた際に無自覚に高単価 API を叩くのを防ぐため、highはimage_generation.openai.quality: highの明示 opt-in のみとする。src/youtube_automation/utils/image_provider/config.py::_build_openaiのフォールバック既定値と.claude/skills/thumbnail/config.default.yamlの同梱既定値の両方をmediumにし、thumbnail SKILL.md の provider 切替 runbook に quality 既定値と単価差の注記を追記したdocs(live-clean): SKILL.md の障害時ガイダンスに Ctrl+C(SIGINT)中断ケースを追記した(#1696)。削除はファイル単位rm -fで idempotent(workflow-state.jsonは保護対象のため再実行時の安全性検証もそのまま機能)であり、スキル再実行で Step 1 / T1 の再スキャンにより残件から安全に継続できることを文書化。再実行時も承認ゲートを改めて通るdocs(video-upload): SKILL.md の frontmatter description に release 型(単曲リリースアップロード)の発動トリガー語(「楽曲リリースをアップロード」「リリース動画を公開」)と /short-release への棲み分けを追記した(#1692)。従来は collection 型のみ前提に読める記述で、実装は release 型対応済みにもかかわらず発動語が欠けていた。型名表記は実装の正(ContentModel.type = "release"、#1772 の用語統一方針)に合わせたdocs(skills): チャンネル運用系 6 スキル(channel-new / setup / playlist / comments-reply / pinned-comment / community-post)の SKILL.md を 7 観点チェックリストでレビューし、意味・機能を変えない記述改善を適用した(#1678)。channel-new は 3 スキル統合(#1460/#1461/#1499)で 945 行に肥大していた SKILL.md から、方向性検討モード(Step D1〜D5)・再生成モード(Step R1〜R8)・既存チャンネル取り込みモード(取り込み Step 1〜8)の手順詳細をreferences/{direction-mode,regeneration-mode,import-mode}.mdへ逐語切り出しして 553 行に削減(本文には目的・前提・完了条件と Read 誘導のスタブを残置、モード判別・新規開設モード・設定 push モード・TTP 完了条件は本文のまま)。playlist / pinned-comment / comments-reply / community-post に「## 完了条件」を明示(既存の終了記述の再掲)、setup の完了条件記述を見出し化、playlist init の「確認」...
ext-v0.2.5
収録拡張
- Suno Helper —
suno-helper-*.zip - DistroKid Helper —
distrokid-helper-*.zip
初回インストール
- 目的の拡張の zip(
*.zip)をダウンロードして任意のフォルダに展開する。 - Chrome で
chrome://extensionsを開き、右上の デベロッパーモード を ON にする。 - パッケージ化されていない拡張機能を読み込む(Load unpacked)をクリックし、展開したフォルダを選択する。
更新
- 新しい zip をダウンロードして展開し、既存の展開フォルダを置き換える。
chrome://extensionsを開き、対象拡張の リロード(更新アイコン)をクリックする。
ext-v0.2.4
収録拡張
- Suno Helper —
suno-helper-*.zip - DistroKid Helper —
distrokid-helper-*.zip
初回インストール
- 目的の拡張の zip(
*.zip)をダウンロードして任意のフォルダに展開する。 - Chrome で
chrome://extensionsを開き、右上の デベロッパーモード を ON にする。 - パッケージ化されていない拡張機能を読み込む(Load unpacked)をクリックし、展開したフォルダを選択する。
更新
- 新しい zip をダウンロードして展開し、既存の展開フォルダを置き換える。
chrome://extensionsを開き、対象拡張の リロード(更新アイコン)をクリックする。
ext-v0.2.3
収録拡張
- Suno Helper —
suno-helper-*.zip - DistroKid Helper —
distrokid-helper-*.zip
初回インストール
- 目的の拡張の zip(
*.zip)をダウンロードして任意のフォルダに展開する。 - Chrome で
chrome://extensionsを開き、右上の デベロッパーモード を ON にする。 - パッケージ化されていない拡張機能を読み込む(Load unpacked)をクリックし、展開したフォルダを選択する。
更新
- 新しい zip をダウンロードして展開し、既存の展開フォルダを置き換える。
chrome://extensionsを開き、対象拡張の リロード(更新アイコン)をクリックする。
ext-v0.2.2
収録拡張
- Suno Helper —
suno-helper-*.zip - DistroKid Helper —
distrokid-helper-*.zip
初回インストール
- 目的の拡張の zip(
*.zip)をダウンロードして任意のフォルダに展開する。 - Chrome で
chrome://extensionsを開き、右上の デベロッパーモード を ON にする。 - パッケージ化されていない拡張機能を読み込む(Load unpacked)をクリックし、展開したフォルダを選択する。
更新
- 新しい zip をダウンロードして展開し、既存の展開フォルダを置き換える。
chrome://extensionsを開き、対象拡張の リロード(更新アイコン)をクリックする。
v5.5.16
Added
feat(suno):/suno//suno-lyricの成果物を検証するyt-suno-verifyCLI を追加。suno-patterns.yaml/suno-prompts.json/suno-lyrics.jsonの曲数、entry name 整合、歌詞構造、genre_line文字数を Suno UI 投入前に fail-loud で確認できるようにした(#1484)feat(helper):yt-collection-serveにGET /server-infoとチャンネル別*.localhostの canonical URL 表示を追加し、suno-helper / distrokid-helper の popup がローカル配信元候補を保存・選択できるようにした(#1352)。既定候補はhttp://youtube-automation.localhost:7873と legacyhttp://localhost:7873を併存し、複数チャンネルのサーバーを label 付きで切り替えられるfeat(video-description):BAHMetadataGenerator.generate_timestamps()/format_timestamps_text()にloopsパラメータを追加した。master をループ生成しているコレクション(yt-generate-master --loop N/--target-duration)で全ループ分のチャプターを機械展開できる。2 周目以降の開始秒は 1 周目と同じクロスフェード算術(int(current + duration - crossfade))で連続計算し、各行に 1 始まりのloopフィールドを付与(2 周目以降のタイトル装飾は呼び出し側の LLM リネームに委ねる)。既定loops=1は従来挙動と完全互換。従来は 1 ループ分しか生成できず、全ループ展開運用のチャンネルでは毎回 LLM が手計算していたfeat(masterup):/masterupの playlist 取得直後に playlist 曲名 ×suno-prompts.jsonentry name の突合ゲートyt-suno-verify-playlistを追加した。別コレクション曲の混入(unknown)・生成漏れ(missing)・clip 不足(underfilled、既定 2 clip/entry・--expected-clips-per-entryで調整)を fail-loud で検出し、非 0 終了時は Step 3(ダウンロード)へ進まない。曲名は/sunoが Song Title 欄へ注入する{name_jp} — {name_en}を照合キーとし、NFKC・空白圧縮・casefold で表記ゆれを吸収する。背景: 最新セット未完のまま前後コレクションの曲が playlist に混入して master 化される事故の再発防止(下流チャンネル実例: 深夜コレクションに昼テーマ 2 ペア混入 + 深夜 2 entry 未生成)feat(collection): コレクション標準骨格の検証・補完 CLIyt-collection-preflightを追加(#1494)。01-master/等の必須サブディレクトリ欠落を fail-loud で検知し、--fixで冪等・非破壊に補完する。骨格定義はyoutube_automation.utils.collection_paths.REQUIRED_SUBDIRSに一本化し、yt-init-collectionの scaffold も同定義を共有。/wf-new(init 直後の検証)//wf-next(フェーズ処理前のプリフライト)//suno-helper(サーバー起動前のプリフライト)//wf-status(詳細表示に骨格行)へ導線を追加し、/wf-newSKILL.md の scaffold 説明から漏れていた01-master/02-Individual-musicの記載も修正feat(thumbnail): thumbnail 候補の自動選択を標準化するyt-thumbnail-auto-selectCLI を追加。TTP 参照画像プール(image_generation.gemini.reference_images.default)の特徴量 centroid に最も近い候補を10-assets/thumbnail.jpgとして自動確定する。config/skills/thumbnail.yamlのimage_generation.auto_selection.enabled: trueで opt-in(未設定チャンネルは従来の手動承認フローのまま)。dry-run / apply を分離し、apply 時はworkflow-state.jsonに選択候補・distance・ランキング・実行時刻の監査ログを記録。候補なし・参照画像なし・16:9 逸脱・確定済みサムネ上書きは silent fallback せず明示エラーにする(#1370)feat(cli): 下流リポの automation 追従を機械実行するyt-automation-updateCLI を追加(#1473)。checkが実行場所・pin 形式(inline table / URL 直接参照の tag pin、main 追従、sha pin)・upstream 最新リリースとの差分を判定し exit code(0=最新 / 1=差分あり / 2=エラー)で返す。applyが pin 書き換え →uv lock→yt-skills sync(skills / claude-md 両 asset)→ smoke check(yt-skills list/yt-config-migrate verify)を順に実行し、失敗ステップを明示して非 0 終了する。commit / push は責務外(スキル・人間側に残置)feat(video-description):yt-title-duplicate-checkに YouTube タイトル上限(100 codepoint)の前倒しチェックを追加した。超過時は--strictに関係なく exit 1 で報告し、/video-descriptionの品質チェックにも「100 codepoint 以内」を明記。upload preflight(agents/_preflight.py)まで持ち越すと quota と時間を浪費するため、タイトル案の保存前に検出する(下流チャンネル実例: 104 codepoint でアップロード時に fail、2026-07-05)feat(thumbnail): サムネイル文字フォントを安定して指定できる決定的合成経路を追加(#1332)。yt-thumbnail-textCLI が textless 背景(main.png系)に実フォントファイル(.ttf/.otf/.ttc)を Pillow で描画し、同一の背景・テキスト・設定なら常に同一の出力を生成する。フォント指定は skill-configimage_generation.gemini.thumbnail_text.overlay(config/skills/thumbnail.yaml)で行い、フォント未設定・ファイル不在時は理由と代替手順(AI 経路へのフォールバック含む)を明示して停止する。AI プロンプト経路向けにもsingle_step.typography_clauseを追加し、SKILL.md に 2 経路の使い分けを示す「フォント安定化」章を新設feat(suno):/sunoの Style プロンプト生成に entry ごとの自動バリエーション機構(style_variation、既定で有効)を追加。genre_lineのコアジャンルを維持したまま texture / rhythm feel の descriptor を entry 通し番号ベースの決定的ローテーションで Style 第 1 行へ付与し、Suno V5.5 での楽曲同質化を防ぐ。先頭 entry は base style を維持(単一 entry の既存コレクションは出力不変)、stylevariant の明示 override がある entry は従来どおり優先、style_variation.enabled: falseで従来動作へ戻せる。全 entry の Style 文が完全一致する組は生成時に警告する(#1456)feat(wf-next):config/channel/workflow.json::workflow.wf_next.skip_manual_mastering(defaultfalse)を新設。trueのとき/wf-nextのマスター音源検出(2-B)で01-master/に別ファイルが無くてもassets.raw_masterをそのままassets.master_audioとして採用しphase: "mastered"へ進む(raw=final 運用)。approval_gates.audioとは独立で、後方互換(未設定は従来通り停止)。docs/workflow-cheatsheet.md のよくある質問に設定手順を追記(#1449)
Changed
refactor(suno-helper): 旧 Suno playlist capture 互換 route(POST /suno/playlists)とwrite_suno_playlists()/normalize_suno_title()/--playlist-capture-*を撤去し、DistroKid release 記録用の capture root を--distrokid-capture-rootに分離(#1301)docs(distrokid):/distrokid-prepスキルを/distrokid-helperに改名し、参照スクリプトと docs/features の表記を同期(#1350)feat(video-analyze):yt-video-analyzeを全尺解析から動画冒頭のクリップ窓解析(既定 900 秒 = 15 分、skill-configanalysis_window_secで上書き可)に変更。Gemini へ渡す Part にvideo_metadata(start_offset/end_offset)を付与して冒頭 2〜3 曲相当のみを解析し、長尺 Complete Collection の API コストを削減する。プロンプトをクリップ窓前提(bgm_arc.outroは窓内終盤、scene_timeline/editing_metricsは窓内対象)に整合させ、SKILL.md に解析後のレポート検証ステップ(窓超過タイムスタンプ・スキーマ欠落・不自然値の subagent レビュー)を追加。下流/sunoにも冒頭クリップ窓データである旨を注記した(#1495)- BREAKING
refactor(skills):/channel-setupスキルを削除し、/channel-newに統合した。詳細セットアップ/再生成(旧 Step 1〜8)は再生成モード(Step R1〜R8)、設定 push(旧 Step 9:yt-channel-settingsdiff / push / pull)は設定 push モードとして/channel-newが文脈から自動判別して受ける。共通テンプレート・スクリプト置き場は.claude/skills/channel-setup/references/から.claude/skills/channel-new/references/へ移設し、競合 branding snapshot 取得はインライン Python を廃止してreferences/fetch_branding_snapshot.pyに一本化。yt-doctor/ preflight の/channel-setup案内文言と CLAUDE.md / AGENTS.md のスクリプト配置規約も/channel-new系へ更新した。下流リポジトリはyt-skills syncの prune で追従する(#1461) refactor(automation-update):/automation-updateスキルの機械的ステップ(実行場所判定 / pin 形式判定 / 差分判定 / pin 書き換え /uv lock/ sync / smoke check)をyt-automation-updateCLI 呼び出しに置き換え、スキルは判断ポイント(リリース要約 / local fix 衝突 / 同意取得 / コミット)専任に薄型化(#1473)feat(hooks): review 頻出パターンのうち機械検出可能なテスト差分ゼロと広すぎる Any / any 型注釈を lefthook pre-push で検出するゲートを追加。SKIP_TEST_DIFF=1でテスト差分警告のみ明示 skip できるようにし、Python 未使用コード検出は既存 RuffF系継続、TS 未使用 export / dead code は既存ts-knip継続として docs に採否根拠を記録した(#1510)。その後の review-takt-default 指摘を受け、(1) any-usage-gate のスコープをsrc//tests//extensions//packages/限定からディレクトリ非依存の全*.py/*.ts/*.tsxに拡大(.claude/skills/*/references/*.py等も対象化)、(2) Python 側でfrom typing import Any直接 import 経由の裸Any使用も検出、(3) test-diff-gate のextensions/*/lib/*.test.tsが lib 判定に先取りされテスト差分ありなのに誤警告するバグを修正、(4) test-diff-gate に対応テスト差分ありなら警告しない成功パスの契約テストを追加、(5) lefthook の「同一 hook で use_stdin を持てるコマンドは 1 つ」制約に対応するため test-diff-gate / any-usage-gate を独立コマンドから外し changelog-gate.sh 1 本のエントリポイントに統合、ブランチ削除 push のスキップを 3 ゲート共通にした(#1510、PR #1525 review-takt-default 指摘対応)。再レビューでの追加指摘を受け、(6) Python 側の Any import 検出を 1 行正規表現からpython3/astベースに置き換え、複数行の括弧 import とasalias も解決できるようにし、(7) TypeScript 側は: any直書きに加えArray<any>/Record<string, any>等のジェネリック引数・union / intersection・tuple 要素の型位置anyも検出し、英語コメント・文字列リテラル中の "any" は誤検知しないよう型導入記号の直後という制約を追加、(8)SKIP_CHANGELOG=1が CHANGELOG チェックのみを省略し test-diff-gate / any-usage-gate は継続する契約テストを追加した(PR #1525 2 回目の review-takt-default 指摘対応)。3 回目の review-takt-default 指摘を受け、any-usage-gate の検出方式を正規表現の継ぎ足しから構造的な解析へ刷新した: Python 側は.lefthook/pre-push/any_usage_python_resolver.py(新設)がastでファイルを解析し、typing.Any修飾アクセスと直接 import 経由の裸Any(alias 含む)の両方を実際の参照行番号として解決するため、コメント・docstring・文字列リテラル中の "Any" は AST 上に現れず誤検知しない。TypeScript 側は型エイリアス代入(type X = any;)・型アサーション(value as any)も検出対象に加え、正規表現で候補行を検出したのち.lefthook/pre-push/any_usage_ts_line_cleaner.py(新設)で行コメント・文字列リテラルの中身を除去してから再判定することでコメント・文字列内の "any" 誤検知を防ぐ。あわせて diff の基準点(origin/mainとの merge-base)を changelog-gate.sh で一度だけ解決しPRE_PUSH_DIFF_BASEとして子ゲートへ export することで、3 スクリプトが個別に基準を再計算する重複を解消した(PR #1525 3 回目の review-takt-default 指摘対応)docs(channel-new):/channel-new(新規開設モード)の Step 7「簡易ペルソナ導出」冒頭に入口ゲートを追加し、承認済み TTP 対象(config/channel/analytics.json::benchmark.channels)が 0 件のままペルソナ生成へ進めないようにした。従来は 0 件検出が Step 9 の最終ゲートに集中しており、空のまま生成 → 差し戻しの手戻り(AI 生成コストの無駄)が発生し得た。判定基準は冒頭「TTP 完了条件(新規開設モード)」を単一ソースとして参照し、完了条件本体はコピーしない(#1517)feat(skills): comments-reply / pinned-comment に apply 実行前の承認ゲートを追加した(#1513)。両スキルの dry-run 確認ポイントを「全項目 PASS の場合のみ次フェーズへ進む」形式に統一し、1 項目でも FAIL なら dry-run を修正・再実行するまで apply へ進んではならない旨を明記した。comments-reply は Phase 4→5、pinned-comment は Phase 1→2 の間に承認ゲートを新設し、Claude Code では AskUserQuestion で dry-run 結果の要約を提示したうえで「投稿する」「キャンセル」の明示 2 択、AskUserQuestion 非対応環境(Codex 等)ではテキスト提示 + 明示的な承認発言待ちに統一したfeat(takt): lite workflow に提出前セルフ監査を組み込んだ(#1508)。過去の review-takt-default 指摘 371 件(183 レビュー)の全件分類から頻出 8 パターンを抽出した.takt/facets/policies/pre-review-checklist.mdを新設し、implementstep(自己監査 + 受入条件充足表の出力)とreviewstep(独立照合、スコープ外の改善提案は verdict に影響させない)に注入。あわせて lite のplanstep にinstruction: planを追加し、リポジトリ強化版 plan instruction(.takt/facets/instructions/plan.md)が lite でも注入されるようにした。運用・更新手順はdocs/takt-operations.mdの「提出前セルフ監査」節を参照docs(skills): takt 各 step の固定コンテキスト削減のため全スキルの frontmatter description を短縮(合計 22.4KB → 10.1KB。同義トリガー語の羅列と処理手順の重複を削り、スキル間 dispatch の境界語と機械検証キーワードは維持)。あわせて CLAUDE.md(18.9KB → 7.4KB)/ AGENTS.md(14.6KB → 2.2KB、CLAUDE.md への一元化)をスリム化し、詳細をdocs/architecture.md/docs/development.md/docs/takt-operations.mdへ移設。.takt/config.yamlに observability(usage_events_phase)を有効化し、小〜中規模 issue 用の軽量 3-step workflow.takt/workflows/lite.yamlを追加(使い分け基準はdocs/takt-operations.md)。さらに takt 内部実装(phase 分割実行)の調査に基づき、lite の review step を全 step codex 方針に合わせて codex 化し、structured_output(.takt/schemas/review-verdict.json)+ deterministicwhen:ルールで状態判定 phase の LLM 呼び出しを排除。phase コストモデルと workflow 設計指針をdocs/takt-operations.mdに文書化chore(distrokid-helper): manifest / package の shell を suno-helper 基準に揃えた(ADR-0016、#1359)。manifest 権限をlib/manifest.tsのMANIFEST_PERMISSIONS/MANIFEST_HOST_PERMISSIONSに SSOT 化してwxt.config.tsから参照し、tests/manifest.test.tsと CI(extensions.yml)の生成 manifest 検査で drift(広域権限や suno-helper 専用権限の混入、dis...
v5.5.15
Added
feat(channel-new):/channel-newにチャンネル画像初期化導線を追加。TTP 対象のsnippet.thumbnails/brandingSettings.imageを reference-only として snapshot に保存し、yt-channel-initがthumbnail.yamlの channel branding 参照枠を生成、yt-setup-dirsがbranding/を作成するようにした(#1367)feat(doctor):yt-doctorにnumbered_duplicatesチェックを追加し、.venv/bin/と.claude/skills/の番号付き重複ファイル(iCloud Drive 同期コンフリクトの bounced file name、原因調査 #1409)を検知・警告できるようにした。yt-skills syncも sync 先の重複を warning で報告する。クリーンアップ手順はdocs/migration/numbered-duplicate-files-cleanup.mdを新設し、/automation-updateに検知確認と再発防止ガイダンス(同期対象外への移設が根本対策、--frozenは効果なし)を追記(#1410)docs(migration): TS 移行告知 + 移行ガイドdocs/migration/python-to-tayk.mdを公開し、README / ONBOARDING 冒頭に告知バナーを追加。Python 版は 2026-08 中に提供終了しtayk(npm)へ切り替わる(ADR-0015 の 2026-07 頭告知義務、#1416)feat(channel-new): 承認済み TTP 対象だけを使う初回/wf-newreadiness を追加し、yt-doctorで thumbnail reference / video-analysis partial / Suno style variants / 旧 video-analyze model を検出できるようにした(#1357)
Changed
docs(skills):/audience-personaを/audience-persona-designに改名し、/viewer-voiceと/viewing-sceneを束ねて第一ペルソナ 1 人へ収束させる設計フローに更新(#1371)feat(channel-init):yt-channel-initに DistroKid opt-in 初期化を追加し、--distrokid-enabled指定時のみconfig/channel/distrokid.jsonを生成するようにした。/channel-newのヒアリング手順にも DistroKid 配信設定を追加(#1366)feat(setup):/setupからyt-setup-dirsを実行してauth/などの最小ディレクトリを config 生成前に用意し、/channel-newは既存ディレクトリを再利用してconfig/channel/*.json生成に集中する責務へ整理(#1396)feat(doctor):yt-doctorにinitial_setup_readinessを追加し、thumbnail 参照画像・composition rules・Sunogenre_line文字数・planning 中descriptions.mdの parser 不一致を事前検知できるようにした(#1403)docs(distrokid):/distrokid-prepスキルを/distrokid-helperに改名し、参照スクリプトと docs/features の表記を同期(#1350)docs(channel-new):/channel-newの/wf-new接続前チェックに Analytics / Reporting レポート取得設定と YouTube Live streaming 早期有効化の案内を追加し、Reporting API job 初期化導線を/analytics-collect//setup/yt-doctorに接続(#1365)docs(channel-new):/channel-new完了時にgit status --porcelainで未コミット変更を確認し、初回 commit 作成または明確な保存手順を案内する完了ゲートを追加。/automation-updateの dirty worktree 停止時にも/channel-new直後の初回保存未完了を案内するよう更新(#1329)
Fixed
fix(collection-ideate): 分析レポートの鮮度判定に実行日基準の絶対鮮度チェック(freshness_days既定 7 日、config/skills/collection-ideate.yamlで上書き可)を追加し、レポートと収集データが同日付でも収集自体が古い場合は stale として/analytics-collect→/analytics-analyzeの再実行を案内するようにした(#1427)fix(suno-helper): run 一式完了時リロード(#1411)が content script の in-memory snapshot(popup 進捗復元の SSOT)を破棄し、run 中に popup を閉じていた運用者が完了後に再 open しても完走結果や per-entry の done/failed を確認できない問題を修正。FINISHED 到達時(リロード予約の直前)に snapshot を timestamp + collectionId 付きでchrome.storage.localへ退避し、リロード後のqueryProgressが in-memory 不在時の fallback として返すようにした(24h stale 判定付き、次の実行開始で消去、退避失敗時はリロードを見送り in-memory 復元を維持)fix(suno-helper): dir mode の同一タブ連続実行で前回 run の stale selection が次 run の playlist 追加(Cmd+P)に混入し曲数が累積汚染される問題を修正。run 一式完了時(resume state 消去後)にタブをリロードして Suno 内部の multi-select 状態を破棄し(runAll / retryPlaylist / retryDownload の全選択作成経路が対象)、保険として Cmd+P 直前に選択中 clip 数が対象件数を超えていたら fail-loud で中断してリロード後の再実行を促すようにした。ガード走査は 1 pass + 超過即打ち切りの軽量モードで行い、走査自体の失敗は fail-open(警告して続行)。リロード猶予中に次 run が受理された場合はリロードを取り消して新 run を保護し、resume state 消去失敗時は FINISHED を維持してリロードのみ見送る(#1411)fix(hooks): extensions/ 配下のみを変更した commit で lefthook pre-commit の oxlint / oxfmt が「対象ファイルなし」を exit 1 で返し必ず失敗する問題を修正。extensions は自前の ESLint / Prettier / tsc 管理(CI: extensions.yml)のため、lefthook.ymlの oxlint / oxfmt / typecheck にexclude: extensions/**を追加して root ツールチェーンの対象のみに絞った(exclude の glob 配列サポートのためmin_versionを 1.5.0 へ引き上げ、#1428)fix(channel-new):yt-doctorにttp_wf_new_readinessを追加し、/channel-newが TTP 対象承認・relationship・branding snapshot・thumbnail reference・Suno readiness の不足を残したまま完了扱いにならないようにした(#1397)fix(skills):/video-uploadと/wf-nextの公開承認前にyt-upload-collection --planで即時公開/予約公開を確定し、予約時は実際の公開予定時刻を案内するよう明記(#1395)fix(doctor):yt-doctorにttp_wf_new_readinessを追加し、/channel-setupの benchmark 反映未完了による TTP 参照データ欠落を検知・案内できるようにした(#1400)fix(distrokid):yt-collection-serveの DistroKid asset 配信で URL encode された日本語ファイル名を decode し、single-file / dir mode の両方で 404 にならないようにした(#1401)fix(masterup):yt-suno-select-tracksで全候補がmax_song_sec超過だけで落ちた prompt を--allow-best-effort-over-maxで最短候補として例外採用できるようにし、selection log とworkflow-state.json::music_pair_selectionを成功結果に同期するようにした(#1324)fix(launch-curve):yt-launch-curveで日次データにimpressions/impression_ctrが無い場合もdaily_impressions=0/ctrunavailable として扱い、初期チャンネルの欠損データで落ちないようにした(#1327)fix(skills):config.default.yamlを持つ skill の SKILL.md に設定読み込みゲートを追加し、チャンネル override の読み飛ばしを防ぐ契約テストを追加(#1243)fix(distrokid):distrokid.profile.artistを release payload に含め、distrokid-helper がbandnameと Apple Music credits の performer / producer 名へ反映できるようにした(#1211)fix(automation-update):/automation-updateをチャンネルリポジトリ外で実行した場合に、現在地が不適切な理由と移動先候補または探し方を案内するようにした(#1328)
Migration
所要時間の目安: 0〜2 分
local fix 衝突注意:
- channel-new, automation-update: 下流で該当 skill を手書き調整している場合は
yt-skills diffで差分確認が必要。 - channel-new: TTP 完了条件と
yt-doctor::ttp_wf_new_readinessの完了ゲートを追加。下流で/channel-newを手書き調整している場合は TTP 対象承認 / branding snapshot / thumbnail reference / Suno readiness の扱いを確認する。
サマリ:
- 新規チャンネルセットアップ完了時に未コミット変更を残したまま後続の
/automation-updateへ進まないよう、初回保存手順を skill に明記した。 /channel-newが TTP 準拠前に成功案内を出さないよう、yt-doctorの readiness check と skill contract を追加した。
What's Changed
- [codex] suno-helperのFB起点不具合をまとめて修正 by @daiki-beppu in #1348
- chore(suno-helper): ext-v0.2.1 by @daiki-beppu in #1351
- [codex] distrokid-helper shell方針を記録 by @daiki-beppu in #1364
- [codex] Windows cp932 環境で yt-* CLI の stdio を UTF-8 化 by @daiki-beppu in #1347
- [codex] distrokid-helper スキルへ改名 by @daiki-beppu in #1350
- fix: DistroKidのartistをrelease payloadとhelperに反映 (#1211) by @daiki-beppu in #1355
- fix(skills): skill-config 読み込みゲートを明示する (#1243) by @daiki-beppu in #1353
- [#1369] issue-1369-github-actionsno-st by @daiki-beppu in #1386
- fix: launch curve の CTR 欠損を許容する by @daiki-beppu in #1358
- fix: Suno選曲のmax超過全落ち復旧を追加 (#1324) by @daiki-beppu in #1356
- docs: OAuth手順をGoogle Auth Platform新UIに更新する by @daiki-beppu in #1346
- feat(skill): channel-new 完了時に初回保存を追加 by @daiki-beppu in #1362
- feat: setup 用ディレクトリ生成 CLI を追加 (#1396) by @daiki-beppu in #1399
- feat(doctor): channel-setup未完了のTTP欠落を検知する by @daiki-beppu in #1402
- fix: DistroKidアセット配信でURLデコードする by @daiki-beppu in #1404
- fix(skills): 公開承認前に予約公開planを確認する by @daiki-beppu in #1406
- [codex] /automation-update の対象外フォルダ案内を追加 by @daiki-beppu in #1363
- fix: channel-newのTTP完了条件をdoctorで強制する (#1397) by @daiki-beppu in #1398
- docs(adr): ADR 監査 — 番号重複解消・Status 統一・内容突合レポート (#1413) by @daiki-beppu in #1417
- feat(doctor): 初期セットアップ不備を事前検知する by @daiki-beppu in #1405
- [codex] channel-newに初回wf-new前のTTP readinessを追加 by @daiki-beppu in #1368
- ci: docs/adr の ADR 番号重複を CI で機械チェック (#1414) by @daiki-beppu in #1419
- docs(migration): TS 移行告知 + 移行ガイドを公開する (#1416) by @daiki-beppu in #1424
- fix(lefthook): ブランチ削除 push を CHANGELOG ゲート対象外にする by @daiki-beppu in #1420
- fix(hooks): extensions のみの commit で pre-commit が「対象ファイルなし」exit 1 で落ちる問題を修正 (#1428) by @daiki-beppu in #1430
- feat(doctor): 番号付き重複ファイルの検知とクリーンアップ手順を整備 (#1410) by @daiki-beppu in #1418
- [codex] channel-newに初期運用前提チェックを追加 by @daiki-beppu in #1372
- feat: channel-newでDistroKid初期設定生成に対応 by @daiki-beppu in #1373
- fix(suno-helper): 連続実行時の stale selection 累積汚染を完了時リロードと Cmd+P 前ガードで防止 (#1411) by @daiki-beppu in #1412
- fix(suno-helper): 完了時リロード後も popup が直近完了 run の結果を復元できるよう FINISHED snapshot を退避 (#1411) by @daiki-beppu in #1438
- ci: issue 粒度 lint(non-blocking 警告コメント)を追加 by @daiki-beppu in #1429
- fix: DistroKid サブジャンル選択の非同期待機を追加 by @daiki-beppu in #1408
- feat: channel-newでチャンネル画像初期化を追加 (#1367) by @daiki-beppu in #1374
- fix(collection-ideate): 鮮度判定に実行日基準の絶対鮮度チェックを追加 (#1427) by @daiki-beppu in #1431
- audience-personaを単一ペルソナ設計スキルへ再設計する by @daiki-beppu in #1375
- refactor: suno-helper の single-file fallback を廃止 by @daiki-bep...
v5.5.14
Added
feat(benchmark):yt-benchmark-commentsに-y/--yesを追加し、確認プロンプトをスキップできるようにした(#1334)feat(suno): Suno V5.5 向けプロンプト設計を更新し、ボーカル曲用の/suno-lyricスキルと lyric reference を追加。suno-lyrics.jsonの必須化・entry name 完全一致検証・auto-prep slug / quote source safety guidance も追加(#1305)
Changed
feat(thumbnail): single_step TTP 生成で参照画像を必須化し、複数候補では候補ごとに同一ベンチマークチャンネル内のユニークな参照画像を 1 枚ずつ割り当てるように変更。参照不足・重複・同一参照の再利用をエラー化し、参照なし生成フォールバックを削除(#1318)refactor(comments): コメント返信のRuleEngine/no_rule_matched経路を撤去し、基本フィルタ通過後の全コメントを Agent 生成返信の候補に変更。旧comments.rulesは後方互換で読み込むが処理では無視し、返信文の@投稿者名補完と NG ワード監査を追加(#1011)fix(serve):yt-collection-serveの POST body を 1 MiB に制限し、dir mode の/distrokid/releasesで実在する collection/disc のみ記録できるようにした(#953)docs(thumbnail): 下流チャンネルのconfig/skills/thumbnail.yamlと stock 運用状況を横断監査し、TTP 設定・stock 再利用・live collection 棚卸し結果をdocs/audits/thumbnail-ttp-2026-06-30.mdに追加(#520, #521, #522)docs(skills):masterupのyt-suno-fetch記述を将来案として明記し、Claude Code 固有表現を Codex 共用時に読み替える注記を AGENTS / CLAUDE に追加(#1181, #1182)fix(thumbnail):main.png/jpgを textless 動画背景 / 参照画像として扱う契約に統一し、upload thumbnail / DistroKid cover はthumbnail.jpg/pngのみを候補にするよう skill docs と回帰テストを更新(#1310)docs(channel-new):/channel-newの初期フローを TTP 対象確認中心に整理し、追加競合発掘・本格 benchmark/comments 収集は後続スキルへ委譲する方針に変更(#1309)docs(skills): 初投稿前に/playlistで未作成プレイリストを初期化し、/video-uploadの自動 assign に引き継ぐ導線を追加(#1314)feat(streaming): Terraform streaming module に配信元 MP4 の ffprobe プリフライトを追加。キーフレーム間隔と最低ビットレートを plan/apply 前に hard fail し、H.264 High profile は warning として通知する。README //streamingskill に-c:v copy前提の動画要件と推奨再エンコード例を追記(#1299)docs(skills): wf-next / wf-status / analytics-analyze / wf-new / channel-setup / video-upload / community-post / collection-ideate の記述を現行実装に同期し、optional config 一覧を README / AGENTS / CLAUDE に追記(#1173, #1174, #1175, #1176, #1177, #1178, #1179, #1180)feat(masterup): Suno 生成後の 2 clip を20-documentation/suno-prompts.jsonの歌詞有無で整理するyt-suno-select-tracksを追加。歌詞あり prompt は 1 clip 採用、instrumental は 2 clip 採用とし、極端に短い/長い失敗生成を stock 退避または削除できるようにした(#1308)docs(wf-new):/wf-newを子スキル順次実行のオーケストレーターとして整理し、Suno チャンネルではyt-collection-serve起動と疎通確認まで行って/suno-helperに引き継ぐ導線を追加(#1308)
Fixed
fix(upload):descriptions.mdの見出し不一致時に、期待する見出し一覧・不足/不一致の見出し・検出済み見出し・修正例を表示するよう改善(#1340)fix(suno-helper):yt-collection-serveの/collections/<id>/suno/prompts.jsonで URL エンコード済み collection ID をデコードし、スペースを含むフォルダ名でも prompts を取得できるようにした(#1338)fix(cost): Windows 環境でfcntlがない場合もcost_trackerとyt-generate-imageが起動できるよう、msvcrt/ プロセス内 lock fallback を追加(#1315)fix(upload): upload preflight がaudio.target_duration_min/maxを秒単位として誤判定していた master 動画尺チェックを無効化(#1313)fix(metadata-generator):BAHMetadataGeneratorの音声尺取得にffprobefallback を追加し、Suno 由来の.m4aがafinfo失敗だけで 0 秒扱いされないようにした(#1323)
Migration
所要時間の目安: 5〜10 分
local fix 衝突注意:
- masterup:
pair_selection.*/stock.*の既定値とyt-suno-select-tracks手順を追加。下流でconfig/skills/masterup.yamlや/masterupを手書き調整している場合は同期時に確認が必要。 - wf-new, suno-helper:
/wf-newが Suno-helper server 起動まで担う前提へ導線を更新。下流で開始フローを手書き調整している場合は差分確認が必要。
サマリ:
- Suno vocal 曲は 1 prompt から生成される 2 clip のうち 1 つだけを master 採用し、未採用 clip を stock に残せるようにした。
- instrumental 曲は従来通り 2 clip を活かしつつ、尺外の失敗生成だけを master から除外できるようにした。
/wf-new完了後に/suno-helperが既存yt-collection-serveを再利用できる運用へ整理した。
What's Changed
- [codex] Gemini Pro 既定利用を廃止 by @daiki-beppu in #1298
- feat(thumbnail): Codex既定プロンプトをTTP上位互換にする by @daiki-beppu in #1303
- docs: Suno V5.5向けプロンプト設計を更新 by @daiki-beppu in #1305
- [codex] wf-newとmasterupのSuno選別導線を追加 by @daiki-beppu in #1308
- docs(skills): スキル記述を現行実装へ同期する by @daiki-beppu in #1306
- [codex] 初投稿時に playlist 初期化を案内する by @daiki-beppu in #1316
- feat(streaming): 配信元動画のプリフライト検証を追加 by @daiki-beppu in #1304
- [codex] channel-newをTTP対象確認中心に整理する by @daiki-beppu in #1312
- [codex] thumbnail生成フローを文字入りから文字なし背景へ整理 by @daiki-beppu in #1311
- fix: Python版品質改善の残課題を整理する (#1225) by @daiki-beppu in #1317
- [#1313] issue-1313-upload-preflight-no by @daiki-beppu in #1319
- [#1315] issue-1315-windows-de-fcntl-ga by @daiki-beppu in #1320
- test: playlist初期化契約のレビュー残件を固定する (#1314) by @daiki-beppu in #1342
- feat(benchmark): yt-benchmark-comments に -y/--yes を追加 by @daiki-beppu in #1345
- fix(metadata-generator): M4A 尺取得を ffprobe fallback する (#1323) by @daiki-beppu in #1341
- [codex] Suno prompts の collection ID をURLデコードする by @daiki-beppu in #1344
- thumbnail の参照画像必須化と候補別参照割当を実装する by @daiki-beppu in #1322
- fix: descriptions.md 見出し不一致時の案内を改善 (#1340) by @daiki-beppu in #1343
- chore(release): v5.5.14 by @daiki-beppu in #1349
Full Changelog: v5.5.13...v5.5.14