Open-Source Python Framework · Published on PyPI (castforge 0.1.3)

Source-to-podcast pipelines, fail-closed.

CastForge separates reusable podcast production mechanics from show-owned editorial policy—normalizing primary citations into an auditable EpisodeManifest, generating NotebookLM audio, verifying Cloudflare R2 byte length, and updating RSS atomically.

View source on GitHub ↗ PyPI: pip install castforge ↗ Powered show: Nitan Podcast →
Powers Nitan Podcast & AI Builder Brief

Evidence-gated clustering

StoryCluster deduplicates coverage and refuses to advance a story without a primary artifact or two independent corroborating reports.

Duration & shadow guards

Measures generated MP3 duration, retries NotebookLM in short mode when an episode exceeds its ceiling, and supports offline fixture tests.

Atomic R2 & RSS publishing

Checks Cloudflare R2 bucket capacity before upload and verifies public HTTP 200, audio/mpeg, and exact byte length before updating RSS.