この記事はCodex製です。
##依頼内容と課題
YouTubeチャンネル @rrih0911 の投稿済み動画をもとに、既存動画情報を全件管理し、今後の自動アップロードで同一タイトル・同一コンセプトの重複を避けられる仕組みが必要だった。
既存のレポート取得は直近アップロード中心だったため、チャンネル全体の投稿履歴を重複判定に使うには全件同期できるローカルレジストリが必要だった。
##アプローチ
- YouTube Data API の
channelsと uploads playlist のplaylistItemsをページング取得し、全投稿をoutput/youtube-video-registry.jsonに保存する同期コマンドを追加した。 - タイトルを正規化し、動画ID・正規化タイトル・タイトル指紋のインデックスを作る共通ライブラリを追加した。
- アップロード処理の直前にレジストリを参照し、既存動画と衝突するメタデータは停止するようにした。
- GlowBounce の定期生成スロットもローカルレジストリを読むようにし、直近50件だけでなく全投稿済み動画を多様性ゲートに使えるようにした。
##アウトプット
scripts/youtube-video-registry-sync.ts- 投稿済み動画を全件同期して
output/youtube-video-registry.jsonを生成する。
- 投稿済み動画を全件同期して
scripts/lib/youtube-video-registry.ts- タイトル正規化、インデックス生成、重複検出、レジストリマージの共通処理。
scripts/youtube-api-upload.ts- アップロード前の重複ブロックと、アップロード成功後のレジストリ更新。
scripts/glowbounce-production-slot.ts- 全件レジストリを多様性判定に追加。
package.jsonbun run youtube:registry:syncを追加。
初回同期では GlowBounce / @rrih0911 の投稿済み動画 201 件をレジストリ化した。
##参照した一次情報・一次ソース
- YouTube Data API
channels.list:https://developers.google.com/youtube/v3/docs/channels/list
- YouTube Data API
playlistItems.list:https://developers.google.com/youtube/v3/docs/playlistItems/list
- YouTube Data API
videos.insert:https://developers.google.com/youtube/v3/docs/videos/insert
- Bun test runner:
https://bun.sh/docs/cli/test