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で固定した。yt-skillsの repo root 解決は「pyproject.tomlとsrc/youtube_automationと.claude/skillsを備え、実行中のパッケージを含む checkout」を探索する方式へ変更し、深さ非依存かつ無関係な親ディレクトリを root と誤認しないことをテストで機械担保(#2308)。 -
feat(dashboard): デジタル庁のダッシュボード設計ガイドを基準に、初期表示を概況・データ前提・指標定義・チャンネル比較・詳細の判断順へ再構成。比較表に詳細導線を統合し、狭幅では行をカード表示に切り替えて横方向の見切れを解消。ダークテーマの背景を黒からニュートラルグレーの階調へ調整し、カードとの境界を識別しやすくした。ガイドブック35ページ掲載の全10色相・各5段階配色を切り替えて比較できるパレットUIを右上の設定パネルへ追加し、選択色を背景・見出し・指標カードにも反映。36・37ページに沿って純増登録者の正負を符号と意味色で統一し、棒グラフへ再生数を常時併記。全パレットのライト/ダークで棒3:1・値ラベル4.5:1以上を検証した(#2546)。 -
fix(skills): #2566 のテンプレ再構成で生じた、配布 skill から解決できない参照 5 件を修正(wf-new/wf-next/wf-statusのCLAUDE.md §6、setup/references/check-runbook.mdの「fork 運用者向け」節、channel-new/references/claude-md-template.mdのスキル一覧)。あわせて契約テストtests/test_distributed_skill_references.pyを追加し、節番号参照の禁止と wheel 非同梱 docs への新規参照の禁止を機械担保(既存 13 ペアは ratchet の allowlist として凍結し #2568 で解消)(#2567)。 -
docs(skills): 下流配布されるCLAUDE.template.mdを 256→70 行へ圧縮し、run_in_background強制とsleep/untilポーリング禁止(規約「書かないこと」と矛盾)、skilldescriptionと重複するコマンド早見表・スキル一覧、下流で解決できない fork 運用者向け upstream パス表を削除。fork 参照一覧はdocs/development.mdへ移設。8 skill の「長時間処理の取り扱い」節を所要時間・ログ・完了報告だけに圧縮し、frontmatter 記法規約の実文重複をAGENTS.md/docs/development.mdから解消(#2565)。 -
docs(skills): スキル記述規約へ「例より引数」「spec は検証可能な形で置く」を追加し、CLI のchoices=/help=を単一ソースとする実行系インターフェース規約と、script / rubric / checklist / テストを spec として置く指針を明文化。あわせて段階的開示を実装し、setup550→184 行、automation-update572→466 行、masterup738→565 行、suno-helper337→291 行へ縮小して check runbook・fallback 経路・落とし穴をreferences/へ分離(#2565)。 -
docs(skills): スキル記述規約を Claude 5 前提へ改訂し、「Sonnet-safe」7 ルール(判断の余地を残さない設計)を必須 3 点(不可逆操作の承認ゲート / 前提の存在ガード / 配布先で解決できる参照)+「書かないこと」リストへ再構成。22 skill の設定読み込みゲート冒頭文、10 skill の Subagent Contract 共通文、8 skill のrun_in_background指示を削減し、下流で解決できないdocs/skill-design/参照 2 件を解消(#2565)。 -
refactor(dx): lefthook とローカル git hook・bootstrap wrapper(.lefthook/)を廃止し、品質ゲート(ruff / CHANGELOG / any 型)を CI へ一本化。any ゲートは.github/scripts/へ、worktree TMPDIR 分離は.nix/worktree-tmpdir.shへ移設し、yt-preflightの hook_policy 検査を削除。開発 bootstrap は direnv /nix develop(shellHook がuv sync)へ統一(#2534)。 -
refactor(config): yt-doctor・channel init/import・GCP bootstrap・Terraform apply からチャンネルルート.envの生成・検査・読込を削除し、GCP セットアップ完了条件を API/IAM/ADC quota project に限定(#2478)。 -
feat(skills):/suno・/thumbnail・/loop-video・/alignment-checkがdocs/channel/creative-constraints.mdの担当セクションを毎回参照し、不在時は既存チャンネルを止めず/creative-constraintsを案内(#2449)。 -
fix(masterup):config/channel/audio.jsonの目標尺を master loop 解決と upload preflight の SSOT にし、整数ループでは min–max を満たせない構成と目標尺外動画を明示 override なしで停止(#2469)。 -
feat(post-publish): 予約公開前の pinned-comment をpending_until_publishと実行可能時刻で履歴化し、公開後は同じ video ID で安全に再開。予定時刻超過後も private の場合は apply せず actionable error とする(#2470)。 -
feat(suno-helper): 通常時の Create 3–9秒・最大10 request を維持し、30秒内 burst と同一 run の Turnstile 検知時だけ中断可能な追加 cooldown/backoff を適用。正常投入で段階回復する共有 policy を serial/queue/retry に接続(#2472)。 -
docs(config): 配布 skill・README・認証/GCP 文書からチャンネルルート.envの作成・読込手順を除去し、ADC quota project・用途別 location・process env / OAuth file / 1Password の実経路へ統一(#2476)。 -
refactor(config): production Python からチャンネルルート.envの自動読込とpython-dotenv依存を削除し、Vertex AI client の location を用途別の内部固定値として必須化。GOOGLE_CLOUD_PROJECT/ ADC の project 解決は維持(#2477)。 -
docs(workflow):thumbnail::textless.enabled: falseの共有main.jpgを wf-new・loop-video・videoup・wf-next が正規の文字入り動画背景として貫通させる契約を追加(#2458)。 -
fix(metadata-audit): channel audio の target duration(分)を秒へ正規化してからローカル動画尺と比較し、60〜90分を1分扱いする誤検知を解消(#2468)。 -
fix(masterup): libmp3lame の bitrate (-b:a) と VBR quality (-q:a) の同時指定を解消し、FFmpeg 8.1.2 の末尾 frame flush error を防止(#2466)。 -
fix(video-upload): 2026-06-01以降の YouTube Data API quota をvideos.insert/search.listの独立100-call bucket とその他 endpoint の10,000-unit pool に分離し、plan と preflight を更新(#2467)。 -
fix(suno-helper): 可視で対話が必要な Cloudflare Turnstile challenge を CAPTCHA 待機へ接続し、非表示の background verification は誤検知せず、解消後に重複 Create なしで再開(#2471)。 -
fix(extensions): MV3 background の認証付き localhost mutation で runtime extension origin を明示送信し、サーバー側の exact extension lock と一致する場合だけOrigin: null/ 省略を許可。Suno downloaded/unattended と DistroKid release の token 取得・stale token 1回再試行を同じ境界へ統一(#2465)。 -
feat(thumbnail):textless.enabled: falseの opt-in で追加の textless 生成・承認を省略し、確定済みthumbnail.jpgを同一内容のmain.jpgとして検証付きで共用(#2457)。 -
fix(workspace):yt-channel-importが移行元・コピー対象内の通常ファイル symlink を安全検証後に実体化し、外部・対象外・壊れた・directory link は従来どおり rollback(#2462)。 -
fix(wf-auto): Suno の生成・playlist 追加・ZIP download・strict 検証を browser use で agent が完走し、人間への handoff を login / CAPTCHA の該当操作だけに限定(#2454)。 -
feat(flop-analysis): postmortem の一般化可能な学びを、出典付きの禁止制約案として明示承認後にcreative-constraints.mdへ還流する最終工程を追加(#2451)。 -
feat(masterup): 全曲の integrated LUFS 最大差を既定 2.0 LU で検証し、逸脱時は明示承認までマスター結合を停止するゲートを追加(#2450)。 -
docs(workflow): takt workflow routing を廃止し、GitHub issue +/issue-direct+ linked worktree を正規開発経路として文書化(#2453)。 -
feat(masterup): Suno 個別音源 cleanup を既定 ON にし、曲ごとの-14 LUFS正規化と明示 opt-out を標準化(#2445)。 -
feat(loop-video): Veo / Omni の既定プロンプトへ全画面の明滅・ストロボ・急な輝度変化・顔アップを避ける注意誘引ガードを追加(#2446)。 -
feat(suno): 既定 Exclude Styles に sudden drops・risers・drum fills・hard transitions・dramatic buildups を追加(#2447)。 -
feat(suno):data/insights.jsonlの検証済みlever=bgmopen entry をStyle・Exclude Styles設計へ還流する読み取り経路を追加(#2448)。 -
feat(skills): ペルソナと視聴シーンを、音・映像・サムネ・タイトル・測定の機械検証可能な制約へ翻訳する/creative-constraintsを追加(#2442)。 -
feat(skills): シーン定義・制約翻訳・公開前ゲート・指標還流の価値ループを読み取り専用で診断する/value-loop-auditを追加(#2443)。 -
refactor(domains): Analytics、thumbnail、media、DistroKid、weekly vote の domain 公開面を追加し、consumer の旧 owner 参照を domain 境界へ接続(#2306)。 -
fix(upload/oauth): upload と OAuth の CLI 境界で想定されたドメイン・入出力エラーを安全に終了し、redaction の共有 infrastructure owner と現行移行先ドキュメントを正本化。 -
B4 の OAuth / secret / retry / error infrastructure owner と playlist の YouTubeClients 注入契約を整理。
-
fix(doctor): workspace root の--channel選択を診断対象へ反映し、channel 配下からの診断でも root のpyproject.toml・共有 skills・.agents/skills・重複ファイル検査を利用するよう修正(#2463)。 -
breaking(refactor/domains): Suno 14旧utils.suno_*module とutils.metadata_generatorを削除し、domains.suno/domains.suno.downloaded/domains.metadataへ移行。旧 import path は恒久 facade として提供しない(#2305)。 -
feat(skills-sync): Claude Code settings の allow / deny / hook を既存値保持・hook 明示承認付きで downstream へ JSON merge 配布し、開発専用 skill を同期対象外として既存配置は prune 可能にした(#2425, #2426, #2428)。 -
fix(upload):assets.master_videoを動画選択の正本にして Preview 誤選択を防ぎ、plan で全 locale の100文字制限を検証。タイトル短縮の再承認と公開時刻 conflict の停止契約も追加(#2429, #2434, #2437, #2438)。 -
fix(videoup): runtime mask helper を uv 環境で起動し、overlay を一回だけ切り替える env / CLI override を追加(#2430, #2431)。 -
fix(suno-helper): duration 再生成後は最新 clip pair を playlist 対象に採用し、collection server の拡張検出 fail-loud 契約と redirect 時の起動ログ即時出力を明確化(#2432, #2433, #2439)。 -
docs(workflow): thumbnail 自動選択と承認 gate の組合せを決定表にし、長時間 subagent の Monitor arm + self-stop を禁止して active polling を正規化(#2435, #2436)。 -
feat(workflow):/wf-autoの企画選択、企画プレビュー費用、Lyria 生成、動画プレビュー、Veo 課金・品質確認をチャンネル単位の明示 opt-in skip 設定で無人化し、既定の承認停止、安全上限、監査用成果物を維持(#2416, #2418, #2419, #2420, #2421, #2422)。 -
feat(dashboard): 全チャンネルの公開予約ストック・更新状態・主要Analytics指標を横断比較できる一覧テーブルを追加し、在庫昇順、未取得の分離、在庫閾値の警告、狭い画面での内部横スクロールに対応。 -
refactor(configuration): 設定 owner をyoutube_automation.configurationへ移し、wf_next.approval_gatesとcomments.rulesを廃止して旧キーをConfigErrorで拒否。skip_audio_approval/skip_upload_approvalとwf-batchの新経路を正本化(#2304)。 -
fix(dashboard): 選択前から全チャンネルの主要指標をカード一覧で比較できる構成へ変更し、折り返し可能な Badge 群によって狭い画面でも更新状態・公開予約数が右端から見切れないように修正(#2399)。 -
refactor(skills): chain manifest の正規承認 field をapprovalGate.skipへ移行し、true = 承認省略に統一。旧enabledは反転解決する後方互換 alias として受理し、新旧同時指定は拒否(#2404)。 -
refactor(config):workflow.post-publish.skip_approvalsを正規キーとして追加し、true = 承認省略に統一。旧approval_gatesは逆向きの後方互換 alias として維持し、同一 step の新旧同時指定は拒否(#2403)。 -
refactor(workflow):/automation-run互換 skill を削除し、一気通貫 workflow の公開入口を/wf-autoに一本化。旧target_workflow: automation-runは黙って変換せず移行案内付きで拒否し、.automation-run/の lease・履歴パスは維持(#2400)。 -
security(scripts):open/ffmpegへ渡すファイルパスを絶対パス化し、先頭-を option と誤解釈する余地を排除(#2396)。 -
security(streaming): stream key / Discord webhook の Terraform file provisioner staging を素の/tmpから root 所有 0700 の/run/youtube-stream-provisionへ移し、転送直後の権限露出を解消(#2395)。 -
security(auth): 1Password fallback の client_secrets を tempfile 経由から in-memory 渡しへ変更し、異常終了時に平文 JSON がディスクへ残る経路を削除(#2394)。 -
chore(actions-deps): CI / dashboard / extension release workflow の外部 action を最新安定版へ更新し、全uses:を version コメント付き immutable commit SHA に統一する supply-chain 契約を追加(#2357)。 -
chore(terraform-deps): 3 stack の Terraform CLI を 1.15.x、Google / Vultr / null / external / tls provider を最新安定 major の bounded constraint へ更新し、lockfile と静的検証契約を同期(#2358)。 -
chore(extensions-deps): 3 helper と shared UI の npm 依存、security overrides、pnpm toolchain を最新安定版へ統一し、4 workspace の lockfile・Nix・release 検証契約を同期(#2356)。 -
chore(deps): Python の runtime / development dependencies と Nix input を最新安定版へ更新し、google-genai2 系・Python 3.14 開発環境へ移行。japanize-matplotlibの Python 3.12+ 互換用に公式推奨の Setuptools distutils shim を明示し、deprecated のgoogle-auth-httplib2は Google API client の transport 依存が残るため 0.4.0 へ更新して残置判断を再記録(#2355)。 -
fix(dashboard): チャンネル概要行を縦積みと折り返し可能な Badge 群へ変更し、狭いカード幅でも更新状態・公開予約数・動画数が右端から見切れないように修正(#2399)。 -
feat(dashboard):yt-dashboardの通常起動時に全登録チャンネルの Analytics を直列更新し、失敗をチャンネル単位で隔離して前回 snapshot を表示する。概要カードの「準備完了」を YouTube の将来publishAtに基づく公開予約 N本へ置き換え、OAuth のない E2E / 配布確認用に--skip-refreshを追加(#2397)。 -
feat(dashboard): React / Vite と公式 shadcn/ui Base UI primitives による読み取り専用 Analytics dashboard、同一 origin の loopback Python server、yt-dashboard --port/--open、keyboard 操作、light / dark theme、Vitest / Playwright / wheel smoke を追加(#2385)。 -
feat(dashboard):~/.config/tayk/channels.jsonの絶対 path registry loader と、各チャンネルの最新 Analytics snapshot を概要・動画指標・CTRへ正規化する読み取り専用 read model/APIを追加。snapshot 欠損・破損・meta 不正はチャンネル単位の状態として隔離する(#2387)。 -
refactor(workflow):/wf-autoを一気通貫 workflow の正規入口にし、scheduler の新規既定をwf-autoへ変更。/automation-runは既存の明示設定を保つ薄い互換 alias とし、.automation-run/の lease・履歴パスは維持する(#2383)。 -
feat(workflow):/wf-autoを追加し、active collection が無い場合は state を捏造せず/wf-newから開始し、作成された collection を同じ run で固定して制作・公開・post-publish まで再評価する一気通貫入口を実装。既存 collection の再開、無人実行の手動介入履歴、公開禁止、upload reconciliation、完了済み公開後処理の契約を共有 resolver で維持する(#2382)。 -
videoupの overlay H.264 encoder を同一条件で計測し、既定のlibx264経路を維持しつつ、VideoToolbox / NVENC の明示 opt-in、codec 固有引数、利用不能・起動失敗時のlibx264fallback、再現可能な benchmark を追加(#2372)。 -
feat(live-chat): アクティブ配信を検出し、YouTube の指定間隔で新着チャットを取得、Codex の構造化判定と機械フィルタ・返信上限・履歴による重複防止を通して投稿するyt-live-chat-replyを追加(#2374)。 -
feat(streaming): ライブチャット返信 daemon を opt-in で既存 Vultr VPS に同居させ、ephemeral Terraform 変数による 1Password 認証注入、専用 systemd service、Codex CLI / Python package の pin 配備と無効化時の安全な削除を追加(#2375)。 -
docs(live-chat): 配信中チャットの設定・人間認証・1Password 保存・VPS 配備・検証・障害復旧を一気通貫で案内する/live-chat-replyskill を追加し、/comments-reply・/streamingとの相互排他、設定サンプル、主要モジュール文書を整備(#2376)。 -
/automation-scheduleの既定登録先を Codex / Claude のネイティブ Scheduled Task へ移し、依存性に応じた Cloud/local 分岐、backend ID による重複防止、明示承認時だけの launchd / cron fallback を追加しました(#2369)。 -
feat(channel-new): 承認済み TTP ごとの再生数上位 5 Long VOD から Shorts / live を除外して初期動画尺の min/max を外向き丸めで導出し、根拠提示・ユーザー承認・audio.json 反映・承認済み例外・yt-doctor 完了ゲートを追加(#2368) -
fix(suno-helper): 投入方式の選択 radio に残っていた青い info 色の override を撤去し、枠と中央ドットが overlay の primary ブランド色へ追従するように統一(#2366) -
fix(suno-helper): 投入方式の選択中カードでタイトルと説明文を黒い foreground 色へ戻し、枠・淡い背景による選択表示は維持(#2364) -
refactor(extensions-ui): 3 helper の手組みフォーム・空状態・警告・確認 UI を公式 shadcn/ui Base UI の Field / Input / Select / Alert / AlertDialog / Empty / ScrollArea へ移行し、ShadowRoot portal・最前面表示・選択前の配信元更新・既存 data / ARIA 契約を維持(#2360) -
fix(extensions): Suno・DistroKid Helper のヘッダーと primary 系 UI を指定 OKLCH 配色へ統一し、実描画色に対する WCAG AA コントラスト検証を追加(#2352) -
fix(extensions-ui): shared Shadow DOM theme の spacing・typography・radius・responsive token を px 基準へ固定し、ホストページの root font-size が Helper overlay の視認サイズを縮小しないように修正(#2351) -
fix(suno-helper): コレクション一覧と楽曲一覧を shared shadcn/ui Scroll Area へ移行し、件数が多い場合は同じ高さ上限で一覧内を縦スクロールできるようにした(#2353)。 -
feat(extensions): Suno・DistroKid・Community Helper の共通 overlay ヘッダーへ、公式一次資料に基づく識別可能なサービス別配色と WCAG AA コントラスト検証を追加(#2327) -
refactor(community-helper): native popup を YouTube チャンネル投稿ページ上の shared shadcn/ui Shadow DOM overlay へ移し、drag・viewport clamp・最小化・action toggle・reload 復元を追加した。run / stop / progress / error は background が送信元と同一タブへ relay し、既存の server fetch 境界と投稿 runner を維持する(#2320)。 -
refactor(distrokid-helper): popup UI をdistrokid.com/new上の shared shadcn/ui Shadow DOM overlay へ移し、drag・viewport clamp・最小化・action toggle・reload 復元を追加した。command / progress は background が送信元と同一タブへ型付き relay し、既存 fetch・フォーム注入・停止・配信済み記録を維持する(#2319)。 -
feat(suno-helper): 完了通知 UI を shared shadcn/ui Switch 1つへ簡素化し、最終 FINISHED / ERROR で OS 通知と状態別の固定 Web Audio を独立して発火するようにした。旧 preset は enabled を維持して自動削除し、通知失敗は run 結果へ影響させない(#2334)。 -
refactor(extensions-ui): draggable overlay の shell・pointer drag・viewport clamp を shared UI、状態型・純関数・helper key 注入型 storage adapter を extensions shared へ抽出した。Suno は共通 consumer へ移行し、既存 selector・最小化・action toggle・reload 復元を維持する(#2318)。 -
fix(extensions-ui): Suno / DistroKid / Community helper を OS の配色設定に依存しないライトテーマへ固定し、薄いグレーのページ背景と白い card / popover を共通 token に定義した。dark variant・system theme watcher・dark theme token を撤去して3拡張の表示契約を統一した(#2326)。 -
feat(suno-helper): コレクション一覧と楽曲一覧を shared shadcn/ui Collapsible で個別に折りたためるようにし、初期状態を閉、見出しに件数を表示した。楽曲一覧の既存スクロール上限と選択・実行ロジックは維持する(#2330)。 -
refactor(extensions-ui): shared Alert / Button / Card / Checkbox / Field / Label / RadioGroup / Select を現行 shadcn/ui Base UI registryへ再同期し、完全な Field composition、invalid state、現行 size・animationを追加した。独自 status variant、Radio選択色、ShadowRoot内Select portalは維持する(#2324)。 -
feat(suno-helper): paused / completed の collection queue summary にアクセシブルな Close を追加し、paused はインライン確認後、completed は即時に永続 queue state を削除できるようにした。running queue と単発 Resume state は破棄対象外とする(#2328)。 -
fix(extensions-ui): shared Base UIRadioGroupItemの選択時 root 塗りつぶしを除去し、semantic color の円枠と中央配置した indicator dot で状態を示す公式 primitive 構成へ是正した。Suno の mouse / keyboard 選択、保存、disabled、カード配色は維持する(#2332)。 -
feat(extensions): Suno / DistroKid / Community helper に用途とブランド色を区別できる透過 PNG アイコンを追加し、WXT が 16 / 32 / 48 / 128px の manifest icon を自動検出する契約を固定した(#2335)。 -
fix(suno-helper): 曲リストとコレクション選択の checkbox をラベル先頭行へ揃え、異常値再生成 OFF の余白も同じ 2px 基準へ統一した。1行時のカード中央配置、完了音、選択 callback・ARIA は維持する(#2325)。 -
perf(ci): issue イベントごとの lint workflow を廃止し、PR / main push の changed path を共通 classifier で判定するようにした。requiredlint/testは常時結果を返しつつ、extension-only 変更では Python full suite・wheel smoke・Windows・ADR を起動せず、Extensions も影響 helper だけを検証する(#2333)。 -
chore(extensions-ui): 公式 shadcn/ui skill をリポジトリ管理下へ導入し、Claude Code / Codex / wheel sync で共有するinfo・公式docs・registry diff先行のUI実装手順を追加した(#2323)。 -
fix(collection-serve):collections/planningの Suno 一覧と個別 prompts 配信から、対応するcollections/live/<id>/workflow-state.jsonがphase: completeの collection を除外した。不在・破損・未完了状態は従来どおり表示し、DistroKid 一覧にはフィルタを適用しない(#2331)。 -
fix(suno-helper): 異常値再生成オプションを1行時は中央、説明表示時は先頭行へ揃え、曲リストのチェックボックスにコレクションカードと同じ余白基準を適用した(#2316)。 -
fix(suno-helper): 投入方式の選択カードを薄い info 背景と青い枠へ調整し、light / dark の両方でモード名と説明文を読みやすくした(#2315)。 -
docs(channel-new): localization 言語の生成規則を、TTP 多言語では競合セットを完全踏襲、TTP 非多言語ではenのみ、非 TTP では単一言語・localizations 省略可の 3 分岐へ固定した。独自の高 CPM 言語追加を廃止し、生成テンプレートからdeを除外した(#2295)。 -
fix(doctor):yt-doctorの OAuth / Reporting 診断が期限切れ access token を refresh token で自動更新し、更新結果をtoken.jsonへ安全に保存するようにした。refresh token が失効・欠落した場合だけブラウザ再認証を案内し、2 診断の token 判定を統一した(#2293)。 -
fix(viewer-voice):yt-benchmark-commentsがcommentThreads.listに必要なyoutube.force-sslを持つ full-scope token を使うよう修正し、readonly token 発行済み環境で全件 403 になる問題を解消した(#2286)。 -
fix(collection-preflight): 単一言語チャンネルでは共有requires_scene_phrases()判定に従ってscene_phrasesを要求せず、多言語時だけ検証するよう修正した(#2270)。 -
docs(auth): doctor の YouTube OAuth next_action と/setupを、AI/setup がuv run yt-oauthを background 起動して stdout の同意 URL を中継・exit待機・doctor再検証し、人間はブラウザ同意だけを担う契約へ統一した(#2279)。 -
feat(videoup): ring visualizer がfill.type: conicalの角度→色相フルスペクトル充填を振幅・円弧 mask 内へ合成できるようにし、旧 channel-local ring patch の設定移行表を追加した(#2278)。 -
fix(doctor/automation-update): OAuth token の失効時にupload_readyがRefreshErrorでクラッシュせず再認証用の構造化 fail を返すようにし、channel_config=okなら他 doctor check の非ゼロ終了で apply を失敗扱いにしないよう修正した(#2277)。 -
fix(automation-update): tag pin の check/apply が GitHub release 一覧から本体の stablevX.Y.Zだけを publish 日時順で選ぶようにし、より新しいext-vX.Y.Z拡張 release を追従先と誤認して exit 2 になる問題を修正した(#2276)。 -
test(pytest): repository / docs / CI / packaging の静的契約をrepo_contract、実 tool・process・待機を伴うテストをslowmarker へ分類し、製品 behavior 用 fast lane と変更種別別の最小コマンドを追加した。CI の無選別 full suite は維持する(#2268)。 -
test(packaging): candidate wheelを隔離venvへinstallし、空の擬似下流への全asset sync、sourceとの完全一致、.agents/skillssymlink、installedyt-skills diffの差分なしをCIとローカルで同じpytest targetから検証できるrelease前E2E smokeを追加した(#2266)。 -
fix(skills): thumbnail の Codex 単発・batch と videoup の fill helper が fresh / partial worktree で通常のuv runにより依存同期してから project code を実行するよう統一した。禁止語 config を読めない場合は Codex 起動前に fail-closed とし、環境不備と config 不備を復旧手順付きで区別する(#2269)。 -
fix(doctor,setup): setup の全コマンド起動・実行・再診断を AI / setup 側へ統一し、認証時の人間の責務をブラウザ上のログイン・アカウント選択・OAuth 同意・秘密情報入力だけに限定した。認証 action は実行主体・人間の役割・起動コマンドを構造化して返し、--applyの無人認証拒否は維持する(#2262)。 -
refactor(extensions): 3 helper の shadcn/ui Button・Card・Alert・Select、cn()、Tailwind theme contract を workspace package@youtube-automation/uiへ集約し、各 helper の単体 install / test / build / zip 契約を維持した(#2246)。 -
refactor(community-helper): Popup を shadcn/ui の Button・Alert・Card primitive と共通 theme token へ移行し、既存の server URL、互換性確認、3 投稿進捗、エラー表示の挙動を維持した(#2245)。 -
docs(setup):/setupwizard の automation 導入後ループをyt-doctor --apply --jsonに統一し、completed/human_required/decision_required/command_failedの停止理由ごとに対話・再実行する手順へ更新した。変更前の明示承認と project・billing flag の累積保持を定め、automation 導入前の bootstrap、HUMAN STEP、トラブルシュートは維持した(#2226)。 -
feat(doctor):yt-doctor --applyを追加し、next_action.kind=ai-execの診断・実行・再診断を human/project・billing 決定待ち/完了まで連続化した。停止理由と実行履歴は JSON で返し、対話 OAuth は実行せず、失敗・無進捗時は check・command・stderr を保持して停止する(#2225)。 -
feat(suno-helper):FINISHEDとERRORを区別する Web Audio 合成音を追加し、shadcn/ui の完了音 ON/OFF・3 preset・試聴 UI と永続設定を overlay に追加した。手動STOPPEDでは鳴らさない(#2077)。 -
feat(suno-helper): collection 選択を shadcn ベースの checkbox 一覧へ拡張し、選択順ではなく server 一覧順で生成・playlist 追加・ZIP download を直列実行する永続 queue を追加した。collection 間はページ reload で clip tracker / multi-select を分離し、部分失敗後も後続を継続して成功・失敗 summary と失敗分再実行を提供する(#2029)。 -
feat(thumbnail): 単発codex-image.shを変更せず、config/CLI で同時起動数を制御し、preflight を 1 回だけ行って複数候補を並列生成するcodex-image-batch.shを追加した。部分失敗時も残りを完走して失敗一覧を返す(#2028)。 -
refactor(channel-new): standalone/channel-researchを/channel-newの第 6 モード「分析モード」へ挙動不変で統合し、既存の入力 gate、subagent 委譲、TTP 分析、成果物パスを維持したまま skill と導線を集約した(#2027)。 -
feat(thumbnail): 伸びた動画の CTR と流入構成からサムネ寄与を gate し、勝因を 1 要素ずつ Studio 比較して検証済み champion を次回/thumbnailの internal TTP へ還元する/thumbnail-iterateを追加した。複数要素が独立して勝った場合は機械的に合成せず、一貫した再生成と最終比較を要求する(#1969)。 -
feat(workspace):yt-channel-importを追加し、既存の単一 channel repository から channel 固有データだけをchannels/<slug>/へ transaction copy できるようにした。meta 由来 slug の確認、必須 config と実 load の検証、auth 所在報告、symlink / 上書き拒否、生成 media を除外する workspace.gitignorescaffold、.env/CHANNEL_DIR警告、共通yt-skills sync案内と external user 向け移行・rollback・archive ガイドを追加した(#1949)。 -
feat(workflow):/automation-runを追加し、active collection 1 件を durable lease 下で選択して、Lyria / Suno の音源生成、masterup、動画・metadata 生成、公開許可付き YouTube upload、post-publish まで既存 skill へ状態駆動で委譲できるようにした。工程ごとに成果物を再評価し、失敗・手動介入・公開未許可では停止理由と再開地点を履歴へ記録する。定期実行の既定 target はautomation-runとし、未設定チャンネルのenabled: false/allow_external_publish: falseは維持する(#1894)。 -
feat(suno-helper): 定期実行用の loopback 限定 launch URL 契約と CLI を追加し、collection / entry / DL 形式 / entry・concurrency・retry 上限を指定可能にした。既存 resume state から entry / playlist / download を重複なしで再開し、上限超過は checkpoint、ログイン・CAPTCHA・課金確認・UI 非互換は手動介入理由として保存する。手動 overlay flow は従来挙動を維持する(#1893)。 -
feat(extensions):community-helperを統一ext-v*Release の build / zip / asset / インストール案内へ追加し、Extensions CI で Oxlint + Oxfmt、TypeScript、Vitest、WXT build を必須化した。release 前の単一検証スクリプトと automation-release の asset 完了条件も3拡張へ同期した(#1715)。 -
feat(extensions):community-helperの content runner を実装し、3 投稿の本文・画像・予約日時・確定を逐次処理する。localhost fetch と画像の base64 wire 転送を background の extension context へ移し、途中失敗時の composer cleanup と重複再実行ロックを追加した。content injection は YouTube チャンネル投稿ページに限定し、Studio page-origin CORS 例外を撤去した(#1714)。 -
feat(extensions): 実機 DOM map に基づくshared/community-dom.tsを追加し、community-helper の本文注入、画像添付、予約日時設定、投稿完了待機を locale-independent な selector と open Shadow DOM fallback で fail-loud に実装した(#1713)。 -
feat(extensions):community-helperの WXT + React + TypeScript スキャフォールドを追加し、YouTube Studio 限定の MV3 最小権限、Studio origin に限定した/versionCORS 互換チェック、Popup の 3 投稿進捗、型付き background/content relay を実装した(#1712)。 -
feat(extensions): community-helper 共通層にCommunityPostwire 型、投稿 JSON/画像の fail-loud API client、runner フェーズ定数を追加した(#1711)。 -
feat(collection-serve): community-helper 向けにGET /community/posts.jsonと投稿画像ルートを追加し、channel root 内の画像だけを Content-Type 付きで配信する。Chrome 拡張と YouTube Studio origin の CORS、および共有 route 定数を同時に追加した(#1710)。 -
feat(community):/community-draftを--batch専用の決定的 JSON generator へ移行し、旧 type 別 Markdown/clipboard フローを撤去した(#1709)。
Added
-
yt-channel listを追加し、workspace 内の利用可能な channel slug を副作用なく一覧表示できるようにした (#2052) -
skills:
/video-upload後続を config opt-in の/post-publishチェーン(community-post → pinned-comment → metadata-audit)へ委譲し、step ごとの承認ゲートと video ID 単位の再開可能な実行履歴を追加した。workflow.post-publish未設定時は従来の community-post 単独案内を維持する (#1824) -
feat(loop-video):yt-generate-loop-videoに--engine {veo,omni}を追加した。既定の Veo 経路は維持し、--engine omniでは Gemini Developer API のgemini-omni-flash-previewを API key 認証で呼び、画像→動画の一発生成、URI delivery の完了待ち、ループ補正まで行う。モデル名・timeout・poll 間隔は skill-config のomniセクションで上書きできる(#1722)。 -
動画構成を明示する
video_type契約を追加し、loop/static の背景選択と将来の生成 hook 拡張ポイントを整備 (#1723) -
feat(community): optional のconfig/channel/community-draft.json::community_draftを型付き設定として追加し、投稿テンプレート、決定的な変数ソース、公開 timezone 基準の予約日時算出契約を定義した(#1707)。 -
feat(videoup):workflow-state.jsonv2 のassets.master_audio/assets.master_videoを基準に未動画化コレクションを検出し、既存generate_videos.shを collection 単位で並列実行するyt-generate-videos-batchCLI を追加した。成功時のassets.master_video更新はファイルロック下で直列化し、--include-liveと CLI / env / skill-config による並列度指定を提供する(#1658)。 -
docs(loop-video):loop.mp4の生成・リトライ・継ぎ目補正後に動画プレイヤーを開き、静止画 fallback・動き・ループ継ぎ目を目視確認する必須承認ゲートを追加した。不受理時は--smoothまたは課金再承認付き Veo 再生成へ戻し、再プレビューで承認されるまで/videoupへ進まない(#1717)。 -
feat(auth): multi-channel workspace の OAuth client secret 解決を channel 配下優先・workspace ルートauth/client_secrets.jsonfallback に拡張した。複数チャンネルが個別の client secret を持つ場合、yt-doctorはルート共有へ統合可能であり全チャンネルの再認証が必要なことを info レベルで案内する。強制・自動統合は行わず、単一チャンネル構成の挙動は維持する(#1950)。 -
feat(thumbnail):ab_test.enabledと最大 3 件の pattern(name / variation)を skill-config に追加し、yt-generate-image --ab-patternが pattern 別 clause を最終プロンプトへ合成できるようにした。/thumbnailは全 pattern を個別承認してthumbnail-<name>.jpgを確定し、先頭 pattern と同一内容のthumbnail.jpgを維持する(#1904)。 -
feat(workflow): チャンネルごとの定期制作設定workflow.scheduled_automation(有効化 / timezone / run_time / cadence / 対象 workflow / 再試行 / 並行実行禁止 / 通知 / 外部公開許可)を optional で追加し、未設定チャンネルは全 default(enabled: false)で従来挙動を維持する。新規スキル/automation-scheduleを単一入口として、前提診断(detect_runtime.sh)→ config 生成・差分更新(schedule_config.py、loader と同一検証)→ Claude Code(claude -p)/ Codex(codex exec)向け定期実行ジョブの作成・更新・確認・停止(scheduler_job.sh、launchd / cron へ同一 label で冪等反映)を行えるようにした。実行ラッパーrun_scheduled.shは lock による実行排他・再試行・allow_external_publish: false時の外部反映禁止プロンプト注入を担い、外部公開の有効化には skill の明示承認ゲートを必須とする(#1892)。 -
Breaking: benchmark 系 CLI の競合 slug 指定を
--channelから--competitorへ即時リネームした。対象はyt-benchmark-collect/yt-video-analyze/yt-thumbnail-compare/yt-benchmark-commentsで、旧--channelは alias として受理せず移行先を明示して終了する(#1948)。 -
skills:
/analytics-runを追加し、Analytics の収集・分析・最新レポート表示を成果物鮮度に基づいて一括実行・途中再開できるようにした (#1823) -
feat(strategy): 状態を持たず任意実行できる/market-researchskill を追加した。TTP 入替候補とニッチ仮説を根拠・不確実性付きで会話内に返し、明示依頼時だけ日付付き Markdown を保存する。/channel-newから/discover-competitorsと用途を分けて案内し、config や TTP は自動変更しない(#2051)。 -
docs(skills): 全 48 SKILL.md の frontmatter 直後に機械抽出可能な前工程/後工程ブロックを追加し、散文・矢印形式の依存一覧を統一した。skill-authoring-guidelines.mdに書式、なし/ 共通基盤の表現、rg抽出方法、実在例を規定した(#1821)。 -
feat(videoup):overlays.audio_visualizer.style: "heart"を追加した。cardioid の角度と法線距離へshowfreqsを再マッピングし、実行時生成する離散バー mask で、音楽スペクトラムがハート輪郭上を内外へ波打つ。既存のfill/rounding/glowと組み合わせられ、外部 asset は不要(#1689)。 -
対応する
yt-*CLI に共通の--channel <slug>選択を追加し、CHANNEL/CHANNEL_DIR/ cwd から multi-channel workspace の対象チャンネルを安全に解決できるようにした (#2049) -
docs(setup):yt-doctorの upload 診断を/setupの利用者導線へ接続し、YouTube チャンネル未作成時の HUMAN STEP、remote channel ID のyt-channel-settings pull --channel-id-only反映、local / remote ID 不一致時の非自動選択、quota / auth / network 失敗時の再試行・再認証導線を明記した(#2054)。 -
fix(takt): repo-local.takt/config.yamlから provider / model routing と concurrency の重複指定を除去し、グローバル設定を正しく継承するようにした。persona_providersが deep merge されず project 側の辞書で丸ごと置換される takt 0.51 の解決契約をテストで固定し、グローバルの Luna / Sol / Terra 割当が失われる回帰を防止する。repo-localliteは worktree 環境契約だけを差分として残し、グローバル版のmax_steps: 18/ loop threshold 5 へ同期した。project facet には takt 0.51 builtin の Knowledge / Policy 確認と最新の CI 委譲ルールを取り込んだ。 -
feat(analytics):benchmark.channelsの pre-filter 投稿走査をupload_scanとして保存し、60 日以上の投稿停滞と直近 90 日平均再生数の前期比 50% 以下を判定するyt-ttp-healthを追加した。/analytics-analyzeの analysis JSON を schema v2 に更新し、健全・アラート・データ不足・入力欠損を区別するttp_healthを必須化した(#2050)。 -
feat(videoup):overlays.audio_visualizer.styleに後方互換のbarとmirror-mountain/ring/ring-linepreset を追加した。bars/size/position/ring.inner_r/ring.length/ring.arc_degを config から filtergraph へ反映し、不正 style は ffmpeg 起動前に有効値付きで拒否する。追加 style のバー間隔・円弧マスク PNG は同梱 Python helper が一時領域へ実行時生成するため、外部素材・補助スクリプトは不要(#1684)。 -
feat(videoup):overlays.audio_visualizerにfill(solid / gradient / rainbow)、中央鏡像、上下対称、角丸、nested glow を追加した。gradient / rainbow 素材はyt-audio-visualizer-fillが実行時生成し、不正な配色は FFmpeg 起動前に拒否する。既存の fill 未指定・フラット glow config は従来挙動を維持する(#1686)。 -
feat(thumbnail):auto_selection.mode(selection_only/full)を追加し、CLI 結果と workflow-state 監査ログへの mode 記録、監査値の strict 検証、fullで適格候補ゼロ時の手動フロー切替ガイダンスを実装した(#2166)。 -
feat(captions):suno-lyrics.jsonとdescriptions.mdのトラック開始時刻・総時間から、各トラック区間へ歌詞行を均等配置した重複なし SRT を生成するyt-captions-uploadを追加した。--applyでは YouTube Data API の captions resource を使い、同一言語の既存字幕を対話確認または--existing update|skipで更新・スキップして二重追加を防ぐ。captions list / insert / update の quota も発行 request 単位で記録する(#1809)。 -
feat(doctor):yt-doctorの upload preflight が認証済み YouTube アカウントの実チャンネルをchannels.list(mine=true)で確認し、チャンネル未作成・ローカル ID 不一致・認証 / quota / network 起因の API 失敗を区別して案内するようにした。成功時と不一致時は--jsonのdataに remote channel ID を含め、ローカル設定だけでは検出できなかった token / meta.json の取り違えを upload 前に停止する(#2053)。 -
feat(auth): OAuth token の scope 分離を導入し、read-only skill が write scope の token を共用しない設計にした。YouTubeOAuthHandlerにREADONLY_SCOPES(youtube.readonly+yt-analytics(.monetary)?.readonly、write scope なし)と用途別 tokenauth/token.readonly.jsonの発行・解決(create_readonly/readonly_token_path。探索順は #1721 と同じ channel 側 → main worktree 側)を追加し、新 CLIyt-oauth(--readonlyで readonly token 発行)を登録した。ServiceRegistryの read 系(analytics/reporting/ 新設のyoutube_readonly/credentials_readonly/get_readonly_handler)は readonly token を優先し、未発行時は warning ログで発行手順を案内した上でtoken.jsonへフォールバックする(サイレント失敗しない。既存運用は無変更で動作)。read-only 系呼び出し元(analytics 収集 / benchmark / channel-status / metadata-audit / playlist-status / discover-competitors / stream-bandwidth)を readonly 経路へ移行し、write 系(upload / playlist 管理 / bulk update / コメント投稿)は従来どおりtoken.jsonを使う。skill × 実効 scope の対応表と運用手順をdocs/oauth-scopes.mdに新設した(#1699)。
Added
-
feat(videoup):generate_videos.sh --preview [15-30]で effect / audio visualizer / subscribe popup を反映した短尺 MP4 を01-master/<Collection>-Preview.mp4として生成できるようにした。プレビューは全尺 Master と workflow state を更新せず、全尺の経路種別・時間見通しを表示する。/videoupは visual 設定が有効な場合、プレビューの明示受理前に全尺エンコードへ進まない(#1749) -
yt-retention-timelineを追加し、収集済み retention drop を/video-analyzeの scene / BGM 区間へ自動照合して JSON / Markdown レポートを生成できるようにした (#1814) -
feat(cost): 動画 metadata 一括更新 3 CLI(yt-bulk-update-desc/yt-shorts-bulk-update-loc/yt-bulk-update-synthetic-media)に YouTube Data API quota 記録(cost_tracker.log_quota)を配線した。read-before-write を含む発行済みリクエスト 1 回につき 1 エントリ(videos.list/channels.list/playlistItems.list= 1 unit、videos.update= 50 units)を記録し、dry-run は実際に発行した read のみ、batch / pagination はリクエスト回数と記録件数が一致する。quota はリクエスト失敗時も消費されるため、update 失敗時も記録した上で従来の例外・部分進捗契約(continue / exit code / 最初の失敗の再 raise)を維持する(#2058)。 -
feat(cost): channel status・stream key・metadata audit・playlist status の read API 呼び出しに quota 記録を配線した。yt-*4 CLI(get_channel_status/yt-fetch-stream-key/metadata_audit/playlist_status)の各 read リクエスト(channels.list/playlists.list/playlistItems.list/liveStreams.list/videos.list、Analytics はreports.queryをyoutube-analytics-apiとして別 service で記録)が、成功・失敗のどちらでもリクエスト 1 回につきcost_tracker.log_quotaを 1 回だけ呼ぶ(pagination はページ = リクエスト単位で記録)。tracker が書き込み不能・例外を吐く場合も従来の出力と終了状態を変えない(--stdoutの pipe 契約保護のため警告は stderr へ逃がす)。benchmark / upload agent の read API と write API は兄弟 issue のスコープ(#2055)。 -
feat(cost): benchmark read API の quota 記録を配線した。benchmark_collectorの channels / playlists / playlistItems / videos 各 list request とfetch_benchmark_commentsの commentThreads.list が、page / バッチ単位の request ごとにcost_tracker.log_quota("youtube-data-api", "<method>.list", 1)を記録する。quota は失敗した request でも消費されるため記録は成否に関わらず行い(try/finally)、元例外の伝播・既存のエラーハンドリング・benchmark JSON / CLI 出力は変更しない(#2056)。 -
feat(cost): pinned comment workflow(yt-pinned-comment)に YouTube Data API quota 記録を配線した。preflight のvideos.list(part="status")は 50 件 chunk の request ごとに 1 unit、--video-id経路のタイトル取得videos.list(part="snippet")も request ごとに 1 unit、commentThreads.insertは投稿 1 回ごとに 50 units をcost_tracker.log_quotaで記録する。HttpError 時(API 処理済み = quota 消費済み)も記録した上で元の例外ハンドリングを維持し、dry-run / skip(already_posted / private / not_found)では未実行の write quota を記録しない(#2061)。 -
feat(cost):yt-channel-settings push --applyのchannels().update()経路に YouTube Data API quota 記録を配線した。part(brandingSettings / localizations / status)ごとの実 request 1 回につきcost_tracker.log_quota("youtube-data-api", "channels.update", 50, metadata={part, channel_id})を 1 件記録し、実 request を発行した時点で quota は消費されるため update 失敗時も記録してから既存のYouTubeAPIErrorを維持する。dry-run では write quota を記録せず、記録自体の失敗は debug ログのみで push を止めない(#2060)。 -
feat(cost): upload agent の read preflight(publish 直前 dedup 検索と公開日一覧取得)が YouTube Data API quota をcost_tracker.log_quotaへ記録するようにした。_find_existing_video_by_titleと_get_published_datesのsearch.list(100 units)/videos.list(1 unit)実 request ごとにservice="youtube-data-api"で 1 件記録し、API failure 時も記録後に既存の fail-open / fail-safe をそのまま維持する(失敗 request も quota を消費するため)。dedup 候補ゼロ等で videos.list を実行しない場合はその分を記録しない。upload write API の quota 記録は別 issue(#2057)。 -
feat(cost): playlist mutation 経路(playlist_manager.py)に YouTube Data API quota 記録を配線した。playlist create(playlists.insert50 units)・item add(playlistItems.insert50 units / request)・削除済みエントリ cleanup(playlistItems.list1 unit / page とplaylistItems.delete50 units / 件を別 operation で記録)に加え、assign 時の重複チェック(read-before-write のplaylistItems.list)もページ単位で記録する。記録は try/finally で行い、mutation 失敗時も quota を記録した上で元の例外ハンドリングを維持する。dry-run では delete request を発行しないため delete の quota 記録も発生しない(#2059)。 -
feat(wf-next): 複数 collection を直列自動進行させる batch orchestrator CLIyt-wf-batchを追加した。collections/planning/を走査してphase=prepared/assets.music_prompts=true/assets.raw_master=null/planning.music.suno_playlist_url記録済み /02-Individual-music/ダウンロード済みの collection を対象に、/wf-next 相当の CLI チェーン(preflight → 選曲 → raw master 生成 →yt-raw-master-check --apply→master_audio_transition.py→generate_videos.sh→yt-upload-collection)を非対話で 1 件ずつ実行する。1 件の失敗(空 playlist / preflight validation error / ffmpeg error 等)では停止せず後続 collection を継続し、reports/wf-batch-<timestamp>/summary.json(total / success / failed / elapsed と成功 entry の video_id / video_url / live_path)と per-collection の<slug>.logを出力する。--dry-run/--only <slug,slug>/--from <slug>/--limit Nで対象確認・絞り込み・再開・試運転件数制限ができる。workflow.wf_next.approval_gatesが有効なチャンネルでは非対話で承認を処理できないため fail-loud で停止する(#1667)。 -
feat(config):workflow.wf_nextの boolean 設定を「true = 手動工程(承認)を省いて自動進行」の向きに統一する新キーskip_audio_approval/skip_upload_approval(既定 true = 従来どおり承認ゲートなし)を導入した。旧キーapproval_gates.audio/approval_gates.upload(true=承認する)は後方互換 alias として読み続け、既存チャンネルの設定は挙動を変えない。同一ゲートへ新旧キーを同時指定した場合は silent な優先解決をせずConfigErrorにする。WfNext.approval_gatesは既存 consumer 向けの derived view として残し、常にskip_*の否定と整合させる。example / wf-next / wf-status / wf-new schema の記述も新キー主体へ更新した(#1744)。 -
feat(cost): YouTube Data API quota の記録 schema とyt-cost-report集計を追加した。cost_tracker.log_quota(service, bucket, units)が生成コストと同じ保存境界(CHANNEL_DIR/data/quota_costs.json+ file lock)で quota event を永続化し(USD 単価は保持しない)、read_quota_log()はキー欠落エントリをデフォルト値で吸収して読む。yt-cost-reportは既定サマリに quota 記録がある場合のみ「API Quota Summary」(service 別 / 月別 / bucket 別 units 集計)を併記し、--quotaで quota のみ・--quota --detailで個別エントリを表示する。quota 未記録の既存データでは従来表示のまま後方互換。実 API 呼び出しへの instrumentation は別 issue(#2006)。 -
chore(extensions): extensions(suno-helper / distrokid-helper / shared)の lint / format を ultracite の Oxlint + Oxfmt toolchain へ移行した。lint はextensions/.oxlintrc.jsonを廃止してultracite/oxlint/core+ultracite/oxlint/reactpreset を extends するextensions/oxlint.config.tsに、formatter は Prettier をultracite/oxfmtpreset の oxfmt(extensions/oxfmt.config.ts)に置き換え、scripts / CI をpnpm check/pnpm fixに統一して全ソースを oxfmt で一括再フォーマットした。旧構成のルール水準(react/rules-of-hooks=error /react/exhaustive-deps=warn / react-compiler 無効 / browser・chrome globals)は維持し、preset 導入時点で既存コードに違反が残るルールは off として段階的有効化を別 issue に委ねる(#2154)。 -
fix(video-analyze):yt-video-analyzeに解析結果キャッシュを追加し、既存の有効なdata/video_analysis/<slug>/<video_id>.jsonがある動画は Gemini を呼ばず既存結果を再利用するようにした(再実行時の再課金防止)。明示的に再解析したい場合のみ新設の--forceで既存 JSON を無視して上書きする。部分書き込み等で壊れた JSON(パース不能 / object でない)は警告の上で破損扱いとし再解析する(サイレントな壊れ結果の再利用防止)。SKILL.md にキャッシュ挙動と--forceを追記した(#1693)。 -
fix(dx): takt worker の runtime path を current worktree へ隔離した。.takt/runtime-prepare.shがTAKT_RUNTIME_ROOTからTMPDIR/XDG_CACHE_HOME/XDG_CONFIG_HOME/XDG_DATA_HOME/XDG_STATE_HOME/UV_CACHE_DIRを導出・ディレクトリ作成して stdout(KEY=VALUE)で注入し、親 process から継承した sibling worktree の path(別 worktree の uv cache 参照による test 開始前 exit 2 の原因)を上書きする。yt-preflightにruntime_path分類を追加し、takt runtime 内(TAKT_RUNTIME_ROOT設定時)は上記 6 変数それぞれの絶対 path / current runtime root 配下 / ディレクトリ存在 / 書込み可否を検査する(違反 detail は変数名と違反種別のみで path 実値は出力しない。非 takt 環境は検査対象外として合格)(#2163)。 -
feat(thumbnail): 画像 prompt への NG ワード / 他ドメイン値混入を生成前に止める検査を追加した。config/skills/thumbnail.yaml::image_generation.gemini.forbid_keywords(未設定時 no-op の list[str])を新設し、yt-generate-imageは最終プロンプト(大小文字無視の部分一致)にヒットすると生成 API を呼ばず終了コード非 0 で停止し、該当キーワードを標準エラーへ列挙する。codex-image.shも codex 起動前に同等の検査を行う(CODEX_IMAGE_FORBID_KEYWORDS明示指定を優先し、未指定なら merged skill-config から自動解決。config 文脈が無い実行は no-op)。SKILL.md の TTP プリフライト・チェックリストにworkflow-state.json::planning.music.*(音楽用フィールド)を image prompt に転写しない項目を追加した(#1664)。 -
refactor(thumbnail): 過密なプロンプト指示を簡素化し、TTP を参照画像主導へ戻した。config.default.yamlの single_step clause 6 種のうち既定で注入されるものをip_safety_clauseの 1 つに集約(variation / style_lock / text_strip / anatomy / typography は既定空文字の opt-in、推奨文面はコメントに残置)、composition_rulesは実効キーtext_linesのみに縮小、thumbnail_textはtext_overlay_promptを単一入口として旧個別フィールド 6 種を段階的廃止(deprecated)にした。deprecated キーの channel override は従来どおり deep-merge で有効のまま、load_skill_configが DeprecationWarning で移行を促す(物理削除は後続リリース)。SKILL.md のプロンプト指示解説を「プロンプト構築」1 セクション + モード別差分に再編し、既定 config でプロバイダーへ渡る最終プロンプト全文の例を掲載した。channel-new / channel-init の scaffold からも deprecated キーを除去した(#1702)。 -
feat(audio-gen):yt-generate-master手動実行(/masterup フォールバック運用)後にworkflow-state.json::assets.raw_masterが未更新のまま残る不整合を検知する CLIyt-raw-master-checkを追加した。既定は読み取り専用の突合チェック(exit 0=整合 / 2=不整合 / 1=エラー)で、--apply時のみassets.raw_master/updated_atを一時ファイル + rename の原子的更新で修復する。/masterupStep 1.4 と/wf-statusに AskUserQuestion 承認ゲート付きのチェック導線を追加し、非承認時は state を変更せず次回起動時に同じ警告を再表示する(silent 続行の禁止)。assets.master_audioの確定は従来どおり/wf-nextの責務のまま変更しない(#1668)。 -
feat(thumbnail):/thumbnailのテキスト描画既定を AI 焼き込みから決定的合成経路(yt-thumbnail-text)へ標準化した。標準フローは「textless 背景main.png/jpgの生成・承認 → 実フォント(Pillow)合成でthumbnail.jpg確定」の 2 段構成になり、書体の揺れが発生しない。/channel-researchのdocs/benchmarks/thumbnail-text-profile.mdが存在する場合はフォント傾向 → ローカル日本語フォント選定(overlay.font.title)、テキスト内容パターン → コピー生成制約(行数・言語・文字数レンジ。競合固有文言は不使用)、配置傾向 →overlay.layout.anchor/ margin へ変換して適用し、不在時はエラーにせず現行デフォルト値で続行する。AI 焼き込み経路は運用者が明示選択したときだけ使う fallback として残し改修しない(#1907)。 -
feat(masterup):yt-suno-verify-playlist --music-dirが非正準形ファイル(Suno UI 手動 DL 由来のTitle.mp3/Title (1).mp3/Title_1.mp3等)を suno-prompts.json と照合して正準形NN{a|b}-Title.extへ自動リネームしてから突合するようにした。照合は ZIP 展開(suno_downloaded_archive.py)の既存ロジックを単一ソースとして再利用し、照合できないファイルはリネームせず unknown として fail-loud 報告する。/masterupStep 1.6 と/wf-nextは playlist URL の記録有無に依らずローカルファイル名から突合ゲートを完走する(#1998)。 -
docs(skills): 課金 API(Vertex AI Gemini / Veo / Lyria、OpenAI Images、YouTube Data / Analytics API)を呼ぶ 26 project skill の SKILL.md に、実行前見積もり可能な「想定 API call 数」セクション(API 別の call 数 / 算出式・変動要因・上限 / 承認の安全弁)を追加した。対象は契約テストtests/test_skill_api_call_estimate_contract.pyが機械抽出(pyproject 全 CLI の課金分類 × skill の CLI 参照走査)で導出し、非対象理由・追加対象理由・新規 CLI の分類漏れ・記載漏れを CI で検出する(#2010)。 -
feat(analytics): 成長 KPI 定点ビュー CLIyt-kpi-dashboardを追加した。data/analytics_data_*.json全スナップショットを日付後勝ちで横断マージし、レバー別 KPI(views / インプレッション / CTR / 平均視聴維持率 / 登録者純増)の週次推移を前週比付きの構造化 JSON と Markdown テーブルで出力する(--saveでreports/kpi_weekly_YYYYMMDD.{json,md}保存)。Reporting API の保持期間(60 日)を超えた過去の Imp / CTR もreporting_api.impressions_summary.per_dayから復元して時系列に含め、欠測週は補間せず欠測として明示する。スナップショット 1 件以下ではエラーではなく複数スナップショットが必要な旨の案内を出す。/analytics-analyzeの CLI 一覧にも定点ビュー参照の導線を追加した(#1819)。 -
feat(auth): OAuth 新規ブラウザ認証のrun_local_server()にチャンネル名(meta.channel_short)入りのauthorization_prompt_message/success_messageを渡し、複数チャンネル並列運用でトークン失効が重なった際にターミナルログと認証完了ページのどちらからも対象チャンネルを判別できるようにした。prompt には認証 URL(redirect 先ポート入り)も含め、config 読込不可時はディレクトリ名へフォールバックする(#1966)。 -
chore(extensions): TypeScript 7.0.2 固定後の suno-helper / distrokid-helper を実経路(lint / format:check / compile / unit / build / Playwright e2e / CI Typecheck 契約テスト)で回帰検証した。TS 7 起因の互換修正は不要で、唯一再現した失敗は suno-helper の overlay e2e が開発マシンで稼働中の yt-collection-serve(port 7873/7872)を発見して「ローカル配信元なし」前提が破れる分離不足だったため、--host-resolver-rulesで discovery 先ホストを遮断して環境非依存にした(#2015)。 -
feat(analytics): 収集済みの traffic_sources / audience.by_device / YT_SEARCH 検索語を分析経路に接続した。yt-analyticsの standard 以上でget_traffic_source_detail("YT_SEARCH")を呼び検索語トップ N をtraffic_sources.search_termsへ保存し、スナップショット横断の流入源シェア推移・デバイス別集計・検索語トップ N を JSON で返すyt-traffic-trendCLI(--top-search/--text)を追加した。/analytics-analyzeはyt-traffic-trendを 4 番目の必須 CLI とし、分析項目 6「流入源・デバイス分析」と validator の 4 CLI evidence 契約を追加した(#1804)。 -
chore(extensions): suno-helper / distrokid-helper の TypeScript を 7.0.2 に固定し、pnpm 11.12.0(Nix extensions shell 契約)で両 lockfile を正規再生成した。TS 7 で削除されたbaseUrlを両 tsconfig から除去し(pathsは相対形式のまま)、suno-helper はtypes: ["chrome"]で chrome グローバル型を明示 include。TypeScript 7.0.2 固定・lockfile 整合・削除済みオプション不使用は契約テスト(tests/test_extension_typescript_contract.py)で機械担保する(#2014)。 -
fix(collection-serve):POST /collections/<id>/downloadedが期待数未満の部分 ZIP(Suno が一部 entry で 1 clip しか生成しないケース)を 500 で拒否せず、配置済みファイルを受理して warning 付き 200 を返すようにした。workflow-state にはplanning.music.actual_file_count/missing_file_countを機械可読に記録し、assets.music_downloaded=trueと collections index のstatus=downloadedへ貫通させる。suno-helper は warning を progress 通知に表示する。0 件配置・壊れた ZIP の 500 契約は維持(#1913)。 -
feat(analytics):yt-thumbnail-correlateに有意性検定(両側 p 値)・Benjamini-Hochberg 多重比較補正・significant判定を追加し、最小サンプル数の既定を 10 に引き上げた(n<10 は「サンプル不足で判定不能」を明示)。有意でない相関には断定的な解釈文を出さない。--metric未指定で CTR が欠測のチャンネルでは views に自動フォールバックし、出力 JSON のmetric_fallbackに理由を残す。/analytics-analyzeにsignificant: falseの相関を方針根拠に使わない注記を追加した(#1801)。 -
feat(thumbnail): Gemini API 経路の既定 prompt を Codex と同じ TTP 方針(winning layout 維持・最小限の品質改善のみ)へ揃えた。config.default.yamlのimage_generation.gemini.diff_prompt_template既定値を codex 既定テンプレートと方針行を同期した TTP テンプレート({title_line1}/{title_line2}+${ip_safety_clause})にし、チャンネル側diff_prompt_templateoverride の優先(deep-merge スカラ置換)と方針同期をテストで機械担保した。SKILL.md / prompting.md に provider 差のない TTP 方針を明記した(#2070)。 -
feat(thumbnail): gemini_cli 経路が #2070 と同じ TTP 方針(codex と同期した既定diff_prompt_template)を provider 切替でも損なわないことを contract test で機械担保した。CLI ラッパー_build_promptはプロンプトをそのまま透過し方針文言を独自に持たないことを検証し、SKILL.md に gemini_cli が同じdiff_prompt_templateと構築手順を共有する旨を明記した。model / timeout / CLI protocol は変更なし(#2071)。 -
feat(auth): git worktree 上で gitignore されたauth/が複製されず OAuth 認証がFileNotFoundErrorになる問題に対応した。.gitpointer ファイルとcommondirから git コマンド非依存で main 作業ツリーを検知するutils/worktree.py::main_worktree_root()を追加し、worktree ではclient_secrets.jsonの候補列末尾に main 側auth/を追加、ローカルtoken.jsonが無い場合は token の読み書きを main 側auth/token.jsonに集約する(refresh 結果の分岐防止)。CLIENT_SECRETS_DIR最優先・非 worktree 環境の解決順序は不変で、未検出時のエラーには探索した全候補パスを表示する(#1721)。 -
fix(devshell): 並列 worktree の Nix キャッシュ競合(同一 fingerprint の flake を複数 worktree が同時評価すると、ユーザーグローバルな~/.cache/nixの eval-cache SQLite への同時書込みが「error (ignored): SQLite database ... is busy」で破棄され続け、レビュー step の遅延・再試行を誘発する問題)を診断し、.envrc/.lefthook/setup-worktree.sh/ shellHook が Nix 専用のNIX_CACHE_HOMEを worktree 分離 TMPDIR 配下へ export して各 worktree が自分の評価結果だけを参照するようにした。XDG_CACHE_HOMEは変更せず、解決失敗時は共有キャッシュのまま fail-open で続行する(#2089)。 -
feat(dx):yt-skills lint [<skill>...]を追加し、SKILL.md frontmatter の検証(strict YAML パース / name・description 非空 / description の double-quote)を pytest 全体実行なしで秒単位で回せるようにした。検証ロジックは CLI 側を単一ソースとし、既存の回帰テスト(tests/test_skill_frontmatter_yaml.py)は同ロジックを呼ぶ形に寄せた(#2096)。 -
fix(devshell): 並列 run 間の共有 TMPDIR 競合(macOS の per-user TMPDIR を複数 worktree の並行 pytest が奪い合い、conftest の stale cleanup 等が run 間で干渉しうる問題)を診断し、devShell 入場時に.lefthook/worktree-tmpdir.shが共有 TMPDIR 配下の worktree ごとの決定的サブディレクトリへTMPDIRを分離するようにした。takt core が注入する checkout 内 TMPDIR は尊重し、解決失敗時は共有 TMPDIR のまま fail-open で続行する(#2088)。 -
fix(dx): explicit setup 経路(bash .lefthook/setup-worktree.sh [<command>...])の依存同期を fail-closed 化した。devShell 入場後に新設の.lefthook/sync-deps.shがuv syncを明示実行し、失敗時は後続コマンドを実行せず exit 非 0 で停止する。対話 shell(direnv /nix developの shellHook)は従来どおり warning 継続で入場をブロックしない(#2125)。 -
feat(preflight): worktree / takt clone の環境不備(checkout 種別・Nix eval・lock drift・Git identity・lefthook policy)を実装着手前に read-only で検査し、git_commit_identity/nix_eval/lock_drift/hook_policyの分類キー付きで報告する CLIyt-preflightを追加した。identity の値は出力に含めず、lefthook はYOUTUBE_AUTOMATION_SKIP_LEFTHOOK=1の明示 skip のみ合格として曖昧な未導入を不合格にする(#2124)。 -
chore(extensions): suno-helper と distrokid-helper の full gate / Playwright e2e を維持し、Extensions CI が各 package の既存pnpm lint入口から共通設定の Oxlint を実行する接続契約を追加した。契約テスト自体の変更でも Extensions CI が起動するよう path filter を接続した(#2020)。 -
feat(analytics):/analytics-analyzeと/flop-analysis(postmortem)の学びを下流のdata/insights.jsonl(append-only)へ機械可読に蓄積し、次サイクルの/wf-new→/collection-ideateが open エントリを企画根拠として消費・status 反映(adopted / dismissed)し、/thumbnailが lever=thumbnail の学びを制作前に参照する接続を追加した。エントリ形式はinsights-entry.schema.jsonを単一ソースとし、schema 駆動のvalidate_insights.pyで検証する。insights 不在の初回チャンネルでは既存の analytics / benchmark fallback / minimal mode を阻害しない(#1830)。 -
feat(analytics):yt-analyticsに既定standardの--depth {standard,full}を追加し、full指定時に視聴維持率と地域別データを収集・保存できるようにした。full 専用 API の明示エラーは不完全な成果物として保存せず失敗終了する。/analytics-collect fullの導線と、/analytics-analyzeが full データの維持率を数値根拠として扱う分析契約も追加した(#1799)。 -
feat(collection-serve): port 別 PID ファイル、同一構成の既存 server の liveness check と再利用、--stop --portによる明示停止、既定 60 分の idle timeout を追加し、suno-helper / distrokid-helper の完了手順で server を停止するようにした(#1725)。 -
feat(thumbnail):archive.enabled(既定false)を追加し、サムネ承認・確定直後にthumbnail.jpg/pngを元の内容と拡張子のままassets/thumbnail-gallery/<collection-dir-name>.<ext>へ原子的にコピーできるようにした。同一コレクションの再承認は最新画像へ置換し、設定不正・サムネ欠落・シンボリックリンク・コピー失敗は非 0 で停止する(#1942)。 -
feat(channel-new,doctor): 新規チャンネルの簡易ペルソナを/viewer-voice→/audience-persona-design→/viewing-sceneの必須チェーンへ置換し、公開前は既存の競合 / TTP / viewer-voice 成果物を入力に Analytics report や任意の本格 benchmark なしで完走する契約を追加した。yt-doctorのttp_wf_new_readinessはdocs/channel/personas/persona-definition.mdの欠落を警告する(#2079)。 -
feat(masterup):yt-suno-verify-playlistに collection 相対の--music-dirを追加し、NN{a|b}-<title>.<ext>形式のローカル音声ファイル名を name/title の英語 alias・apostrophe 除去名から canonical entry へ対応付け、entry +a/bvariant 単位で unknown / missing / underfilled を fail-loud 検出できるようにした。/masterupの primary path は02-Individual-music/を直接突合するため、playlist URL や title list の確認なしで Step 5 前ゲートを実行する(#1898)。 -
feat(doctor,setup):yt-doctor --fix-client-secretsを追加し、Downloads の構造妥当かつ GCP project 一致する最新 OAuth client JSON をauth/client_secrets.jsonへ移動できるようにした。既存ファイルは上書きせず、/setupの HUMAN STEP は secret 発行・Download JSON・done のみに簡素化した(#1903)。 -
feat(flop-analysis): Phase 3 の全主仮説を承認プロンプトなしで自動検証し、全件反証時だけ副仮説へ進む orchestration へ更新した。対話必須スキルは read-only 成果物境界から起動せず、期間・比較元・閾値を固定して判定する。個別検証がデータ不足・子スキル失敗で実行不能な場合は理由付きの「未検証」として残りを続行し、検証結果からpostmortem.mdの「結論 / 反証 / 学び」まで自動記入する(#1972)。 -
fix(suno):yt-suno-verifyと共通 initial-setup preflight がconfig/skills/suno.yaml::style_char_limitの上書きを尊重し、長文の basegenre_line・video analysis 由来 Style・使用中 style variant を設定上限で検証するようにした。未設定時は従来どおり 120 文字超過をエラーにする(#1938)。 -
chore(extensions): Oxlint 1.73.0 の React plugin と、旧 severity を維持できる native React Hooks rules を共通設定で有効化し、代表的違反を実行時 fixture で検証するようにした。severity を保持できる native 代替がない14規則は、集約 React Compiler rule による warn の error 化を避けて独立 follow-up として明示した(#2019)。 -
perf(dx):.envrcに nix-direnv 3.1.1 のブートストラップを追加し、devShell 入場コストを削減した。dev 環境を.direnv/にキャッシュしflake.nix/flake.lock/.envrc変更時のみ再評価するため、dirty worktree でも 2 回目以降のdirenv execが 1 秒未満で安定する(従来は入場のたびに flake 評価が走り 7〜80 秒まで変動)。shellHook(lefthook install / uv sync)は従来どおり毎入場で実行される(#2097)。 -
docs(wf-new): analytics mode の stale report を/collection-ideateの freshness SSOT に従って自動更新し、再検証後に入力モード判定と企画フローを継続する契約へ更新した。更新失敗時は古い report を使わず、理由と再開条件を示して停止する(#2063)。 -
docs(skills):/channel-research・/thumbnail-research・/collection-ideateの TTP 分析に欲求レイヤーを追加した。高再生パターンを視聴者欲求へ抽象化して自チャンネルへ再具体化し、コメント / persona 由来の欲求語彙、最低 3 回の具体⇄抽象の往復、上位群 / 下位群の欲求比較、ttp_modeの欲求整合根拠を各成果物へ記録する(#2026)。 -
docs(setup):yt-doctorが stale Analytics report を表示した場合も手動の/analytics-analyzeを HUMAN STEP として要求せず、後続の/collection-ideateが自動更新する契約を案内するよう統一した。更新失敗時の停止・再開条件はfreshness-rules.mdを参照し、fresh / benchmark fallback / minimal mode の既存案内は維持する(#2064)。 -
refactor(distrokid-helper): status と release review を shadcn Alert / Card primitive へ移行し、既存の phase message・配色・props、release metadata・fallback、および error の accessible alert 契約を維持した(#2066)。 -
chore(extensions): Fallow audit を PR の base commit との差分に対する extensions 全体の品質ゲートとして CI へ統合した(#2076)。 -
chore(test-infra): pytest-xdist を dev dependency に追加し、uv run pytest -n autoでの並列実行に対応した。tests/conftest.pyはCHANNEL_DIRの tmp コピーを xdist worker ごとに独立して作り直し、CI の test ジョブは-n autoを有効化した。ローカル既定は直列のまま(opt-in、詳細はdocs/development.md)(#2093)。 -
feat(skills):/postmortemskill command / directory を/flop-analysisへ改称し、feedback・workflow・機能一覧・現役戦略文書の利用者導線を新名称へ統一した。下流のconfig/skills/postmortem.yamlはconfig/skills/flop-analysis.yamlへリネームすること。旧 override は移行 fallback として警告付きで読み込むが、旧 command alias と旧 skill directory は残さない(#2023)。 -
chore(extensions): suno-helper と distrokid-helper の lint を共通設定の Oxlint 1.73.0 へ移行し、旧 ESLint の direct dependencies と設定を削除した(#2018)。 -
fix(upload): upload preflight が複数セパレータのtitle.templateと準拠タイトルを正しく照合し、3パート以上のタイトルを誤って拒否しないようにした(#2037)。 -
perf(test-infra):utils/retry.pyにモジュールスコープの sleep/jitter シーム(_DEFAULT_SLEEP/_DEFAULT_JITTER)を追加し、execute_with_retryにも後方互換の optionalsleep/jitter引数を貫通させた。テスト側はno_retry_backofffixture とCommentReplierへのsleep_fn注入で retry backoff /delay_between_replies_secの実時間 sleep(計 ~33s)を排除した(#2091)。 -
feat(doctor,setup):yt-doctorの api カテゴリにreporting_jobcheck を追加し、OAuth 済み環境で YouTube Reporting API ジョブ未作成を検出してuv run yt-analytics --reporting-create-jobを案内するようにした。/setupwizard はコマンド実行後に doctor を再診断し、ジョブ作成済みを確認する(#1974)。 -
refactor(distrokid-helper): popup のローカル配信元・collection/disc selector を shadcn theme token に揃え、フォーム一括入力・停止操作を Button primitive へ移行した。既存の value・handler・disabled・accessible name と runner action は維持する(#2065)。 -
docs(collection-ideate): stale な Analytics report を検出した際、相対 stale は/analytics-analyze、絶対 stale は/analytics-collect→/analytics-analyzeを自動実行し、再検証成功後に同じ企画フローを継続する契約へ更新した。更新失敗時は stale report を使わず、理由と再開条件を示して停止する(#2062)。 -
fix(secrets): 1Password CLI 2.33 が stdin を JSON item template として解釈する仕様に合わせ、stream key の edit/create を JSON template 経由に変更した。新規 PASSWORD item には必須の組み込みpasswordfield を含め、secret は引き続き argv や一時ファイルに露出しない(#1784)。 -
feat(helper):yt-collection-serveの固定 loopback registry(heartbeat / TTL / owner takeover)と shared discovery client を追加し、suno-helper / distrokid-helper の候補履歴蓄積を廃止して、稼働中 server の動的検出と legacy storage migration に切り替えた。selector は更新完了前の古い native menu を開かず、registry の DELETE 境界と未対応 method status も公開契約どおり検証する(#1616)。 -
fix(test-infra): dev shell 統合テストのコピー対象と teardown を最適化し、pytest の成功時 tmp と強制終了された過去 run の fixture 残骸が蓄積しないようにした(#2072)。 -
fix(suno-helper): 連続実行開始時に collection server の疎通を確認し、無応答時は Lyrics 欄エラーより先に明示的な server エラーで停止するようにした(#2003)。 -
fix(suno-helper): server の一時的な取得失敗時に明示選択した配信元と collection を保持する(#2002) -
fix(collection-serve): SIGTERM による予期せぬ停止を専用例外へ変換し、終了理由と traceback が stderr に残るようにした(#2001)。 -
chore(suno-helper): React 19 と Tailwind CSS 4 の Vite plugin 構成へ移行し、@/*alias、Shadow DOM 対応 CSS variable theme、cnutility、Button primitive を含む shadcn/ui 最小基盤を追加した(#2011)。 -
chore(distrokid-helper): Tailwind CSS 4 の Vite plugin 構成へ移行し、@/*alias、CSS variable theme、cnutility、Button primitive を含む shadcn/ui 最小基盤を追加した(#2012)。 -
refactor(scripts):yt-bulk-update-descの YouTube APIHttpErrorをYouTubeAPIErrorへ変換し、metadata の意味的エラーだけを collection 単位で継続するよう例外境界を限定した。更新 API 失敗時は後続動画を処理後にドメイン例外を伝播し、破損 JSON / I/O error も fail-loud とした。tags / categoryId / defaultLanguage 欠落時の既存フォールバックは公開main()経路の回帰テストで固定した(#2032)。 -
refactor(logging):yt-bulk-update-descの進捗・成功・失敗出力を module logger 経由に統一した(#2031)。 -
fix(skill-config):load_skill_config("postmortem")とload_channel_override("postmortem")はconfig/skills/flop-analysis.yamlを優先し、旧config/skills/postmortem.yamlだけがある場合は互換読み込みしてUserWarningで移行を案内する。利用者はpostmortem.yamlをflop-analysis.yamlへリネームすることで警告を解消できる(#2022)。 -
fix(skills):yt-skills sync --pruneが upstream 管理外のローカル skill を削除しないよう、既知の旧 skill 名だけを prune 対象に限定した(#1939)。 -
fix(dx): sandbox 化された takt worker がホーム配下(direnv allow ストア・共有 hooks)へ書込みできず direnv / lefthook セットアップが反復停滞する障害を解消した。.takt/config.yamlのruntime.prepare(.takt/runtime-prepare.sh)が全 worker へXDG_DATA_HOME=<worktree>/.takt/.runtime/dataとYOUTUBE_AUTOMATION_SKIP_LEFTHOOK=1を注入し、flake.nix shellHook /.lefthook/install.shは同変数で lefthook install を安全にスキップ(ゲートは CI 側で担保)、.lefthook/setup-worktree.shはdirenv allow失敗時にnix developへフォールバックする(#1999)。 -
docs(workflow):/wf-newと/wf-nextの制作フェーズ実行を subagent 委譲契約へ統一し、親エージェントが前提確認・承認・状態更新を保持しつつ、各フェーズの成果物を絶対パス付きで受け取って検証する責務境界を明確化した。運用チートシートも同じ委譲モデルへ同期した(#1661)。 -
docs(collection-ideate): stale な Analytics report 検出時に推論コスト見積もり付きの 3 択を提示し、承認時または上限内のfreshness.stale_action: auto時だけ/analytics-analyzeを同一セッションで実行する導線を追加した。/wf-newは判定を委譲し二重ダイアログを防ぐ(#1716)。 -
docs(skills): wf-* から委譲される制作系 10 skill に subagent 入出力契約を追加し、リポジトリ相対の入力、成果物絶対パスの完了報告、state 非更新、承認・選択確定後のみの委譲を明記した。state を扱う/masterupの over-max 例外採用と/sunovocal の標準 collection 生成はメインエージェントが実行する(#1662)。 -
feat(thumbnail): TTP 参照画像の直近コレクション重複除外を追加(#1649)。reference_images.dedup_recent_collections(既定 5)が collection ごとに採用企画の参照 1 件を Reference Assignments へ保存し、全割当節から未使用参照を先頭候補として優先する。不足する候補枠だけ位置順で補うため、候補数より大きいプールは全参照が採用されるまで先頭候補を再利用しない。
Added
-
feat(analytics): Analytics API の収益メトリクス(estimated revenue / monetized playbacks / CPM)を日別・動画別に収集し、テーマ・コレクション別の加重 RPM 分析契約を追加した。収益化未承認時は収益データだけを警告付きで skip し、既存メトリクス収集を継続する(#1807)。 -
feat(collection-ideate): skill-config にttp_mode(既定false)を追加した。config/skills/collection-ideate.yamlでtrueにすると差別化軸の掛け合わせと競合カバー済みテーマの回避をスキップし、競合の高再生コレクションから抽出した構造・パターン・型を転写元付きで企画候補へ反映する。転写元が無い minimal mode では/benchmarkを案内して停止する(#1977) -
docs(feedback):/feedbackに、status="recorded"の未還流 entry を一覧・選択し、open issue の類似タイトル照合とユーザー承認を経てdaiki-beppu/youtube-automationへfeedbackラベル付き issue を起票する還流モードを追加した。成功した entry はstatus="filed"とissue_urlを記録して候補から除外し、二重起票を防ぐ。起票本文テンプレート、発生チャンネル掲載の個別確認、起票直前の機密情報再マスクも明記した(#1829)。 -
docs(channel-research): サムネイルのフォント傾向・テキスト内容パターン・配置傾向を、固有名詞やコピー原文を除いた構造化プロファイルdocs/benchmarks/thumbnail-text-profile.mdとして生成する契約を/channel-researchに追加した。前回生成したプロファイルは個別ベンチマークレポートの存在判定と fallback 入力から除外する(#1906)。 -
docs(thumbnail-research):/benchmarkの収集済み JSON と競合サムネイル画像を再生数上位群 / 下位群で比較し、構図・配色・テキスト配置・視線誘導・被写体の勝ちパターンをdocs/benchmarks/thumbnail-analysis.mdに出力する/thumbnail-researchスキルを追加した。レポートの推奨事項と参照候補を/thumbnailの TTP 入力として相互参照し、データ収集・チャンネル全体分析・320px 視認性比較との発動条件を分離した(#1796)。 -
docs(channel-new): 入口系またはモード判別不能な発動時に既存チャンネル / 新規開設を最初に確認するゲートを追加した。既存チャンネルではyt-channel-seed --no-write-benchmark --jsonの登録者数・動画数・直近タイトルを提示して既存踏襲 / 方向性見直しを確認し、見直し選択時も取り込み完了後に必要な TTP メモまたは分析レポートを明示して方向性検討モードへ接続する(#1897) -
docs(analytics):/analytics-analyzeの必須 3 CLI 出力と数値 evidence をreports/analysis_YYYYMMDD.jsonに構造化保存し、Markdown とのペア生成と validator 成功を完了条件にした。/collection-ideateは同 validator で検証済みの固定キーから §5 / §6 / §8 相当を読み取る(#1805)。 -
docs(thumbnail): YouTube Studio のサムネイル A/B テストについて、候補 2〜3 案の設計、operator 向け手動設定、watch time share・結果のコレクション別 JSON 記録を行う/thumbnail-testスキルを追加した。確定 Winner の構図・配色・文字量が 2 entry 以上で反復した場合に限り次回/thumbnailのプロンプト方針へ還元し、/postmortemでは対象動画のテスト結果を flop 仮説の根拠・反証として併記する(#1808)。 -
docs(skills): 下流チャンネルリポジトリでスキル実行中の不具合・摩擦・改善案をdata/feedback/feedback-log.jsonlに append-only JSONL として記録する/feedbackスキルを追加した。entry schema は.claude/skills/feedback/references/feedback-entry.schema.jsonに単一ソース化し、date/skill/category/summary/context/status/issue_urlの構造、status="recorded"の新規記録、機密情報の***REDACTED***マスクを SKILL.md に明記した。下流配布 CLAUDE.md テンプレにもスキル摩擦時に/feedbackを案内する導線を追加した(#1828)。 -
docs(setup):/setupの全 check 緑後・完了報告前に、workflow.wf_nextの音源 / アップロード承認ゲート、手動マスタリング検出スキップ、Veo 課金を伴う loop-video の有効状態を 1 問ずつ確認する運用設定インタビューを追加した。現在値と推奨回答を提示し、変更時だけ config を更新する(#1902) -
feat(upload): collection のworkflow-state.json::title_template_check.allow_volume_patterns: trueで、そのコレクションだけ公開タイトルのVol./Part/#N/ ローマ数字の巻数表記を upload preflight で許可できるようにした。未設定・falseの既定検出、RHS 鋳型・完全重複・核語彙の検査、およびcontent.json::title.template_check.volume_patternsは変更しない(#1729) -
docs(setup):/setupwizard の起動直後にライブ配信予定の有無を確認し、予定ありの場合は YouTube のライブ配信有効化に最大 24 時間かかる旨と YouTube Studio での有効化リクエスト手順を[HUMAN STEP]で案内するようにした。案内後は有効化完了を待たず通常の setup フローを続行する(#1896) -
feat(analytics-report): HTML レポートのテーマ色をanalytics-report/config.default.yaml::theme.colorsに移し、config/skills/analytics-report.yamlの channel override で差し替えられるようにした。未設定チャンネルでは既存パレットを維持する(#1691)
Changed
-
docs(thumbnail):image_generation.auto_selection.mode: fullの/thumbnail手順を追加し、テーマを config → collection metadata の順で自動決定して、生成可否・textless 背景・候補の承認を含む 4 ゲートを省略しyt-thumbnail-auto-select --applyまで無人で進めるよう明文化した。selection_onlyの既存挙動は維持し、生成・適格候補ゼロ時の手動切替と/wf-newPhase 2c の追随分岐も追加した(#2167)。 -
refactor(suno-helper): PatternList の entry 選択表示を、selection semantics・accessible name・data-suno-entry-*契約を維持したまま shadcn variant と Tailwind semantic token へ移行した(#2068)。 -
refactor(suno-helper): Overlay header・shell と status / warning / error 表示を、drag・minimize・位置永続化・semantic role・data-suno-*契約を維持したまま shadcn primitive へ移行した(#2069)。 -
refactor(suno-helper): collection・投入方式・開始/停止・resume/retry controls を、既存 handler・disabled 条件・data-suno-control/ aria 契約を維持したまま shadcn primitive へ移行した(#2067)。 -
feat(distrokid-helper): 初回表示、コレクション選択、ローカル配信元選択の各タイミングで collection 一覧と release.json を自動取得し、手動の「データ取得」ボタンを廃止した(#1992)。 -
feat(suno-helper): 初回表示、コレクション選択、ローカル配信元選択の各タイミングで collection prompts を自動取得し、手動の「データ取得」ボタンを廃止した(#1991)。 -
feat(suno-helper): Queue mode の duration guard 全滅 entry を、全 entry の ACK 先行投入後に既存 pacing で同一 prompt から最大 2 回自動再生成する挙動を明示し、Queue mode の説明文にも自動再生成を追記した(#1775)。 -
perf(discover-competitors):search.list結果を 24 時間キャッシュし、--refreshによる強制更新と benchmark 登録済みチャンネルの除外を追加した(#1694) -
feat(suno-helper): duration guard NG の同一 prompt 再生成を popup の「異常値の曲を再生成する」で切り替え可能にした。既定 ON は安全・高速モードとも最大 2 回再生成し、OFF は NG を警告表示しつつ生成済み全 clip を playlist / download 候補に維持する。選択は popup 再表示、resume、失敗分再実行、playlist 再実行へ引き継ぐ(#1733) -
docs(skills): リサーチ・戦略チェーンの 6 スキル(benchmark / discover-competitors / viewer-voice / audience-persona-design / viewing-scene / channel-research)の冒頭 60 行以内に、停止する fail と許容する fail を分離した前提成果物ガードを統一書式で整備した。必須入力が無い場合は生成元の前工程スキルを案内して停止し、後続 Step で生成・自動更新・代替できる入力欠如は停止条件から除外する(#1825) -
docs(automation-release): extension release の skill / checklist を Nix extensions shell 契約(Node 24 / pnpm 11.12.0)へ同期した(#1956)。両拡張の frozen install → build → zip、期待名 zip、lockfile 無差分をverify-extensions.shで検証し、ambient Node / pnpm と--ignore-workspaceを使わないことを明記。Python 本体の release flow とrelease-extensions.ymlは変更なし -
docs(extensions): extension のローカル install / build / zip / Vitest / Playwright / 成果物確認と/sunoの初回 build 導線を、CI と同じ Nix extensions shell(Node 24 / pnpm 11.12.0)入口へ統一した(#1957)。ambient pnpm / 旧 npx pnpm 導線の不在を文書契約テストで固定 -
docs(suno-helper): Suno UI の旧「Custom Mode」および「Instrumental ON/OFF」表記を、現行の Advanced タブと Lyrics mode(Write / Instrumental)の用語へ更新した。operator 手順、拡張 description、保守用コメントを対象とし、実行時のセレクタ・エラーメッセージ・テスト期待値は変更していない(#1900)
Fixed
-
fix(suno): ボーカルの標準コレクション生成時に、workflow-state.json::track_countを曲数の SSOT としてsuno-patterns.yaml::tracksの完全一致および展開後 prompt entry 数の下限を fail-loud で検証するようにした。entry 数が曲数未満、または両ファイルの曲数が不一致ならsuno-prompts.jsonを生成しない(#1785)。 -
fix(doctor):uv tool install youtube-channels-automationによるグローバル導入をuv_project/automation_packageの bootstrap check で検出し、pyproject.toml に依存がない正常な環境を fail と誤判定しないようにした(#1724)。 -
fix(api): playlist / benchmark / analytics / comments-reply / discover-competitors の YouTube API 呼び出しで、429・5xx・quota 系 403・network error を jitter 付き指数 backoff で最大 3 回試行し、恒久 4xx は即座にドメイン例外へ変換する共通 retry 境界を追加した(#1695)。 -
fix(suno-helper): Download all メニューの短時間 auto-close レースに対し、More クリック直後から探索を開始し、検出失敗時は最大 3 回再クリックしてダウンロードを継続できるようにした(#1926)。 -
fix(suno-helper): 拡張更新時に既存の Suno タブを自動リロードし、旧 content script の orphaned context を残さず新しい bundle を再注入するようにした(#1718)。 -
fix(suno-helper): feed/v3 の active poll がidsフィルタ無効化後も cursor ページネーションを追跡し、最新ページ外の保存済み clip を完了確認できるようにした(#1929)。 -
fix(thumbnail):/thumbnailSKILL.md の標準生成順序と Single-Step / TTP 章を、テキスト付きthumbnail.jpg先行 → 承認済みthumbnail.jpgから textlessmain.png/jpg後続再生成の契約へ統一した。config.default.yamlの single_step コメント、サンプルプロンプト、short-thumbnailの前提案内も同じ順序へ追従し、旧 textless 先行文言を回帰テストでロックした(#1901)。 -
fix(thumbnail):codex-image.shに codex CLI とサーバー側デフォルトモデルの互換性プリフライトを追加し、非互換時は画像生成を試みず CLI version・検出モデル・アップグレード手順を stderr に出して停止するようにした。生成失敗時の診断 dump にも codex CLI version と default model 推定値を含める(#1915)。 -
fix(suno-helper): Download all ZIP の展開・音声配置・workflow-state.json更新がすべて成功した後に、元 ZIP を自動削除するようにした。ZIP 削除だけが失敗した場合は、成功済みの音声と workflow-state を維持し、警告を記録する(#1890)。 -
fix(upload):yt-upload-collectionの-c未指定時の自動選択を、collections/planning/配下でphase=masteredかつupload.video_id=nullの未公開コレクション 1 件だけに限定した。live/の公開済みコレクションは候補外とし、候補が 0 件または複数件なら-c明示を要求して停止する。--plan/--status/ 実アップロードと日次実行に同じ選択条件を適用した(#1731)。 -
fix(upload): タグ件数下限が YouTube の 500 字上限の下で到達不能な場合、upload preflight と metadata audit が件数不足ではなく、tags.min_countを下げるか base タグを短縮するよう案内する明示診断を返すようにした。配布する content.json テンプレートのtags.min_countも 26 に統一した(#1732)。 -
fix(loop-video): Ctrl+C 後の Veo operation resume state に入力画像の SHA-256 を保存し、再実行時に指定モデルまたは入力画像内容が state と異なる場合は旧 operation を破棄して指定どおり新規生成するようにした(#1746)。旧形式 state は安全側で破棄する。 -
fix(analytics):yt-channel-trendの z-score 基準から当日を除外し、min_periods 未達をnullとして明示するよう修正した。トレンド判定は直近 28 日とその前の 28 日の平均を比較し、週次前週比は完全な 7 日間の週だけで計算する(#1803)。 -
fix(suno-helper): Queue mode の生成完了待ちが stall タイムアウトした際、ラン全体を ERROR で中断せず graceful degradation するようにした。waitForSubmittedClipsCompleteは throw の代わりに{ timedOut, stalledClipIds }を返し、停滞 clip を entry 単位で失敗記録(ENTRY_FAILED)したうえで、完了済み clip の duration yield guard・playlist 追加・ダウンロードを続行する。stalled entry は resume state の failedIndices として保持され「失敗分のみ再実行」導線で回収できる。全 entry が stall した場合は従来の失敗保留(playlist 追加を再実行後に委ねる)とし、serial mode・retryPlaylist・resume 由来 clip の stall は従来どおり中断する(#1994)。 -
docs(suno,suno-helper): 長尺 BGM チャンネル向けにconfig/skills/suno.yaml::duration_filter(min_sec/max_sec、部分指定は既定値と deep-merge)の override 手順を/sunoStep 2 と/suno-helperの duration guard 節へ文書化した。override がsuno-prompts.jsonへ反映される契約は回帰テストで pin し(機能自体は #1269 で実装済み・既定 60〜300 秒は不変)、閾値変更後はyt-generate-sunoの再生成が必要なことと、resume が run 開始時点の閾値を保持するため新規 run で効かせる注意も明記した(#1937)。 -
fix(suno-helper): 新 Create UI(2026-07)で playlist の clip row 検出が全件 missing になる問題を実 DOM capture(匿名化 fixture)に基づき修正した。復活した.clip-rowコンテナを row 導出の最優先アンカーにし、div化した再生ボタン([role="button"][aria-label^="Play "])と row 自身のaria-labelを曲名フォールバックに追加。仮想ウィンドウ走査(scrollAndMultiSelectByIds/readSelectedClipIds)は共通ヘルパへ抽出し、ウィンドウ外 row の空シェル化・再描画遅延に対して描画 signature 変化の poll(上限 3s)で hydration を待ち、ページネーションで走査中に成長する scrollHeight へ maxScroll 毎ステップ再計算で追従する。旧 DOM / grid view の検出経路と fixture は不変(#2043)。
Added
feat(analytics): 動画別のsubscribersGained ÷ views × 100による登録転換率ランキングと、登録済み/未登録視聴者別のsubscribedStatus集計を analytics スナップショットへ追加した。/analytics-analyzeは両データを組み合わせて「登録を生む動画の型」を分析し、チャンネル全体の subscribedStatus を動画個別の因果として断定しない(#1813)。feat(analytics): standard / full depth の Analytics 収集に、視聴数上位 200 件の playlist dimension における views・平均視聴時間・上位 200 件内の視聴シェアを追加し、/analytics-analyzeが Complete Collection を含むプレイリスト内視聴をレポートできるようにした(#1815)。
Migration
所要時間の目安: 20〜30 分
local fix 衝突注意:
- flop-analysis:
/postmortemからの改称(#2023)。下流のconfig/skills/postmortem.yamlはconfig/skills/flop-analysis.yamlへリネームが必要。旧ファイル名は警告付きの互換読み込みのみで、旧 command alias と旧 skill directory は残らない - wf-auto:
/automation-run互換 skill を削除し一気通貫入口を/wf-autoへ一本化(#2400)。/automation-runを参照する local fix は要更新 - channel-new:
/channel-researchを第 6 モード「分析モード」へ挙動不変で統合(#2027)。/channel-researchを参照する local fix は要更新 - thumbnail: 標準生成順序を textless 背景先行 → 実フォント合成(
yt-thumbnail-text)へ変更し、thumbnail_textの個別フィールド 6 種を deprecated 化(#1702, #1907, #2166)。改修規模が大きく local fix は上書きされる可能性が高い - setup, masterup, automation-update, collection-ideate, channel-new: 段階的開示で SKILL.md 本文を
references/へ分割し行数が大きく変わった(#2565)。local fix は要再適用 - benchmark, video-analyze, thumbnail-compare, viewer-voice: 競合 slug の指定を
--channelから--competitorへ即時リネーム(#1948)。旧--channelは alias として受理されない - suno-helper, distrokid-helper, community-helper, ext-install: overlay UI を shared shadcn/ui へ全面移行(#2318〜#2360)。拡張本体の配布は
ext-v*系列で独立
必須の手作業(下流チャンネルリポジトリ):
config/skills/postmortem.yamlをconfig/skills/flop-analysis.yamlへリネームする(#2023)。未実施でも警告付きで読めるが、警告は解消されないworkflow.jsonのwf_next.approval_gates/comments.rulesは廃止キーとしてConfigErrorで拒否される。skip_audio_approval/skip_upload_approvalへ移行する(#2304)- チャンネルルート
.envの自動読込とpython-dotenv依存を削除した(#2477, #2478)。.envに置いていた値は process env / OAuth ファイル / 1Password のいずれかへ移す。GCP は ADC の quota project へ統一し、Vertex AI の location は用途別の内部固定値になる - 定期実行を設定済みの場合は
workflow.scheduled_automation.target_workflowをautomation-runからwf-autoへ変更する(#2400)。旧値は移行案内付きで拒否される - Python から
utils.suno_*/utils.metadata_generatorを直接 import している local script があればdomains.suno/domains.suno.downloaded/domains.metadataへ移行する(#2305)。旧 import path の facade は提供しない
サマリ:
- BREAKING 6 件: benchmark 系 4 CLI の
--competitorリネーム(#1948)、utils.suno_*/utils.metadata_generatorの削除(#2305)、wf_next.approval_gates/comments.rulesの廃止(#2304)、/automation-runの削除(#2400)と/postmortemの改称(#2023)、チャンネルルート.envの廃止(#2477, #2478) - 読み取り専用 Analytics dashboard(React + Vite + shadcn/ui、
yt-dashboard)を新設し、全チャンネル横断の指標比較・公開予約ストック・デジタル庁ガイド準拠の配色を追加(#2385, #2387, #2397, #2399, #2546) - 新規 skill 13 件:
/wf-auto,/analytics-run,/post-publish,/flop-analysis,/market-research,/creative-constraints,/value-loop-audit,/thumbnail-iterate,/thumbnail-test,/thumbnail-research,/feedback,/live-chat-reply,/automation-schedule - YouTube Data API quota の記録 schema と
yt-cost-report --quota集計を追加し、read / write の全経路へ instrumentation を配線(#2006, #2055〜#2061) - takt を開発の標準実装経路へ復帰させ、
.takt/workflows/の yt-auto-* 5 レーンと共通 callable を git 管理下で整備(#2686, #2690) - 監査由来の回帰テスト強化を大規模に実施(skills / repository / dashboard / metadata / suno / distrokid / thumbnail / analytics / extensions の findings を実行時契約へ置換)
What's Changed
- chore(suno-helper): ext-v0.2.5 by @daiki-beppu in #1873
- docs(takt-operations): アップロード系 workflow 判定の自己矛盾を解消 (#1863) by @daiki-beppu in #1874
- chore: 既存15 PRを統合して一括マージ by @daiki-beppu in #1888
- [#1654] issue-1654-video-gen-loop-vide by @daiki-beppu in #1857
- [#1666] issue-1666-metadata-comments-r by @daiki-beppu in #1861
- [#1676] issue-1676-suno-helper-ext-v0 by @daiki-beppu in #1864
- feat(suno-helper): 投入方式の表示名を安全モード / 高速モードへ改称 (#1862) by @daiki-beppu in #1867
- feat(automation-release): Chrome 拡張リリース(ext-v*)の extension release phase を追加 (#1735) by @daiki-beppu in #1868
- [#1681] issue-1681-video-gen-videoup-e by @daiki-beppu in #1869
- [#1682] issue-1682-dx-infra-rookaru-no by @daiki-beppu in #1870
- [#1729] issue-1729-upload-title-templa by @daiki-beppu in #1875
- [#1731] issue-1731-upload-yt-upload-co by @daiki-beppu in #1876
- [#1732] issue-1732-upload-yt-upload-co by @daiki-beppu in #1877
- [#1734] issue-1734-distrokid-helper-di by @daiki-beppu in #1878
- [#1736] issue-1736-suno-helper-no-nipu by @daiki-beppu in #1879
- [#1746] issue-1746-video-gen-loop-vide by @daiki-beppu in #1880
- [#1660] issue-1660-skills-subagent-pat by @daiki-beppu in #1859
- [#1822] issue-1822-skills-cheen-manify by @daiki-beppu in #1889
- docs(takt): ラベル体系の世代交代(ラベル = workflow 名)にドキュメントと issue-lint を追従 by @daiki-beppu in #1908
- chore: open PR 17本を統合 by @daiki-beppu in #1934
- [#1902] issue-1902-setup-ni-intabyuuwo by @daiki-beppu in #1909
- [cleanup] yt-config-migrate を撤去 by @daiki-beppu in #1916
- [#1691] issue-1691-audit-analytics-rep by @daiki-beppu in #1917
- [#1663] issue-1663-skills-analytics-be by @daiki-beppu in #1918
- [#1657] issue-1657-channel-setup-chann by @daiki-beppu in #1919
- /setup 起動時にライブ配信予定を確認し有効化に最大24時間かかる旨を注意喚起する by @daiki-beppu in #1920
- [#1915] issue-1915-thumbnail-codex-ima by @daiki-beppu in #1921
- [feedback] /feedback スキル新設 by @daiki-beppu in #1922
- [analytics] channel-trend の統計3欠陥を修正 by @daiki-beppu in #1924
- [thumbnail] single_step/TTP の旧フロー記述を修正 by @daiki-beppu in #1927
- Suno ボーカルのベストテイク選曲を廃止 by @daiki-beppu in #1928
- [suno-helper] feed/v3 cursor pagination for resume polling by @daiki-beppu in #1930
- [suno-helper] recover stale content scripts after extension reload by @daiki-beppu in #1931
- fix(suno-helper): retry download menu auto-close race by @daiki-beppu in #1932
- fix(suno-helper): reset stall timeout only on progress by @daiki-beppu in #1933
- [#1900] issue-1900-suno-helper-dokyume by @daiki-beppu in #1910
- suno-helper のZIP展開成功後にダウンロードZIPを削除 by @daiki-beppu in #1911
- [#1935] issue-1935-worktree-de-nix-dev by @daiki-beppu in #1952
- docs(adr): マルチチャンネル workspace 方針の ADR-0022 起票と CONTEXT.md 用語登録 by @daiki-beppu in #1946
- [#1953] issue-1953-1936-01-extensions by @daiki-beppu in #1958
- [#1955] issue-1955-1936-02-extensions by @daiki-beppu in #1959
- [#1936-03] Release ExtensionsをNix経由へ移行する by @daiki-beppu in #1961
- [#1957] issue-1957-1936-04-extension-w by @daiki-beppu in #1962
- [#1956] issue-1956-1936-05-extension-r by @daiki-beppu in #1963
- [#1960] issue-1960-devshell-shellhook by @daiki-beppu in #1965
- chore: 既存11 PRを統合して一括マージ by @daiki-beppu in #1984
- [#1695] issue-1695-audit-utils-youtube by @daiki-beppu in #1964
- [#1829] issue-1829-feedback-feedback-r by @daiki-beppu in #1967
- [#1906] issue-1906-channel-research-sa by @daiki-beppu in #1968
- [#1727] issue-1727-thumbnail-collectio by @daiki-beppu in #1973
- [#1796] issue-1796-thumbnail-benchimaa by @daiki-beppu in #1975
- [#1897] issue-1897-channel-new-ni-wo-n by @daiki-beppu in #1978
- [#1825] issue-1825-skills-risaachi-6su by @daiki-beppu in #1979
- [#1899] issue-1899-suno-helper-lyrics by @daiki-beppu in #1980
- [#1805] issue-1805-analytics-no-json-t by @daiki-beppu in #1981
- [#1895] issue-1895-komento-oonaa-miwos by @daiki-beppu in #1982
- [#1808] issue-1808-thumbnail-samune-te by @daiki-beppu in #1983
- [#1649] issue-1649-strategy-ttp-ni-kor by @daiki-beppu in #1986
- [#1733] issue-1733-suno-helper-wo-ui-o by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/1985
- [#1724] yt-doctor: uv tool install 環境の誤判定を修正 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/1987
- [#1785] suno: vocal track count 整合検証を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/1988
- [#1662] issue-1662-skills-skill-wo-sub by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/1989
- [#1694] issue-1694-audit-discover-comp by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/1990
- [#1716] issue-1716-strategy-collection by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/1993
- [#1775] issue-1775-suno-helper-queue-m by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/1996
- [#1661] issue-1661-skills-wf-next-wf-n by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/1995
- fix: sandbox 化された takt worker の direnv/lefthook セットアップ反復停滞を解消 (#1999) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2000
- docs: workflow-state watcher の半自動チェーン設計を追加 (#1997) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2024
- feat(collection-ideate): ttp_mode を追加 (#1977) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2025
- fix(skill-config): flop-analysis override の移行 fallback を追加 (#2022) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2030
- fix(skills): prune でローカル skill を保護する (#1939) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2034
- [docs] ONBOARDING に GCP Billing での課金確認手順を追加 (#2009) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2035
- refactor(logging): 一括説明文更新の出力を logger に統一 (#2031) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2036
- refactor(scripts): 一括説明文更新の例外境界を明確化 (#2032) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2038
- feat(suno-helper): 配信元データを選択時に自動取得する (#1991) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2039
- feat(distrokid-helper): データ取得を自動化する (#1992) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2040
- chore(distrokid-helper): Tailwind 4・shadcn/ui 基盤へ移行する (#2012) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2041
- chore(suno-helper): React 19・Tailwind 4 基盤へ移行する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2042
- fix(collection-serve): SIGTERM停止時に証跡を残す (#2001) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2046
- fix(suno-helper): 一時取得失敗でも選択状態を保持する (#2002) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2047
- fix(suno-helper): 実行前にcollection取得を確認する (#2003) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2048
- fix: pytest 一時ディレクトリの残骸蓄積を防ぐ (#2072) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2073
- chore(takt): 旧世代の repo ローカル takt override を削除しグローバル版に統一 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2080
- Fallow の共通設定・依存・baseline を Chrome 拡張へ導入 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2081
- chore(takt): concurrency 5 を恒久設定化 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2082
- [suno-helper] 稼働中ローカル配信元を動的検出する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2074
- [suno-ui] run controlsをshadcnへ移行 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2083
- [dx-infra] write_op_secret を JSON テンプレート経由に修正 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2084
- [analytics] collection-ideate の stale report を自動解消する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2086
- [distrokid-ui] server・disc選択操作をshadcnへ移行 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2085
- feat(doctor): check Reporting API job setup by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2090
- perf(test-infra): テスト中の実時間 sleep を排除(retry backoff / delay_between_replies)(#2091) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2099
- fix(upload): support multi-part title templates by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2100
- chore(extensions): migrate linting to Oxlint 1.73.0 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2102
- feat(skills): postmortem を flop-analysis へ改称 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2103
- chore(test-infra): pytest-xdist を導入しユニットスイートの並列実行に対応 (#2093) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2104
- chore(extensions): Fallow audit を CI 品質ゲートへ統合 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2105
- perf(dx): .envrc に nix-direnv を導入し devShell 入場コストを安定化 (#2097) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2106
- docs(wf-new): stale Analytics を自動更新して続行する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2107
- refactor(suno-ui): PatternList を shadcn へ移行する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2108
- docs(skills): TTP 分析へ欲求レイヤーを導入する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2109
- refactor(suno-ui): Overlay shell を shadcn へ移行する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2110
- docs(setup): stale report 案内を自動解消前提へ揃える by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2112
- refactor(distrokid-ui): status 表示を shadcn へ移行する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2111
- feat(suno): Style文字数上限を設定可能にする (#1938) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2113
- feat(extensions): OxlintでReact Hooks契約を維持する (#2019) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2114
- feat(flop-analysis): 仮説検証を自律実行する (#1972) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2115
- feat(setup): client secretを自動配置する (#1903) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2116
- feat(masterup): ローカル音源名で突合する (#1898) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2117
- chore(extensions): Oxlint CI 契約を固定する (#2020) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2118
- feat(analytics): full収集で維持率と地域データを解放する (#1799) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2119
- fix(collection-serve): 残留サーバーを安全に停止する (#1725) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2120
- feat(thumbnail): 確定サムネを任意でアーカイブする (#1942) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2121
- feat(channel-new): ペルソナ作成を本格チェーンへ接続する (#2079) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2122
- feat(preflight): worktree 環境を実装前に read-only 検査する yt-preflight を追加 (#2124) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2128
- ci: frozen sync + wheel build + installed artifact smoke job を追加 (#2126) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2127
- fix(dx): explicit setup 経路の依存同期を fail-closed 化する (#2125) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2129
- fix(tests): lefthook 契約テストの subprocess env から SKIP_LEFTHOOK のリークを遮断する (#2101) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2130
- fix(devshell): 並列 run の共有 TMPDIR を worktree ごとに分離する (#2088) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2131
- docs: skill の編集→検証→配布の一連手順を development.md に整備する (#2098) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2133
- feat(dx): yt-skills lint サブコマンドで SKILL.md frontmatter を秒単位検証する (#2096) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2134
- perf(tests): test_generate_videos_script の stub 実行ファイルを session-scope で共有する (#2092) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2137
- fix(tests): content-run-preflight で page-reload を mock し teardown 後の timer リークを塞ぐ (#2135) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2136
- ci: lint/test job に uv キャッシュと concurrency 自動キャンセルを導入 (#2095) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2132
- fix(devshell): 並列 worktree の Nix eval キャッシュ競合を NIX_CACHE_HOME で worktree 分離する (#2089) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2139
- feat(auth): git worktree で main 作業ツリーの auth/ をフォールバック参照して OAuth 認証を通す (#1721) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2142
- feat(thumbnail): Gemini API の TTP 既定 prompt 方針を Codex へ揃える (#2070) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2138
- docs(extensions): ESLint と Oxlint の lint 性能を再現可能な条件で比較し記録する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2149
- feat(thumbnail): Gemini CLI の TTP 既定 prompt 方針を Codex へ揃える (#2071) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2140
- feat(analytics): thumbnail-correlate に有意性検定・多重比較補正・最小サンプル数ガードを導入 (#1801) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2144
- feat(analytics): 分析・postmortem の学びを insights.jsonl へ蓄積し次サイクル企画へ機械接続する (#1830) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2145
- fix(collection-serve): POST /downloaded が部分 ZIP を warning 付き 200 で受理する (#1913) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2148
- chore(extensions): TypeScript 7.0.2 固定と lockfile 正規再生成を両 Chrome 拡張に適用 (#2014) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2146
- fix(suno-helper): Queue mode の stall タイムアウト時に完了済み clip で graceful degradation する (#1994) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2143
- docs(suno,suno-helper): duration_filter の config override を文書化し回帰テストで pin する (#1937) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2147
- feat(analytics): traffic_sources / by_device / 検索語詳細を分析経路に接続する (#1804) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2151
- fix(repo): CHANGELOG.md に merge=union を指定し並行 PR の conflict を緩和する (#2155) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2156
- docs(skill-design): codex 画像生成の JSON/Nix-first プロンプト実験レポートを追加 (#2078) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2141
- chore(extensions): TS7 移行後の両 Chrome 拡張を実経路で回帰検証する (#2015) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2159
- feat(auth): OAuth 再認証のログ・完了ページにチャンネル名を表示して判別可能にする (#1966) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2150
- feat(analytics): 成長 KPI 定点ビュー CLI yt-kpi-dashboard を追加 (#1819) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2152
- docs(skills): 課金 API 利用 26 skill に想定 API call 数契約を追加 (#2010) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2157
- fix(suno-helper): 新 Create UI の playlist clip row 検出を診断・修正する (#2043) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2160
- feat(masterup): playlist URL なしで 02-Individual-music/ のファイル名から title list を自動生成して突合する (#1998) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2153
- feat(thumbnail): テキスト描画を決定的合成に標準化し thumbnail-text-profile を適用する (#1907) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2161
- feat(audio-gen): yt-generate-master 手動実行時の raw_master 不整合を検知・承認付きで修復する (#1668) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2158
- refactor(thumbnail): 過密なプロンプト指示を簡素化して参照画像主導の生成精度を回復 (#1702) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2162
- feat(thumbnail): 画像 prompt への NG ワード/他ドメイン値混入を生成前検査で防止する (#1664) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2165
- fix(dx): takt worker の TMP・XDG・uv cache を current worktree へ隔離する (#2163) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2173
- fix(video-analyze): 解析結果キャッシュを追加し再実行時の Gemini 再課金を防止 (#1693) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2176
- chore(extensions): lint/format を ultracite(Oxlint + Oxfmt toolchain)へ移行する (#2154) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2168
- test(takt): lite workflow の状態遷移を fake provider contract test で保護する (#2164) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2178
- feat(cost): YouTube Data API quota の記録 schema と yt-cost-report 集計を追加 (#2006) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2177
- feat(config): wf_next の boolean 設定を「true = 手動工程を省く」向きの skip_* 系へ統一する (#1744) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2186
- feat(wf-next): 複数 collection を直列自動進行させる batch CLI yt-wf-batch を追加 (#1667) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2187
- feat(cost): playlist mutation の quota 記録を配線 (#2059) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2188
- feat(cost): upload agent の read preflight quota を記録 (#2057) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2189
- feat(cost): channel settings push の channels.update quota 記録を配線 (#2060) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2190
- feat(cost): pinned comment workflow の quota 記録を配線 (#2061) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2191
- feat(cost): benchmark read API の quota 記録を配線 (#2056) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2192
- feat(cost): channel・metadata read API の quota 記録を配線 (#2055) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2193
- feat(cost): 動画metadata一括更新3CLIにquota記録を配線 (#2058) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2194
- docs(extensions): TypeScript 5.9.3 と 7.0.2 の compile 性能を再現可能な条件で比較し記録する (#2016) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2195
- feat(auth): OAuth token の scope 分離 — read-only skill が write scope を共用しない設計へ (#1699) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2179
- yt-doctor で認証済み YouTube チャンネル存在を診断する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2206
- docs(extensions): TypeScript 7 の型検査レーンと WXT build の責務を文書化する (#2017) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2207
- [analytics] 収益メトリクス(estimatedRevenue / RPM)の収集・分析対応 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2208
- [analytics] playlist dimension の収集対応 — Complete Collection 効果の可視化 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2209
- [analytics] 動画別登録転換分析 — 転換率ランキングと subscribedStatus 収集 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2210
- [metadata] 歌詞資産の SRT 化と字幕アップロードに対応 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2211
- [thumbnail] auto_selection.mode=full の config・監査契約を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2212
- [analytics] retention drop 地点とシーン/BGM タイムラインを自動照合 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2213
- feat(videoup): audio_visualizer の配色と共通エフェクトを追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2214
- feat(videoup): audio visualizer に style プリセットを追加 (#1684) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2215
- feat(analytics): TTP 健全性アラートを追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2216
- Codex/fix takt overrides by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2217
- setup にチャンネル作成・channel ID 反映導線を追加する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2218
- [thumbnail] mode=full の全承認ゲート省略とテーマ自動決定を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2219
- feat(videoup): audio_visualizer にハート型スペクトラムを追加 (#1689) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2220
- docs(skills): 前後工程表記を統一する (#1821) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2221
- [strategy] 状態を持たない /market-research skill を新設 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2222
- [skills] /analytics-run 新設 — collect→analyze→report のマニフェスト駆動連鎖 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2223
- benchmark 系 CLI の --channel を --competitor へ即時リネーム by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2224
- feat(workflow): 定期制作スケジュール設定と /automation-schedule スキルを追加 (#1892) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2227
- [workspace] チャンネル解決チェーンへ --channel / CHANNEL と workspace 検出を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2228
- feat(thumbnail): config駆動のA/Bテスト用パターン生成を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2229
- [video-gen] ループ動画の確認・プレビュー承認ゲート by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2230
- [video-gen] 複数コレクションを並列動画化する yt-generate-videos-batch CLI を新設 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2231
- feat(videoup): エフェクト設定の短尺プレビューを追加 (#1749) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2232
- [video-gen] video_type による動画生成基盤を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2233
- feat(loop-video): Gemini Omni Flash エンジンを追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2234
- [skills] post-publish チェーン化 — video-upload 後続のゲート付き連鎖 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2235
- yt-doctor: workspace OAuth クライアント共有の推奨診断を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2237
- feat(community): 投稿バッチ設定スキーマを定義する (#1707) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2239
- [workspace] 利用可能な channel slug を列挙する yt-channel list CLI を新設 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2238
- feat(community): 投稿下書きをJSONバッチ生成へ移行する (#1709) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2240
- feat(collection-serve): コミュニティ投稿ルートを追加する (#1710) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2241
- feat(extensions): コミュニティ投稿API契約を追加する (#1711) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2242
- feat(extensions): community-helper の骨格を追加する (#1712) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2243
- docs(extensions): コミュニティ投稿 DOM を調査する (#1708) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2247
- feat(extensions): コミュニティ投稿 DOM 操作を実装する (#1713) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2248
- feat(extensions): コミュニティ投稿 runner を実装する (#1714) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2249
- feat(extensions): community-helper をリリース対象に追加する (#1715) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2250
- feat: Suno の定期無人実行と安全な再開を追加 (#1893) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2251
- feat(workflow): 制作〜公開の統合定期実行runnerを追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2252
- feat(workspace): 既存channel移行CLIとガイドを追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2253
- feat(thumbnail): add winning thumbnail iteration skill by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2254
- refactor(channel-new): integrate channel analysis mode by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2255
- feat(thumbnail): Codex画像の並列バッチ生成を追加 (#2028) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2256
- feat(suno-helper): 複数コレクションの連続実行を追加 (#2029) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2257
- feat(suno-helper): 完了音の設定と再生を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2258
- feat: yt-doctor に ai-exec の連続 apply を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2259
- docs: setup を yt-doctor apply パイプラインへ更新 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2260
- refactor(extensions): share shadcn/ui primitives by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2261
- fix: setupのコマンド実行と人間認証を分離する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2263
- fix: repo-local takt削除後の契約を整理する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2272
- test: candidate wheelの下流asset同期をE2E検証する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2271
- fix: fresh worktreeのskill実行環境を同期する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2273
- test: pytestを変更種別別laneへ分類する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2274
- docs: 開発者bootstrapを単一入口へ統一する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2275
- fix: automation-update が本体 release tag だけを追従する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2280
- fix: OAuth失効でautomation-updateを誤失敗させない by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2281
- feat: ring visualizer に conical fill を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2282
- dx: OAuth再認証をAI主導のbackground flowに統一する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2283
- fix: 単一言語preflightでscene phrasesを要求しない by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2287
- fix: 拡張UIを共有テーマトークンへ統一 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2288
- fix: benchmark commentsでfull scopeを使う by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2289
- feat: 拡張UIをOSダークモードへ追随 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2290
- fix: shadcn公式のテーマクラス契約へ統一 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2292
- fix(doctor): refresh expired OAuth tokens by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2298
- fix(streaming): pin sshd host key to ed25519 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2299
- docs(channel-new): constrain localization targets by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2300
- feat(extensions-ui): share form primitives and status tokens by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2301
- refactor(suno-helper): adopt shared shadcn primitives by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2302
- fix(extensions): restore semantic colors and Radix selects by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2310
- fix(suno-helper): 投入方式の選択色を明瞭化 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2313
- refactor(extensions-ui): shared shadcn/uiをBase UIへ移行 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2314
- fix(suno-helper): 投入方式カードを淡いアクセント配色に調整 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2321
- fix(suno-helper): チェックボックスカードの配置を統一 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2322
- chore(extensions-ui): 公式shadcn skillを導入 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2336
- fix(collection-serve): 完了済みSuno候補を除外 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2337
- fix(suno-helper): checkboxをラベル先頭行中央へ揃える by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2338
- perf(ci): changed path別に品質ゲートを最適化 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2339
- fix(extensions-ui): RadioGroup選択表示を是正 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2340
- feat(extensions): add distinct helper icons by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2341
- refactor(extensions-ui): resync shadcn primitives by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2342
- feat(suno-helper): discard settled collection queues by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2343
- fix(extensions-ui): keep helpers light-only by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2344
- feat(suno-helper): collapse collection and track lists by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2345
- feat(suno-helper): unify terminal notifications by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2346
- refactor(extensions-ui): share draggable overlay foundation by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2347
- feat(distrokid-helper): move popup to shared overlay by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2348
- feat(community-helper): move popup to shared overlay by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2349
- feat(extensions): add branded overlay headers by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2350
- fix(suno-helper): コレクション一覧をスクロール可能にする (#2353) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2354
- fix(extensions-ui): ホストの root font-size から寸法を分離 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2361
- fix(extensions): ブランド primary を指定 OKLCH に更新 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2362
- refactor(extensions-ui): 手組み UI を shadcn primitives へ移行 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2363
- [suno-helper] 投入方式の選択中カードを黒文字にする by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2365
- [suno-helper] 投入方式の選択ラジオを primary 色へ統一する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2367
- feat(channel-new): TTP動画尺を初期設定へ反映する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2370
- fix(automation-schedule): ネイティブschedulerを既定化する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2371
- perf(videoup): overlay encoder選択と計測を追加する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2377
- feat(live-chat): Codex自動返信CLIを追加する (#2374) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2378
- feat(streaming): live chat reply daemon を VPS に統合 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2379
- docs(live-chat): ライブチャット返信の運用 skill を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2380
- feat(workflow): wf-auto を一気通貫入口にする by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2388
- refactor(workflow): wf-auto を正規入口へ移行する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2389
- docs(dashboard): shadcn UI 構成の境界を定める by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2390
- feat(dashboard): channel registry と read model を追加する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2391
- feat(dashboard): shadcn UI とローカル配信を追加する (#2385) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2392
- docs(plans): 第 5 回セキュリティ監査のプラン 025〜027 を追加する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2393
- feat(dashboard): 起動時更新と公開予約数を追加 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2398
- fix(dashboard): 概要カードのデータ見切れを解消 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2401
- chore(deps): Python と Nix 依存を最新安定版へ更新 (#2355) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2406
- chore(extensions): npm 依存と pnpm を更新 (#2356) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2407
- chore(terraform): CLI と provider を更新 (#2358) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2408
- chore(actions): 依存 action を更新して SHA 固定 (#2357) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2409
- fix(auth): client_secrets をメモリ内で渡す (#2394) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2410
- fix(streaming): secret staging を 0700 にする (#2395) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2411
- fix(scripts): subprocess のパスを絶対化 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2412
- refactor(workflow): automation-run 互換入口を削除 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2413
- refactor(config): post-publish 承認設定を skip 化 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2414
- refactor(skills): chain 承認設定を skip 化 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2415
- feat(dashboard): 全チャンネルの指標を一覧表示 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2405
- docs: Eleven Music APIの採用条件を調査 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2417
- [#2304] issue-2304-b1-configuration-to by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2423
- tasuku-youtube-analytics-dashb by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2424
- feat(workflow): 対話停止点を設定で無人化 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2427
- fix: #2425-#2439 の feedback 対応 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2440
- [#2305] issue-2305-b2-suno-to-metadata by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2441
- fix(doctor): workspace共有assetsを正しく診断する (#2463) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2464
- [#2306] issue-2306-b3-analytics-thumbn by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2479
- feat(skills): 制作制約への翻訳スキルを追加 (#2442) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2480
- feat(skills): 価値ループ監査を追加 (#2443) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2481
- feat(masterup): Suno個別音源cleanupを既定化 (#2445) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2482
- feat(loop-video): 注意誘引要素の既定ガードを追加 (#2446) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2483
- feat(suno): 急変系スタイルを既定除外 (#2447) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2484
- feat(flop-analysis): 学びを制作制約へ還流 (#2451) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2485
- feat(suno): BGM insightsの還流経路を追加 (#2448) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2487
- feat(masterup): 曲間ラウドネス偏差ゲートを追加 (#2450) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2486
- feat(thumbnail): サムネイルを動画背景へ共用 (#2457) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2490
- fix(workspace): 内部 symlink を安全に実体化して import by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2491
- docs(workflow): takt routingを廃止 (#2453) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2488
- fix(wf-auto): Sunoブラウザ工程をagent主導に固定 (#2454) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2489
- docs(workflow): thumbnail 共用背景契約を後工程へ貫通 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2492
- fix(metadata-audit): target duration の分を秒へ正規化 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2493
- fix(masterup): libmp3lame の CBR/VBR 同時指定を解消 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2494
- fix(video-upload): 2026 quota bucket を plan と preflight に反映 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2495
- fix(suno-helper): 可視 Turnstile challenge を安全に待機・再開 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2496
- feat(skills): consume channel creative constraints by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2500
- fix(extensions): authenticate MV3 background mutations by exact origin by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2497
- fix(masterup): enforce channel audio duration target by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2498
- feat(post-publish): resume pinned comment after scheduled publish by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2499
- feat(suno-helper): adapt pacing to bursts and Turnstile challenges by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2502
- docs(config): remove channel dotenv onboarding by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2501
- refactor(config): remove runtime dotenv dependency by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2503
- refactor(config): remove setup dotenv management by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2504
- chore: takt 設定と pytest 調査記録を追加 (#2518) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2519
- [#2307] issue-2307-b4-uploads-youtube by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2516
- fix(takt): runtime.prepare 設定を復旧し sandbox 権限エラーを解消 (#2532) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2533
- refactor(dx): lefthook を廃止し品質ゲートを CI へ一本化 (#2534) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2538
- feat(takt): runtime-prepare で .venv を事前同期し worker の uv cache 依存を解消 (#2539) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2541
- test: mtime 失敗テストの teardown FileNotFoundError を修正する (#2540) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2542
- fix(takt): persona_providers を provider_routing.personas へ移行し reviewer=claude を有効化する (#2535) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2537
- docs(skills): スキル記述規約を Claude 5 前提へ改訂し横断定型文を削減 (#2565) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2566
- fix(skills): 配布先で解決できない参照を修正し契約テストで機械担保する (#2567) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2569
- feat(dashboard): 判断順に情報設計を再構成 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2547
- refactor(packaging): 全 yt-* CLI を commands/ の thin adapter へ移行する (#2308) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2560
- refactor(integration): B6 の低依存コード削除・履歴統合・契約文書移設を完了する (#2309) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2577
- docs(claude): CLAUDE.md を Claude 5 世代原則に沿ってスリム化する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2578
- feat(takt): リポジトリ専用 workflow 群を整備し takt を標準実装経路へ戻す (#2686) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2688
- chore(takt): 稼働中の audit-unit-split workflow 資産を git 管理下に置く (#2690) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2691
- chore: #2680 のleaf issue 90件を統合する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2868
- test: 配信インフラ監査の回帰契約を強化 (#2830) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2890
- fix(thumbnail): 画像生成の監査境界を固定 (#2786) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2893
- fix(suno-distrokid): 監査findingの回帰契約を追加 (#2729) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2889
- fix(metadata): 監査スコープ08の境界契約を固定 (#2806) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2892
- fix(system): CLI・doctor・preflight監査境界を固定 (#2816) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2895
- fix(dashboard): 監査スコープ12の境界回帰を解消する (#2867) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2891
- test(repository): 監査スコープ13を実行契約へ移行 (#2888) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2894
- test: suno-helper状態・キュー・API監査findingを実行境界で検証 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2913
- test: スキル配布監査を実行時契約へ置換 (#2856) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2914
- fix(suno-helper): scope 15 の監査 findings を解消する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2925
- fix(extensions): scope16の失敗境界を固定する (#2946) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/2947
- docs(takt): PR 作成を gh stack 前提へ切り替え issue 粒度基準を規約化する (#3019) by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/3020
- chore(takt): takt 資産監査レーン yt-auto-audit-runs を追加する by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/3021
- chore(release): v5.6.0 by @daiki-beppu in https://github.com/daiki-beppu/youtube-automation/pull/3023
Full Changelog: v5.5.17...v5.6.0