buzz-bot
Buzz-Bot
Podcast player for the AI epoch.
Listen to any podcast, then tap one button and hear it in your language — same voices, different words.
Buzz-Bot runs inside Telegram as a Mini App and uses a cloud GPU pipeline (RunPod Serverless) to transcribe, translate, and re-synthesize every speaker's voice.
To view AI pipeline for podcast dubbing workflow check this repository
Features
| Feature | Description |
|---|---|
| RSS subscriptions | Add any podcast by RSS URL; bulk-import via OPML |
| Podcast search | Search Apple Podcasts directory and subscribe in one tap |
| Episode inbox | Unified feed of unheard episodes across all subscriptions, with "hide listened" and compact grouping filters |
| Episode player | Native audio playback inside Telegram with resume-from-position, variable speed (1x/1.5x/2x), skip, and a persistent mini-player |
| Autoplay | Automatically advance to the next episode when one finishes |
| Progress tracking | Listening position saved every 5 seconds; offline saves queued and replayed on reconnect |
| Offline caching | Episode audio downloaded in background; seamless switch to local copy on network loss |
| Bookmarks | Bookmark episodes with a single tap; search saved episodes |
| Semantic search | Search your inbox by meaning — episodes re-ranked by vector similarity to your query |
| Topic cloud | Browse episodes by auto-extracted topics, clustered nightly across languages (EN/RU/NL) so synonyms collapse into one tag; tap a tag to filter your library — details |
| Smart recommendations | Hybrid semantic + collaborative filtering with explainable topic matching — details |
| Share & send | Share any episode via Telegram's share sheet, or send the audio file directly to your own chat |
| AI dubbing | Hear any podcast in your language with the original speaker's voice cloned — details |
| Karaoke subtitles | Live subtitle panel with karaoke-style highlighting; fullscreen transcript; tap any line to seek |
Tech Stack
| Layer | Technology |
|---|---|
| Language | Crystal >= 1.9 |
| Web server | Kemal |
| Telegram bot | Tourmaline |
| Database | PostgreSQL (Neon) via crystal-pg, pgvector for embeddings |
| Frontend | ClojureScript, re-frame, Reagent |
| Frontend build | shadow-cljs |
| Service Worker | Offline audio cache (Range-aware) + offline write queue |
| Job dispatch | RunPod Serverless API v2 |
| AI pipeline | Demucs, WhisperX, pyannote, Gemini Flash, VoxCPM2 — details |
| Embeddings | BGE-M3 (1024-dim, multilingual) + KeyBERT topic extraction — details |
| Audio storage | Cloudflare R2 |
| Deployment | Docker, k3s on Hetzner — details |
| Ingress / TLS | Traefik v3, cert-manager + Let's Encrypt |
Quick Start
Prerequisites
- Crystal >= 1.9 +
shards - Node.js >= 18 + npm
- Docker
- PostgreSQL (Neon free tier works)
- Telegram bot token from @BotFather
- Public HTTPS URL for webhooks
1. Clone and install dependencies
git clone https://github.com/yourname/buzz-bot.git
cd buzz-bot
shards install
npm install
2. Configure environment
cp k8s/secret.example.yaml k8s/secret.yaml
# Fill in all values — see docs/DEPLOYMENT.md for variable reference
3. Run migrations
for f in migrations/*.sql; do psql "$DATABASE_URL" -f "$f"; done
4. Build frontend
# Development (live reload)
npx shadow-cljs watch app
# Production
npx shadow-cljs release app
5. Run locally
crystal run src/buzz_bot.cr
Use Cloudflare Tunnel to expose localhost over HTTPS for Telegram webhooks:
# Terminal 1 — ClojureScript watch build
npx shadow-cljs watch app
# Terminal 2 — tunnel + Crystal server
./devrun.sh # auto-detects named tunnel or quick tunnel
./devrun.sh --quick # temporary URL, no account needed
Documentation
- AI Dubbing Pipeline — how dubbing works, supported languages, progress tracking
- Recommendations — hybrid vector + collaborative filtering, topic extraction & clustering, explainability
- Deployment Guide — k3s setup, environment variables, monitoring
- API Reference — routes, database schema, feature flags
License
MIT
Repository
buzz-bot
Owner
Statistic
- 0
- 0
- 0
- 0
- 5
- 11 minutes ago
- March 5, 2026
License
Links
Synced at
Wed, 20 May 2026 21:08:07 GMT
Languages