Description

Turn approved content opportunities (TASK-257) into YouTube playlists (topic/conference/era groupings) and Shorts (cut from approved quote timestamps, uploaded via TASK-249). Outward-facing: dry-run and explicit human approval before anything publishes; published items link back into _data for site rendering.

Acceptance Criteria

Implementation Plan

Publish playlists + Shorts from approved insights

Scopes / client

Playlists (AC#1)

Shorts (AC#2) — NO special Shorts API

Endpoints + quota

Dry-run + approval gate (per TASK-245 two-phase pattern, AC#3)

Idempotency

Write-back for site rendering (AC#4)

Verification

Files

Reads: TASK-257 output, _data/video_assets.yml (playlist: field). Writes: _data/video_assets.yml (playlist ids + Short asset_ids). Uses bin/lib/youtube_client.rb (245) + TASK-249 upload pipeline + ffmpeg.

Definition of Done