A modern web application that automatically generates engaging podcast conversations from URLs using AI. Powered by podcastfy.ai.
- URL Processing: Paste multiple URLs to generate content from various sources
- Multiple TTS Options:
- Google TTS (GEMINI)
- OpenAI TTS
- ElevenLabs TTS
- 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.10+
- Pipenv
- One of the following API keys:
- Google (Gemini) API key
- OpenAI API key
- ElevenLabs API key
- Clone the repository:
git clone https://github.com/giulioco/podcastfy-ui.git
cd podcastfy-ui
- Install dependencies:
pipenv install
- Create a
.env
file:
GEMINI_API_KEY=your_gemini_api_key
OPENAI_API_KEY=your_openai_api_key
ELEVENLABS_API_KEY=your_elevenlabs_api_key
- Run the application:
pipenv shell
export FLASK_APP=app.py
export FLASK_ENV=development
flask run
- Open
http://localhost:5000
in your browser
The application supports various customization options:
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 modelOPENAI_API_KEY
: For OpenAI's servicesELEVENLABS_API_KEY
: For ElevenLabs TTS
podcast-generator/
├── app.py # Flask application
├── Pipfile # Dependencies
├── Pipfile.lock # Locked dependencies
├── static/ # Static files
│ └── audio/ # Generated podcasts
├── templates/ # HTML templates
│ └── index.html # Main UI template
├── data/ # Data directory
│ └── audio/ # Temporary audio files
└── .env # Environment variables
- Fork this repository
- Create a new Web Service on Render
- Use these settings:
- Build Command:
pip install pipenv && pipenv install --deploy --ignore-pipfile
- Start Command:
pipenv run gunicorn app:app --bind 0.0.0.0:$PORT
- Build Command:
- Add environment variables
- Deploy!
-
URL Input:
- Paste multiple URLs separated by newlines or commas
- URLs are automatically parsed and displayed with favicons
- Remove URLs by clicking the 'x' button
-
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:
- Click "Advanced Settings" to customize generation
- All settings persist across page reloads
- Experiment with different combinations for optimal results
- 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
For support:
- Check the Issues page
- Create a new issue
- Contact [email protected]
- 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