Audorapod is an AI-powered podcast generation tool that transforms any topic into professional podcast scripts and audio content. Using parallel research via Exa.AI and Azure OpenAI, it creates natural conversational scripts with 3-host formats and optional voice synthesis via ElevenLabs.
- Fast Research: 8 parallel searches via Exa.AI with AI synthesis
- Natural Scripts: Conversational podcast scripts with 3-host format
- Voice Generation: Text-to-speech with ElevenLabs (optional)
- Flexible Duration: 1-60 minute episodes that scale automatically
- Easy Customization: All AI prompts in
/prompts/
folder for easy editing - No Confirmation: Runs directly without prompts
-
Install Dependencies
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
-
Environment Setup
- Copy
.env.example
to.env
and fill in your API keys:cp .env.example .env
- Required: Exa.AI API key, Azure OpenAI credentials
- Optional: ElevenLabs API key (for audio generation)
- Copy
cd src
python main.py --topic "Your topic here"
# 5-minute podcast (default)
python main.py --topic "AI safety trends"
# 10-minute podcast
python main.py --topic "Future of remote work" --duration 10
# With audio generation
python main.py --topic "Climate tech" --duration 15 --audio
--topic
or-t
: Podcast topic (required)--duration
or-d
: Length in minutes (1-60, default: 5)--audio
or-a
: Generate audio with ElevenLabs TTS--verbose
or-v
: Detailed logging--cleanup
or-c
: Remove audio segments after merging
The application generates files in the output/
directory:
research_<topic>_<timestamp>.json
- Research data from Exa.AIscript_<topic>_<timestamp>.json
- Podcast script in JSON formatscript_<topic>_<timestamp>.txt
- Readable podcast scriptaudio/
- Individual MP3 segments (when using --audio)podcast_full_<timestamp>.mp3
- Complete merged podcast
Topic + Duration → Research → Synthesis → Script Generation → Audio (Optional)
↓ ↓ ↓ ↓ ↓
User Input Exa.AI API Key Themes Natural Dialogue ElevenLabs TTS
(32 sources Analysis (Scaled to time) (3 voices)
parallel)
audorapod/
├── venv/ # Virtual environment
├── src/
│ ├── main.py # CLI application entry point
│ ├── config.py # Configuration and API keys
│ ├── azure_llm.py # Azure OpenAI client (increased token limits)
│ ├── researcher.py # Exa.AI research module
│ ├── research_synthesizer.py # Research synthesis for script focus
│ ├── scriptwriter.py # Podcast script generator (natural conversations)
│ ├── voice_generator.py # ElevenLabs TTS integration
│ ├── audio_merger.py # Audio file merging with FFmpeg
│ └── prompt_loader.py # Utility for loading external prompts
├── prompts/
│ ├── researcher_prompt.md # Research analysis prompt
│ ├── scriptwriter.md # Script generation prompt
│ ├── query_generator.md # Search query generation prompt
│ ├── synthesis.md # Research synthesis prompt
│ └── system_prompt.md # System prompt for JSON responses
├── output/ # Generated podcast files
└── .env # API configuration
- User Input:
python main.py --topic "AI safety trends" --duration 10
- Research Phase: 8 parallel searches via Exa.AI (~32 high-quality sources)
- Synthesis Phase: AI extracts key themes and conversation hooks
- Script Generation: Natural conversational script with 3-host format
- Audio Generation (optional): Text-to-speech conversion using ElevenLabs
- Output: Files saved to
output/
directory with timestamps
Typical execution time: ~1.5 minutes for complete workflow (80% faster!)
All AI prompts are in the /prompts/
folder - edit them to customize behavior:
query_generator.md
- How search queries are createdsynthesis.md
- How research is synthesized into themesscriptwriter.md
- How conversations are generatedresearcher_prompt.md
- How research is analyzedsystem_prompt.md
- Basic system instructions
- Fast: 8 parallel searches, ~1.5 minute execution time
- Hosts: Sarah (host), Tony (expert), Brian (trend analyst)
- Natural: Authentic conversations with interruptions and reactions
- Scalable: Episodes automatically adjust to requested duration
- Simple: No confirmation prompts, runs directly
- FFmpeg: Required for audio merging (install via Homebrew:
brew install ffmpeg
) - ElevenLabs Account: For voice generation (configure voice IDs in
.env
)
If you encounter import or dependency issues:
- Ensure you're using the correct Python environment:
source venv/bin/activate
- Verify OpenAI version:
pip list | grep openai
(should be 1.35.0) - Try alternative execution method:
PYTHONPATH=src venv/bin/python -m main