All Stories
2026-09-173 min read

Podcast · Video · Whisper · TableModel · Multimodal AI · Pixeltable Cloud · Clipping

ReelForge: Podcast Chapters and a Highlight Clip in One app.py

Ingest MP4 or WAV, transcribe, chapter the episode, cut a highlight. Pixeltable is the episode row — not FFmpeg plus a transcription fleet plus a vector DB.

Pierre Brunelle

Pierre Brunelle

Pixeltable Team

Summary: ReelForge is the show-notes loop: drop a video episode or a WAV, get a transcript, chapter titles, a hook, and a highlight MP4 with a thumbnail. You do not stand up Whisper workers, an FFmpeg box, and a search index as three products. You declare Podcasts. Insert the file. The rest follows. pip install pixeltable.

The Product#

  • Ingest an episode with episode_id, show, title, guest
  • Accept an MP4, a WAV, or both
  • Transcribe, chapter, pick a highlight window
  • Search past episodes by what was said

Natural-language visual moments are ClipFinder. The sales-call transcript object is CallSense. This post is the episode: audio resolution, chapters, a clipped file.

The Stitch You Delete#

Object store for the master. A job that calls Whisper. Another job that asks an LLM for chapters. FFmpeg on a worker for the 45-second cut. Embeddings in a sidecar so last week’s show is searchable. Pixeltable is the row those joints were syncing by hand. That is the Frankenstein stack.

The Receipt#

python

Gemini returns JSON. parse_chapters is the object you query — not a shipped virality model. clip and extract_frame follow the highlight window. Audio-only rows still transcribe; the cut is empty without a video. Same file on Cloud: pxt db updatepxt schema updatepxt service update.

What This Is Not#

Not Descript. Not a TikTok scheduler. Auth and the CMS stay where they are. Frame-level visual search is ClipFinder. This is chapters plus one cut on the parent row.

People Also Ask#

Video or audio? Either column can be null. pick_audio prefers the WAV when you have one.

Which Whisper? model='base' matches the homepage. Swap the string; the column stays.

How do I go to Cloud? Same app.py. PIXELTABLE_API_KEY, pxt://org:db, then db → schema → service.

Chapter the Episode, Cut the Hook#

Declare the show. Apply the file. Insert the master. Search the library. Keep the clip. Delete the FFmpeg farm.

Declarative. Multimodal. Incremental.

Focus on innovation, not infrastructure.

10-minute tutorial · Join community