← back to AgentAbrams
podcast/build_episode.py
58 lines
#!/usr/bin/env python3
"""
build_episode.py — Build a complete podcast episode from a devlog post.
Pipeline: post → script → TTS → audio file
Usage:
python3 podcast/build_episode.py posts/2026-02-22.md [developer_name]
Environment variables:
ELEVEN_API_KEY
"""
import sys
from pathlib import Path
# Add project root to path for imports
sys.path.insert(0, str(Path(__file__).parent))
from script_from_post import build_script
from tts_engine import generate_podcast_audio
def build(post_path: str, developer: str = "Agent Abrams"):
print(f"Building podcast episode from: {post_path}")
# Generate script
script = build_script(post_path, developer)
print(f"Script generated ({len(script)} chars)")
# Generate audio
out_dir = Path("podcast/output/audio")
out_dir.mkdir(parents=True, exist_ok=True)
date_stem = Path(post_path).stem
output_file = out_dir / f"{date_stem}.mp3"
generate_podcast_audio(script, str(output_file))
print(f"Episode ready: {output_file}")
return str(output_file)
def main():
if len(sys.argv) < 2:
print("Usage: build_episode.py <post.md> [developer_name]", file=sys.stderr)
sys.exit(2)
if not Path(sys.argv[1]).is_file():
print(f"File not found: {sys.argv[1]}", file=sys.stderr)
sys.exit(2)
developer = sys.argv[2] if len(sys.argv) > 2 else "Agent Abrams"
build(sys.argv[1], developer)
if __name__ == "__main__":
main()