A modern web application that automatically generates engaging podcast conversations from URLs or news topics using AI. Powered by podcastfy.ai.
- Two Generation Modes:
- Custom Podcast: Generate from URLs
- News Podcast: Generate from news topics
- URL Processing: Paste multiple URLs to generate content from various sources
- Multiple TTS Options:
- Google TTS (GEMINI) - Required for News Podcasts
- OpenAI TTS (Custom Podcasts only)
- ElevenLabs TTS (Custom Podcasts only)
- Customizable Settings:
- Word count
- Creativity level
- Conversation styles
- Dialogue structure
- Engagement techniques
- Persistent Settings: All settings are saved locally
- Modern UI: Clean, responsive interface with Apple-inspired design
- Real-time Preview: URL previews with favicons
- Progress Indicator: Visual feedback during generation
- Python 3.9+
- Google (Gemini) API key (required for all features)
- Optional for Custom Podcasts:
- OpenAI API key
- ElevenLabs API key
- Clone the repository:
git clone https://github.com/giulioco/podcastfy-ui.git
cd podcastfy-ui
- Create a virtual environment and activate it:
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Create a
.env
file in the root directory:
GEMINI_API_KEY=your_gemini_api_key
OPENAI_API_KEY=your_openai_api_key # Optional
ELEVENLABS_API_KEY=your_elevenlabs_api_key # Optional
- Run the development server:
python dev.py
- Open
http://localhost:8080
in your browser
This application is configured to deploy on Fly.io. For deployment instructions, please see the Fly.io deployment guide.
- Install the Fly.io CLI
- Login to Fly.io:
fly auth login
- Deploy:
fly launch
- Set your secrets:
fly secrets set GEMINI_API_KEY=your_key_here
- Deploy:
fly deploy
The application supports various customization options for Custom Podcasts:
conversation_config = {
'word_count': 4000,
'creativity': 0.7,
'conversation_style': [
'Engaging', 'Fast-paced', 'Enthusiastic', 'Educational'
],
'dialogue_structure': [
'Topic Introduction', 'Summary of Key Points',
'Discussions', 'Q&A Session', 'Farewell Messages'
],
'engagement_techniques': [
'Rhetorical Questions', 'Personal Testimonials',
'Quotes', 'Anecdotes', 'Analogies', 'Humor'
]
}
Required environment variables:
GEMINI_API_KEY
: For Google's Gemini model (required for all features)
Optional environment variables (for Custom Podcasts):
OPENAI_API_KEY
: For OpenAI's servicesELEVENLABS_API_KEY
: For ElevenLabs TTS
podcast-generator/
├── api/ # Serverless API functions
│ └── index.py # Main Flask application
├── templates/ # HTML templates
│ └── index.html # Main UI template
├── static/ # Static files
│ └── audio/ # Generated podcasts
├── dev.py # Local development server
├── vercel.json # Vercel configuration
├── requirements.txt # Python dependencies
└── .env # Environment variables
-
Mode Selection:
- Choose between Custom Podcast and News Podcast modes
- News Podcasts use Google TTS exclusively
- Custom Podcasts support multiple TTS options
-
URL Input (Custom Podcast mode):
- Paste multiple URLs separated by newlines or commas
- URLs are automatically parsed and displayed with favicons
- Remove URLs by clicking the 'x' button
-
News Topics (News Podcast mode):
- Enter any news topic to generate a podcast
- Uses Google TTS for optimal news delivery
- Automatically fetches and processes latest news
-
API Keys:
- Keys are stored locally in your browser
- Never transmitted except during podcast generation
- Can be cleared using the "Clear Form" button
-
Advanced Settings (Custom Podcast mode):
- Click "Advanced Settings" to customize generation
- All settings persist across page reloads
- Experiment with different combinations for optimal results
- Install Vercel CLI:
npm install -g vercel
- Login to Vercel:
vercel login
- Deploy:
vercel
- Add environment variables in Vercel dashboard:
GEMINI_API_KEY
: For Google's Gemini model (required)OPENAI_API_KEY
: For OpenAI's services (optional)ELEVENLABS_API_KEY
: For ElevenLabs TTS (optional)
- Clone the repository:
git clone https://github.com/giulioco/podcastfy-ui.git
cd podcastfy-ui
- Install dependencies:
pip install -r requirements.txt
-
Create a
.env
file with your API keys -
Run the development server:
python dev.py
- Open
http://localhost:5000
in your browser
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Commit changes:
git commit -am 'Add feature'
- Push to branch:
git push origin feature-name
- Submit a Pull Request
This project is licensed under the MIT License - see LICENSE for details.
- Powered by podcastfy.ai
- UI inspired by Apple's design guidelines
- Icons from Google's favicon service
- API keys are stored in browser's localStorage
- Keys are only used during podcast generation
- No data is permanently stored on servers
- Generated audio files are temporary
- Generation time varies with content length
- Some TTS services have rate limits
- Audio quality depends on chosen TTS provider
- Multiple language support
- Custom voice selection
- Batch processing
- Audio post-processing
- Podcast hosting integration