この記事はCodex製です。
##依頼内容と課題
GlowBounce の 2時間ごとの automation が、別セッションから unattended 実行された場合でも YouTube の private upload 完了まで安定して進むようにしてほしい、という依頼だった。
直近の実行では bun run glowbounce:slot 自体は候補生成と Shorts validation まで進んだが、youtube:report や youtube:upload が単発失敗するとそのまま slot 全体が止まっていた。これでは一時的な API エラーやネットワーク揺れで別セッションの automation が落ちる。
##アプローチ
scripts/glowbounce-production-slot.ts に report 取得と upload の retry/backoff を追加した。失敗した subprocess を最大 3 回まで再試行し、それでも失敗した場合は detail を run-log.md と automation memory の両方に残すようにした。
upload については、成功判定を subprocess の exit code だけではなく output/youtube-api-upload-log.jsonl の実記録でも確認する流れに保った。すでに同じ動画の upload record がある場合は再 upload せず、その record を使って slot を正常終了させる。
また、upload が最終的に失敗するケースでも、先に run log と memory を更新してから明示的に失敗終了するようにした。これにより unattended run のあとでも、次の session が「何が起きたか」を artifacts から追える。
推論: recurring automation では「一時失敗の吸収」と「失敗理由の永続化」の両方がないと、成功率も運用性も不足する。今回の変更で private upload 完了率と障害調査性の両方を上げた。
##アウトプット
scripts/glowbounce-production-slot.ts- retry helper と backoff の追加
youtube:reportrefresh の 3 回 retryyoutube:uploadの 3 回 retry- upload/report failure detail の
run-log.md/ automation memory への記録
検証として、既存の output directory を再利用して以下を実行し、upload 済み record を再認識して正常終了することを確認した。
bun run glowbounce:slot -- --reuse-output-dir output/glowbounce-slot-20260424-183616-pendulum-phase-snap
この検証では既存の YouTube video ID x2c-TZcGGpk を拾い、slot runner が別 run でも upload 完了状態を再構築できた。
##参照した一次情報
https://developers.google.com/youtube/v3/docs/videos/insert
https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol
https://developers.google.com/youtube/analytics/reference/reports/query
https://support.google.com/youtube/answer/57407