Twocast
# ποΈ Twocast - AI Podcast Generator - Two-person Podcast [δΈζζε](./README.zh-CN.md) | π Website: [Twocast.app](https://twocast.app/)  ## Community - [Discord](https://discord.gg/VJREVF9Ja3) - [Telegram](https://t.me/+FYXV9IAVqcY5MTYx) --- ## β¨ Key Features - π₯ Two-person Podcast - β±οΈ Generate 3-5 minute podcasts with one click - π§ Supports multiple generation methods: **Topic**, **Link**, **Document** (doc/pdf/txt), **List Page** (5-9 minutes) - π Multi-language support - β¬οΈ Downloadable audio - π Podcast content includes: **Audio, Outline, Script** - π Supports three major platforms: **Fish Audio**, **Minimax**, **Google Gemini** --- ## π§ Sample Podcasts - πΊπΈ English: [Hacker News Hot Articles](https://twocast.app/podcast/vs962a7f-9461-4875-b7c7-2f5aca66126e) - π¨π³ δΈζ: [Hacker News ηζ¦](https://twocast.app/podcast/vs789e71-b192-4374-93a2-8177f457ba5c) - π¨π³ δΈζ: [V2EX ηζ¦](https://twocast.app/podcast/vsbed589-6493-4ac2-8217-64d82b1ecafa) --- ## π Quick Start ### Method 1: Local Setup 1. **Start dependency services** ```bash docker run -t -d --restart always -p 8080:8080 -e PORT=8080 --name textract bespaloff/textract-rest-api:v4.0.2 docker run -d --restart always --name ffmpeg-api -p 8081:3000 kazhar/ffmpeg-api ``` 2. **Configure environment variables** ```bash cp .env.example .env ``` See [Environment Variable Configuration](#environment-variable-configuration) for details. 3. **Start Postgres database** - Create a database `twocast` - Modify `DATABASE_URL` in the `.env` file - Initialize the database: ```bash npx drizzle-kit push ``` 4. **Start the project** ```bash yarn && yarn start ``` --- ### Method 2: Docker One-Click Start > β οΈ If you encounter any issues, please prioritize using the "Local Setup" method. 1. **Configure environment variables** ```bash cp .env.docker .env ``` See [Environment Variable Configuration](#environment-variable-configuration) for details. 2. **Start** ```bash docker compose up ``` --- ## Environment Variable Configuration ### π TTS API Configuration - π **Fish Audio** Register and get an API Key: [Fish Audio](https://bit.ly/4k7AXHt), and enter it in `FISH_AUDIO_TOKEN=` - π¦Ύ **Minimax** (Optional) Get GroupID from [Profile](https://www.minimax.io/platform/user-center/basic-information), and enter it in `MINIMAX_GROUP_ID=` Get API Key from [API keys](https://www.minimax.io/platform/user-center/basic-information/interface-key), and enter it in `MINIMAX_TOKEN=` Enable: `MINIMAX_ENABLED=1` - π **Google Gemini** (Optional, more expensive) Get API Key from [Google AI Studio](https://aistudio.google.com/gen-media), and enter it in `GEMINI_TOKEN=` Enable: `GEMINI_ENABLED=1` ### π€ LLM API Configuration - π¬ **Chat**: Get API Key from [OpenRouter](https://openrouter.ai), and enter it in `LLM_API_KEY=` - π **Search**: Get API Key from [x.ai](https://console.x.ai/), and enter it in `LLM_SEARCH_API_KEY=` --- ## π Acknowledgements - [tailwind-nextjs-starter-blog-i18n](https://github.com/PxlSyl/tailwind-nextjs-starter-blog-i18n)