Automate the creation of a weekly AI-generated podcast using trending news, conversational scripts, realistic AI voices, and automatic YouTube uploads.
- 📥 News Fetching — Automatically collects trending news from sources like CNN, BBC, etc.
- 📝 Script Generation — Converts news into dynamic podcast conversations between hosts.
- 🗣️ Text-to-Speech — Uses realistic AI voices for podcast narration.
- 📼 Podcast Generation — Compiles voice files into an audio episode.
- 📺 YouTube Upload — Uploads the final podcast to your YouTube channel with a generated thumbnail.
- ⏱️ Fully Automated — Runs every Saturday via GitHub Actions.
- News API pulls top headlines.
- LLM via OpenRouter creates a script for two podcast hosts.
- TTS module turns the script into spoken dialogue.
- FFmpeg assembles audio clips into a full episode.
- Uploader publishes it to YouTube with title, description, and thumbnail.
- GitHub Actions automates the entire pipeline weekly.
AI-Podcast/
│
├── .github/workflows/ # GitHub Actions automation
├── src/
│ ├── news_fetch.py # Fetch trending news
│ ├── script_generator.py # Generate podcast dialogue script
│ ├── text_to_speech.py # Convert script to audio
│ ├── podcast_generator.py # Stitch audio into episode
│ ├── uploader.py # Upload to YouTube
│ └── utils.py # Shared utilities and settings
├── main.py # Main runner script
├── requirements.txt # Python dependencies
└── README.md # Project documentationgit clone https://github.com/MohammedSaudAlsahli/AI-Podcast.git
cd AI-Podcastpython -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activatepip install -r requirements.txtSet your API keys and secrets in GitHub Actions (Settings > Secrets and variables) or in a .env file (if running locally):
NEWS_API_KEYGOOGLE_API_KEYGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETGOOGLE_PROJECT_IDTOKEN_URIACCESS_TOKENREFRESH_TOKENOPENROUTER_API_KEY
python main.pyThis project is fully automated with GitHub Actions.
- The workflow is defined in
.github/workflows/main.yml. - It runs every Saturday at 6 AM UTC using this cron schedule:
schedule:
- cron: "0 6 * * 6"- You can also manually trigger it from the Actions tab.
| 🎧 Podcast Audio | 🖼️ Thumbnail | 📺 YouTube Upload |
|---|---|---|
| AI-generated voices | Auto-generated (coming soon) | Uploaded automatically |
- OpenRouter — LLM API
- NewsAPI.org — News data
- Google Text-to-Speech — Realistic voice synthesis
- FFmpeg — Audio processing
- YouTube Data API — Video publishing
- GitHub Actions — Workflow automation
Mohammed Saud Alsahli Digital Product Manager & Python Developer 🔗 LinkedIn 📫 Email: [email protected]
- Add auto-thumbnail generation using AI image tools
- Add support for Arabic and other languages
- Add web dashboard for configuration and analytics
- Publish podcast to Spotify & Apple Podcasts
This project is licensed under the MIT License. Feel free to use, share, and improve!