Automated YouTube video monitoring with AI-enhanced multi-platform social notifications.
Monitor YouTube channels for new video uploads and automatically post unique, AI-generated notifications to Discord, Matrix, Bluesky, and Mastodon. Each platform gets a customized post with configurable tone (professional, conversational, detailed, or concise).
-
πΊ YouTube Monitoring: Detect new video uploads using YouTube Data API v3
- Filters livestreams (only notifies for actual video uploads)
- Supports regular videos and YouTube Shorts
- Configurable check interval
-
π€ AI-Powered Posts: Choose between Ollama (local) or Gemini (cloud) for AI-generated content
- Ollama: Privacy-first local LLM, no API costs, unlimited usage (Setup Guide)
- Gemini: Cloud API, easier setup, 15 req/min free tier
- Platform-specific tone configuration (professional/conversational/detailed/concise)
- Smart content summarization with sponsor/URL removal
- Auto-generated hashtags
- Respects character limits (Bluesky 300, Mastodon 500)
- No placeholder text or generic greetings
-
π’ Multi-Platform Notifications: Post to multiple social platforms simultaneously
- Discord: Rich embeds with platform-specific roles and webhooks
- Matrix: Professional messaging with auto token rotation
- Bluesky: ATProto integration with rich text and clickable links
- Mastodon: Full API support with media attachments
-
π Secure Configuration: Doppler integration for secrets management
-
βοΈ Highly Configurable: Custom intervals, per-platform styles, role mentions
-
οΏ½ Production Ready: Systemd service, error handling, comprehensive logging
| Platform | Status | Features |
|---|---|---|
| YouTube | β Working | Video monitoring, livestream filtering, API v3 |
| Discord | β Working | Rich embeds, roles, webhooks, conversational style |
| Matrix | β Working | Professional style, auto token rotation |
| Bluesky | β Working | ATProto, rich text, 300 char limit, conversational |
| Mastodon | β Working | 500 char limit, media support, detailed style |
| TikTok | β³ Planned | Code implemented but blocked by platform API issues* |
*TikTok Note: TikTok support is planned but currently non-functional due to their restrictive API approval process, sandbox limitations causing "server_error" responses, and bot detection mechanisms. The OAuth implementation exists but TikTok's approach to API access, app approval, and developer sandbox makes reliable integration extremely difficult. Focus is on the 5 working platforms above.
# 1. Clone and setup
git clone https://github.com/chiefgyk3d/Boon-Tube-Daemon.git
cd Boon-Tube-Daemon
./setup.sh
# 2. Configure environment
cp .env.example .env
nano .env # Configure YouTube channel, platform settings
# 3. Setup AI provider (choose one)
# Option 1: Ollama (local, privacy-first, no costs)
# Install on your LLM server:
curl -fsSL https://ollama.com/install.sh | sh
ollama pull gemma2:2b
ollama serve
# In .env:
LLM_ENABLE=true
LLM_PROVIDER=ollama
LLM_OLLAMA_HOST=http://localhost # Or your server IP
LLM_OLLAMA_PORT=11434
LLM_MODEL=gemma2:2b
LLM_ENHANCE_NOTIFICATIONS=true
# Option 2: Google Gemini (cloud API)
# Get API key from: https://aistudio.google.com/app/apikey
# In Doppler or .env:
LLM_ENABLE=true
LLM_PROVIDER=gemini
GEMINI_API_KEY=your_api_key_here
LLM_ENHANCE_NOTIFICATIONS=true
# 4. Test Ollama (if using)
python3 tests/test_ollama.py
# 5. Test platforms
cd tests
python test_youtube.py
python test_all_platforms.py
# 6. Run daemon
doppler run -- python boon_tube_daemon/main.py
# Or without Doppler:
python3 main.py
# 7. Deploy as systemd service (optional)
sudo ./scripts/install-systemd.sh
sudo systemctl start boon-tube-daemon
sudo systemctl enable boon-tube-daemon# Pull from GitHub Container Registry
docker pull ghcr.io/chiefgyk3d/boon-tube-daemon:latest
# Run with docker-compose
docker-compose up -d
# Or deploy as systemd service with Docker
sudo ./scripts/install-systemd.sh # Choose Docker modeSee scripts/README.md for more deployment options.
Boon-Tube-Daemon/
βββ boon_tube_daemon/ # Main application package
β βββ media/ # YouTube monitoring
β β βββ youtube.py # YouTube Data API v3 integration
β βββ social/ # Social platform integrations
β β βββ discord.py # Discord webhooks & rich embeds
β β βββ matrix.py # Matrix client API
β β βββ bluesky.py # Bluesky ATProto
β β βββ mastodon.py # Mastodon API
β βββ llm/ # AI enhancement
β β βββ gemini.py # Gemini 2.5 Flash Lite (cloud)
β β βββ ollama.py # Ollama local LLM (privacy-first)
β βββ utils/ # Utilities
β β βββ config.py # Configuration management
β β βββ secrets.py # Doppler integration
β βββ main.py # Main daemon
βββ tests/ # Test scripts
βββ scripts/ # Utility scripts
β βββ install-systemd.sh # Install as systemd service
β βββ uninstall-systemd.sh # Remove systemd service
β βββ create-secrets.sh # Interactive secrets wizard
β βββ setup_matrix_bot.sh # Matrix bot setup helper
βββ docs/ # Documentation
β βββ setup/ # Platform setup guides
β βββ legal/ # Legal documents
βββ docker/ # Docker configuration
β βββ Dockerfile # Optimized build (652MB)
β βββ README.md # Docker usage guide
βββ .env.example # Configuration template
βββ README.md # This file
- π Platform Status - Current platform support details
- β‘ Quick Start Guide - Detailed setup instructions
- π€ Ollama Setup Guide - Local AI setup (recommended)
- π§ Platform Setup Guides - Discord, Matrix, Bluesky, Mastodon
- οΏ½οΈ Utility Scripts - Installation and secrets management
- π³ Docker Guide - Docker deployment and GHCR
- οΏ½π Doppler Setup - Secrets management
- πΊ YouTube Setup - API key configuration
- π€ Contributing Guide - Development guidelines
- π Changelog - Version history
Each platform can be configured with a different tone:
# Available styles: professional, conversational, detailed, concise
DISCORD_POST_STYLE=conversational
MATRIX_POST_STYLE=professional
BLUESKY_POST_STYLE=conversational
MASTODON_POST_STYLE=detailedDiscord: Conversational, friendly tone with emojis Matrix: Professional, informative style Bluesky: Conversational, concise (300 char limit) Mastodon: Detailed analysis with hashtags (500 char limit)
- Python 3.8+
- YouTube Data API v3 key
- AI Provider (choose one):
- Ollama (recommended): Local LLM server, no API costs (Setup Guide)
- Gemini: API key from Google AI Studio
- Doppler CLI (optional, for secrets management)
- Discord: Webhook URL, optional role IDs
- Matrix: Homeserver, username, password, room ID
- Bluesky: Handle, app password
- Mastodon: Instance URL, access token
Each platform receives a unique, AI-generated post based on the video content:
Provider Options:
-
Ollama (Recommended): Privacy-first local LLM with no API costs
- Run on your own hardware
- No data sent to external services
- No rate limits
- Models: gemma2:2b, gemma3:4b, llama3.2:3b, mistral:7b, etc.
- See Ollama Setup Guide
-
Google Gemini: Cloud API alternative
- Easier initial setup
- No local hardware needed
- 15 requests/minute (free tier)
- Gemini 2.5 Flash Lite model
Features:
- Content Analysis: AI analyzes video title, description, and metadata
- Sponsor Removal: Automatically strips sponsor sections and promotional URLs
- Smart Summarization: Creates engaging summaries appropriate for each platform
- Hashtag Generation: Adds relevant hashtags based on content
- Character Limits: Strictly respects platform limits (Bluesky 300, Mastodon 500)
- No Placeholders: Never includes placeholder URLs or generic text
YouTube monitoring intelligently filters content:
- Videos Only: Only notifies for actual video uploads (including Shorts)
- Skips Livestreams: Filters out live content and livestream recordings
- Smart Detection: Checks video type and live streaming details
Discord
- Rich embeds with color coding
- Platform-specific roles (@YouTube, @TikTok when implemented)
- Per-platform webhooks for channel organization
- Conditional stats display (views/likes when available)
Matrix
- Professional formatted messages
- Automatic token rotation
- Proper room ID handling
- Markdown support
Bluesky
- Rich text with clickable links
- Hashtag support
- Smart livestream indicator (only for actual streams)
- ATProto integration
Mastodon
- Media attachment support
- Hashtag optimization
- 500 character detailed analysis
- Full API compliance
- Free tier: 10,000 units/day
- Each check: 3 units
- ~3,300 checks/day possible
- Default interval: 15 minutes (96 checks/day = 288 units)
- Leaves quota headroom for Stream-Daemon (livestream monitoring at 1-2 min intervals)
- Model: gemini-2.5-flash-lite
- Free tier: 1,000 requests/day, 15 requests/minute
- Sufficient for most use cases
- No videos found: Check YouTube channel ID and API key
- Discord not posting: Verify webhook URL in Doppler
- Character limit errors: Check platform-specific limits in logs
- Matrix authentication: Ensure correct homeserver and credentials
See docs/setup/ for detailed platform setup guides.
Contributions are welcome! See CONTRIBUTING.md for guidelines.
# Install dependencies
pip install -r requirements.txt
# Run tests
cd tests
python test_all_platforms.py
# Test individual components
python test_youtube.py
python test_llm_posts.pyMozilla Public License 2.0 - See LICENSE
This project is licensed under the MPL-2.0, which allows you to use, modify, and distribute this software while requiring that modifications to MPL-licensed files remain open source.
- π Privacy Policy - No data collection, fully self-hosted
- π Terms of Service - Open source, use at your own risk
Important: You are responsible for complying with third-party service terms (YouTube, Discord, Matrix, Bluesky, Mastodon) when using this software. This tool is for personal/non-commercial use monitoring your own channels or channels you have permission to monitor.
- YouTube Data API v3
- Google Gemini AI
- Discord Webhooks
- Matrix Protocol
- Bluesky ATProto
- Mastodon API
- Doppler Secrets Management
If you find Boon-Tube-Daemon useful, consider supporting development:
Donate:
Made with β€οΈ by ChiefGyk3D
| Mastodon | Bluesky | Twitch | YouTube | Kick | TikTok | Discord | Matrix |
Star β this repo if you find it useful!
