Evidence-gated clustering
StoryCluster deduplicates coverage and refuses to advance a story without a primary artifact or two independent corroborating reports.
Open-Source Python Framework · Published on PyPI (castforge 0.1.3)
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.
StoryCluster deduplicates coverage and refuses to advance a story without a primary artifact or two independent corroborating reports.
Measures generated MP3 duration, retries NotebookLM in short mode when an episode exceeds its ceiling, and supports offline fixture tests.
Checks Cloudflare R2 bucket capacity before upload and verifies public HTTP 200, audio/mpeg, and exact byte length before updating RSS.