Skip to content

Repository files navigation

AI Podcast Script Generator

Turn any document or web page into a ready-to-record two-host podcast script — powered by Google Gemini and CrewAI.

Overview

This project automates the entire pipeline from raw content to a polished podcast transcript. Drop in a PDF, Word doc, plain-text file, or a URL and the system produces a natural, engaging two-host conversation script with distinct personalities — no manual editing required.

Built as a full-stack application with four ways to interact: a command-line tool, a REST API, a React Native mobile app, and a static web dashboard.

Tech Stack

Layer Technologies
AI / Agents Google Gemini 1.5 Flash · CrewAI · LiteLLM
Backend Python · Flask · background threading · UUID job tracking
Mobile React Native · Expo
Web Vanilla HTML/JS (static dashboard)
Tooling Python venv · npm · dotenv

Key Features

  • Multi-format ingestion — accepts .txt, .pdf, .docx, .md, or any URL (scraped automatically)
  • AI-generated dialog — CrewAI agent enforces distinct host personas and structures content into natural back-and-forth conversation
  • Async job processing — the Flask API runs generation in a background thread; clients poll for status and download results when ready
  • Four client interfaces — CLI, REST API, Expo mobile app, and static web page all talk to the same backend
  • Configurable output — caller supplies host names and target duration; the agent adapts accordingly

Architecture

┌─────────────────────────────────────────────────┐
│                  Client Layer                   │
│   CLI  │  Flask REST API  │  Expo App  │  Web   │
└────────────────────┬────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────┐
│              Flask Backend (app.py)             │
│  /api/upload · /api/status · /api/download      │
│  Background thread · Job state dictionary       │
└────────────────────┬────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────┐
│         CrewAI Agent (podcast_generator.py)     │
│  FileReadTool · ScrapeWebsiteTool               │
│  Google Gemini 1.5 Flash via LiteLLM            │
└─────────────────────────────────────────────────┘

Project Structure

CreatePodcast/
├── scripts/
│   └── podcast_generator.py   # CrewAI agent — core AI logic
├── backend/
│   └── app.py                 # Flask REST API
├── frontend/                  # Expo / React Native mobile app
├── web-frontend/
│   └── index.html             # Static web dashboard
├── input_files/               # Sample input documents
├── script_outputs/            # Generated podcast scripts
├── start-dev.sh               # One-command dev bootstrap
└── requirements.txt           # Python dependencies

Quick Start

# 1. Clone and set up environment
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

# 2. Add your Gemini API key
echo "GOOGLE_API_KEY=your_key_here" > .env

# 3. Run the CLI generator
python scripts/podcast_generator.py

# 4. Or start the full stack (API + Expo)
./start-dev.sh

For detailed setup instructions, API reference, and debugging tips, see walkthrough.md.

Sample Output

The generator produces scripts like:

[HOST 1 - Alex]: Welcome back to the show! Today we're diving into something
                 I think everyone needs to hear about...

[HOST 2 - Jamie]: Absolutely, Alex. I've been looking forward to this one.
                  The material here is genuinely fascinating...

Built to explore the intersection of LLM-powered agents and practical content creation tooling.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages