If self-hosting isn't your thing, take a look at our upcoming online services: PigeonPod
Channel list
Channel detail
- 🎯 Smart Subscription: Quickly add and sync YouTube channels or playlists with one click.
- 🤖 Auto Sync Updates: Automatically check and sync latest channel content with incremental updates.
- 📻 RSS Podcast Subscription: Generate standard RSS subscription links, compatible with any podcast client.
- 🔍 Content Filtering: Support filtering by title and description keywords (include/exclude) and episode duration.
- 📊 Episode Management: View, delete, and retry failed episode downloads.
- 🎦 Video Support: Download video episodes with selectable resolutions and encodings; watch in podcast clients that support video.
- 🎚 Audio Quality Controls: Choose between 0–10 quality levels or keep the original track to balance fidelity and size.
- 💽 Chapters & Metadata: Automatically writes metadata and chapter markers to files for a better listening experience.
- ✨ Ad-free Listening: Automatically remove intro and mid-roll ads from episodes.
- 🍪 Custom Cookies: Supports subscription of age-restricted content and membership content by uploading cookies.
- 🌐 Multi-language Support: Complete support for English, Chinese, Spanish, Portuguese, Japanese, French, German, Korean interfaces.
- 📱 Responsive UI: Excellent experience on any device, anytime, anywhere.
Make sure you have Docker and Docker Compose installed on your machine.
- Use the docker-compose configuration file, modify environment variables according to your needs
version: '3.9'
services:
pigeon-pod:
image: 'ghcr.io/aizhimou/pigeon-pod:latest'
restart: unless-stopped
container_name: pigeon-pod
ports:
- '8834:8080'
environment:
- 'PIGEON_BASE_URL=https://pigeonpod.cloud' # set to your domain
- 'PIGEON_AUDIO_FILE_PATH=/data/audio/' # set to your audio file path
- 'PIGEON_COVER_FILE_PATH=/data/cover/' # set to your cover file path
- 'SPRING_DATASOURCE_URL=jdbc:sqlite:/data/pigeon-pod.db' # set to your database path
volumes:
- data:/data
volumes:
data:- Start the service
docker-compose up -d- Access the application
Open your browser and visit
http://localhost:8834with default username:rootand default password:Root@123
Make sure you have Java 17+ and yt-dlp installed on your machine.
-
Download the latest release JAR from Releases
-
Create data directory in the same directory as the JAR file.
mkdir -p data- Run the application
java -jar -DPIGEON_BASE_URL=http://localhost:8080 \ # set to your domain
-DPIGEON_AUDIO_FILE_PATH=/path/to/your/audio/ \ # set to your audio file path
-Dspring.datasource.url=jdbc:sqlite:/path/to/your/pigeon-pod.db \ # set to your database path
pigeon-pod-x.x.x.jar- Access the application
Open your browser and visit
http://localhost:8080with default username:rootand default password:Root@123
- Java 17 - Core language
- Spring Boot 3.5 - Application framework
- MyBatis-Plus 3.5 - ORM framework
- Sa-Token - Authentication framework
- SQLite - Lightweight database
- Flyway - Database migration tool
- YouTube Data API v3 - YouTube data retrieval
- yt-dlp - Video download tool
- Rome - RSS generation library
- Javascript (ES2024) - Core language
- React 19 - Application framework
- Vite 7 - Build tool
- Mantine 8 - UI component library
- i18next - Internationalization support
- Axios - HTTP client
- Java 17+
- Node.js 22+
- Maven 3.9+
- SQLite
- yt-dlp
- Clone the project
git clone https://github.com/aizhimou/PigeonPod.git
cd PigeonPod- Configure database
# Create data directory
mkdir -p data/audio
# Database file will be created automatically on first startup-
Configure YouTube API
- Create a project in Google Cloud Console
- Enable YouTube Data API v3
- Create an API key
- Configure the API key in user settings
-
Start backend
cd backend
mvn spring-boot:run- Start frontend (new terminal)
cd frontend
npm install
npm run dev- Access the application
- Frontend dev server:
http://localhost:5173 - Backend API:
http://localhost:8080
- Ensure yt-dlp is installed and available in command line
- Configure correct YouTube API key
- Ensure audio storage directory has sufficient disk space
- Regularly clean up old audio files to save space
Made with ❤️ for podcast enthusiasts!
⭐ If you like PigeonPod, give us a star on GitHub!