[Content] Automated Episode Compiler — Highlights to Published Video #880

Closed
opened 2026-03-21 23:40:07 +00:00 by perplexity · 1 comment
Collaborator

Why This Is High Leverage

The content pipeline is the V2 roadmap's #1 recommendation for what to build first: "they produce visible, shareable output that drives community growth, which funds everything else." This ticket takes the highlight detection output and turns it into publishable episodes — the YouTube/Nostr content that generates revenue ($100-$2000/month Year 1) and community.

Scope

End-to-end pipeline: ranked highlights → extracted clips → composed episode → published to YouTube + Nostr.

Clip Extraction

  • FFmpeg frame-accurate extraction from recorded stream
  • MoviePy v2.2.1 for composition (text overlays, transitions, audio mixing)

Episode Composition

  • Intro card (Timmy branding)
  • Highlight montage with transitions
  • TTS narration via Kokoro-82M or Piper
  • Background music from pre-generated Suno library
  • Outro with links/subscribe prompt

Publishing

  • YouTube Data API v3 (automated upload, max ~6/day)
  • Blossom (NIP-B7) + NIP-94 for Nostr publishing
  • Meilisearch index for searchable archive

Requirements

  • src/content/extraction/clipper.py — FFmpeg-based clip extraction from highlights
  • src/content/composition/episode.py — MoviePy episode builder (intro, highlights, narration, outro)
  • src/content/narration/narrator.py — TTS narration generation (Kokoro-82M via mlx-audio)
  • src/content/publishing/youtube.py — YouTube Data API v3 upload
  • src/content/publishing/nostr.py — Blossom upload + NIP-94 metadata event
  • src/content/archive/indexer.py — Meilisearch indexing
  • Config: episode template, intro/outro assets, music library path

Acceptance Criteria

  • Given 5 highlight clips, produces a composed episode video with narration
  • Uploads to YouTube with correct metadata (title, description, tags, thumbnail)
  • Publishes to Nostr with content-addressed Blossom storage
  • Episode is indexed and searchable in Meilisearch

Estimated Effort: 4-5 weeks total (extraction 1wk, composition 2-3wk, publishing 1wk)

Assignee: Kimi

## Why This Is High Leverage The content pipeline is the V2 roadmap's #1 recommendation for what to build first: "they produce visible, shareable output that drives community growth, which funds everything else." This ticket takes the highlight detection output and turns it into publishable episodes — the YouTube/Nostr content that generates revenue ($100-$2000/month Year 1) and community. ## Scope End-to-end pipeline: ranked highlights → extracted clips → composed episode → published to YouTube + Nostr. ### Clip Extraction - FFmpeg frame-accurate extraction from recorded stream - MoviePy v2.2.1 for composition (text overlays, transitions, audio mixing) ### Episode Composition - Intro card (Timmy branding) - Highlight montage with transitions - TTS narration via Kokoro-82M or Piper - Background music from pre-generated Suno library - Outro with links/subscribe prompt ### Publishing - YouTube Data API v3 (automated upload, max ~6/day) - Blossom (NIP-B7) + NIP-94 for Nostr publishing - Meilisearch index for searchable archive ## Requirements - [ ] `src/content/extraction/clipper.py` — FFmpeg-based clip extraction from highlights - [ ] `src/content/composition/episode.py` — MoviePy episode builder (intro, highlights, narration, outro) - [ ] `src/content/narration/narrator.py` — TTS narration generation (Kokoro-82M via mlx-audio) - [ ] `src/content/publishing/youtube.py` — YouTube Data API v3 upload - [ ] `src/content/publishing/nostr.py` — Blossom upload + NIP-94 metadata event - [ ] `src/content/archive/indexer.py` — Meilisearch indexing - [ ] Config: episode template, intro/outro assets, music library path ## Acceptance Criteria - Given 5 highlight clips, produces a composed episode video with narration - Uploads to YouTube with correct metadata (title, description, tags, thumbnail) - Publishes to Nostr with content-addressed Blossom storage - Episode is indexed and searchable in Meilisearch ## Estimated Effort: 4-5 weeks total (extraction 1wk, composition 2-3wk, publishing 1wk) ## Assignee: Kimi
claude was assigned by Rockachopa 2026-03-22 23:33:23 +00:00
claude added the deprioritizedinfrastructure labels 2026-03-23 13:56:20 +00:00
Collaborator

PR created: http://143.198.27.163:3000/Rockachopa/Timmy-time-dashboard/pulls/1318

Implemented the full content pipeline:

  • src/content/extraction/clipper.py — FFmpeg async clip extraction with graceful degradation
  • src/content/composition/episode.py — MoviePy episode builder (intro, highlights, crossfades, narration, music, outro) via asyncio.to_thread
  • src/content/narration/narrator.py — TTS via Kokoro-82M → Piper fallback; build_episode_script() helper
  • src/content/publishing/youtube.py — YouTube Data API v3 upload with 6/day quota enforcement
  • src/content/publishing/nostr.py — Blossom (NIP-B7) upload + NIP-94 metadata event
  • src/content/archive/indexer.py — Meilisearch episode indexing and search
  • 18 new settings in config.py for all pipeline components
  • 90 unit tests, all 647 unit tests pass
PR created: http://143.198.27.163:3000/Rockachopa/Timmy-time-dashboard/pulls/1318 Implemented the full content pipeline: - `src/content/extraction/clipper.py` — FFmpeg async clip extraction with graceful degradation - `src/content/composition/episode.py` — MoviePy episode builder (intro, highlights, crossfades, narration, music, outro) via `asyncio.to_thread` - `src/content/narration/narrator.py` — TTS via Kokoro-82M → Piper fallback; `build_episode_script()` helper - `src/content/publishing/youtube.py` — YouTube Data API v3 upload with 6/day quota enforcement - `src/content/publishing/nostr.py` — Blossom (NIP-B7) upload + NIP-94 metadata event - `src/content/archive/indexer.py` — Meilisearch episode indexing and search - 18 new settings in `config.py` for all pipeline components - 90 unit tests, all 647 unit tests pass
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Rockachopa/Timmy-time-dashboard#880