A production-ready Discord bot that records daily voice meetings, transcribes them with OpenAI Whisper, and generates structured summaries with action items and key decisions. Perfect for startup standups and team sync meetings.
Built for PontiFi π
- π€ Voice Recording: Automatically join and record Discord voice channels
- π AI Transcription: High-quality transcription using OpenAI Whisper
- π Smart Summaries: AI-generated summaries with:
- Key discussion points
- Decisions made
- Action items with assignees
- Blockers and next steps
- β° Scheduled Recording: Auto-start recordings at scheduled times
- βοΈ Cloud Ready: Deploy to Fly.io, Render, DigitalOcean, or Docker
- πΎ Persistent Storage: Saves recordings, transcripts, and summaries locally
- Python 3.8 or higher
- Discord Bot Token (Create one here)
- OpenAI API Key (Get one here)
- FFmpeg installed on your system
-
Clone and setup
git clone <your-repo-url> cd discord-meeting-summarizer chmod +x setup.sh ./setup.sh
-
Configure environment variables
cp .env.example .env # Edit .env with your credentials -
Run the bot
source venv/bin/activate python bot.py
-
Configure environment
cp .env.example .env # Edit .env with your credentials -
Start with Docker Compose
docker-compose up -d
-
View logs
docker-compose logs -f
Create a .env file with the following variables:
# Required
DISCORD_BOT_TOKEN=your_discord_bot_token_here
OPENAI_API_KEY=your_openai_api_key_here
# Optional
DISCORD_GUILD_ID=your_server_id
DISCORD_VOICE_CHANNEL_ID=your_channel_id
MEETING_TIME=09:00
MEETING_TIMEZONE=America/New_York- Enable Developer Mode in Discord (Settings β Advanced β Developer Mode)
- Right-click on your server β Copy ID (Guild ID)
- Right-click on voice channel β Copy ID (Voice Channel ID)
- Go to Discord Developer Portal
- Create a New Application
- Go to "Bot" section and create a bot
- Enable these Privileged Gateway Intents:
- Message Content Intent
- Server Members Intent
- Go to OAuth2 β URL Generator
- Select scopes:
bot - Select permissions:
- Connect
- Speak
- Use Voice Activity
- Send Messages
- Read Message History
- Use generated URL to invite bot to your server
The bot can directly record your Discord voice channels - no external tools needed!
Basic Commands:
!join - Bot joins your voice channel and starts recording
!stop - Stop recording and generate summary
!leave - Bot leaves channel
!upload - Upload a pre-recorded audio file
!help_recording - Show all recording options
Every meeting:
- Join your voice channel in Discord
- Type:
!join(Bot joins and starts recording) - Have your meeting (speak normally!)
- Type:
!stop(Bot processes and posts summary)
That's it! Fully automated. π
The bot will:
- Record your voice channel in high quality (48kHz)
- Transcribe it with OpenAI Whisper
- Generate an AI summary with action items
- Post the summary in Discord
- Save all files in the
recordings/directory
If you recorded your meeting separately (OBS, QuickTime, etc.):
- Type
!uploadin Discord - Attach your audio file (mp3, wav, m4a, flac, ogg)
- Get your AI summary!
If you configure MEETING_TIME and channel IDs in .env, the bot can automatically:
- Join the specified voice channel at the scheduled time
- Start recording
- Generate summaries (you still need to use
!stopto end recording)
All files are saved in the recordings/ directory:
recordings/
βββ meeting_20241009_093015.wav # Audio recording
βββ transcript_20241009_093015.txt # Full transcript
βββ summary_20241009_093015.txt # AI-generated summary
# Install flyctl
curl -L https://fly.io/install.sh | sh
# Login and deploy
flyctl auth login
flyctl launch
flyctl secrets set DISCORD_BOT_TOKEN=xxx OPENAI_API_KEY=xxx
flyctl deploy- Connect your GitHub repo to Render
- Select "New Worker"
- Use
render.yamlconfiguration - Add environment variables in Render dashboard
- Deploy
# SSH into your server
ssh user@your-server
# Clone repo
git clone <your-repo-url>
cd discord-meeting-summarizer
# Setup and run with Docker
docker-compose up -d- Never commit
.envfile - Rotate API keys regularly
- Use environment variables for secrets
- Limit bot permissions to necessary channels only
- Regularly review recordings and delete old ones
- Cost Optimization: Whisper API costs ~$0.006 per minute. A 30-min meeting costs about $0.18
- Quality: Ensure good audio quality - quiet environment and decent microphones
- Privacy: Inform meeting participants they're being recorded
- Storage: Recordings can be large; consider automated cleanup scripts
- Multiple Meetings: The bot can only record one meeting at a time
- Check FFmpeg is installed:
ffmpeg -version - Verify bot has "Connect" and "Speak" permissions
- Ensure PyNaCl is installed:
pip install PyNaCl
- Check OpenAI API key is valid
- Verify audio file is not corrupted
- Ensure file size is under 25MB (Whisper limit)
- Verify bot token is correct
- Check bot has "Message Content Intent" enabled
- Ensure bot has permission to read/send messages in the channel
- Make sure Docker and Docker Compose are installed
- Check logs:
docker-compose logs - Verify
.envfile exists and is properly formatted
MIT License - feel free to use for your own projects!
Contributions are welcome! Please feel free to submit a Pull Request.
For issues, questions, or suggestions, please open an issue on GitHub.
Made with β€οΈ for better team communication at PontiFi