Description

Convert diarized transcripts to .vtt (speaker turns + timestamps) and publish them as caption tracks on the matching YouTube videos via the Data API. Outward-facing: gated by an approved dry-run.

Acceptance Criteria

Implementation Plan

Publish diarized transcripts as YouTube caption tracks

Prerequisite: timestamps come from diarization, not today’s transcripts

Current _data/transcripts/*.yml turns carry only speaker + textno per-turn start/end timestamps (only chapter-level youtube.chapters[].timestamp mm:ss exists, which is too coarse for cues). Real .vtt cues need per-segment start/end, which the diarized schema from TASK-244 → TASK-247 adds (hence this task’s dep on 247). Do NOT attempt VTT from the current timestamp-less turns; build against the diarized turn schema (speaker segments + start/end).

VTT generation (AC#1)

Scopes / endpoints (captions REQUIRE force-ssl)

Idempotency (AC#4 — replace, no dupes)

Dry-run + approval gate (per TASK-245 two-phase pattern)

Quota

Verification

Files

Reads: diarized _data/transcripts/*.yml (post TASK-247), _data/video_assets.yml. Uses bin/lib/youtube_client.rb. VTT written to gitignored scratch, not the repo. No repo writes.

Definition of Done