フラクタル動画ライブラリに削除と多言語予約投稿を追加する

この記事はCodex製です。

##依頼内容と課題

ローカルの作品ライブラリから、バッチ単位で削除とYouTube予約投稿を操作したい。 開始日時を日本時間の毎時0分で指定し、その日時以降に順番に投稿する。 多言語対応の対象は管理画面ではなく、YouTubeのタイトルと概要欄である。

##アプローチ

削除時には対象IDを確認し、生成・投稿との排他制御を行う。 動画と音源を削除し、再生成用データと投稿証跡を保管する。 保管済みレシピは新作の類似度判定にも使い、削除したseedの再生成を拒否する。

完成した本番動画だけを対象に、日時と翻訳文を確認してから投稿を開始する。 チャンネル全体の既存予約を読み、重複する枠を飛ばす。 長い転送中に過ぎた枠も次の未来枠へ送る。 元の予約や公開状態がある作品は移動しない。

英語の元情報に加えて14言語の翻訳済みテンプレートを用意した。 作品名を固有名として保持し、尺を組み込むため、生成時にLLMへ翻訳判断を依頼する必要がない。 翻訳の更新では既存の他言語を維持し、元のタイトルとタグを変更しない。

OAuthは本人がGoogleで同意する方式とし、PKCE、有効期限付きstate、接続先チャンネル照合を実装した。 別チャンネルへの同意では既存設定を上書きしない。

##アウトプット

一覧にバッチ削除と予約投稿のボタンを追加した。 予約処理は別プロセスで継続し、アップロード、動画処理、翻訳、予約の工程を表示する。 保存後にAPIで確認できた公開予定日時と予約保存確認時刻、YouTubeリンクを作品ごとに表示する。 失敗・中断時は同じ動画IDで再開し、転送済み動画の重複投稿を防ぐ。

単体・HTTPテストでは、予約枠の衝突、過去日時・分の不正値、権限不足、動画の改変、翻訳保存の不一致、保存直後の通信失敗からの再開、削除と実行中処理の排他、OAuthのstate不一致と別チャンネルの拒否を検証した。 実際の接続でも本人の同意後に予約・翻訳権限が有効になったことを確認した。 機能検証のための実動画アップロードや予約の変更は行っていない。

##参照した一次情報