Adding Channels
- Twitch
- YouTube
- Kick
Enter Channel Name
Enter the Twitch username (e.g.,
shroud or the full URL https://twitch.tv/shroud)Channel Settings
Each channel has configurable recording options:| Setting | Description | Default |
|---|---|---|
| Quality | Video quality preference | Source |
| Enabled | Whether to record this channel | On |
| Title Filter | Only record if title contains keywords | None |
| Category Filter | Only record specific categories/games | All |
| Schedule | Only record during specific hours | Always |
Quality Options
| Quality | Description |
|---|---|
| Source | Original broadcast quality (highest) |
| 1080p60 | 1080p at 60fps if available |
| 1080p | 1080p at 30fps |
| 720p60 | 720p at 60fps |
| 720p | 720p at 30fps |
| 480p | Standard definition |
| 360p | Low bandwidth option |
| Audio Only | Audio track only |
Content Filters
Filter recordings by stream content:Title Filter
Record only when the stream title contains specific keywords:Category Filter
Record only specific categories or games:Platform Authentication
Some features require platform authentication:Twitch
YouTube
YouTube authentication uses browser cookies or an API key:Cookie Method (Recommended)
Export your YouTube cookies using a browser extension and import into Battles Record
Kick
Kick doesn’t require authentication for public streams. Member-only content requires:Bulk Import
Import multiple channels at once using CSV:Channel Status
The dashboard shows real-time channel status:| Status | Description |
|---|---|
| 🟢 Live | Channel is streaming and being recorded |
| 🟡 Starting | Stream detected, recording starting |
| ⚪ Offline | Channel is not streaming |
| 🔴 Error | Recording failed (check logs) |
| ⏸️ Paused | Recording paused by user |
| 🚫 Disabled | Channel monitoring disabled |
Channel Name Handling
YouTube Name Normalization
When adding a YouTube channel, names are automatically normalized:- The
@prefix is added to YouTube handles if not already present (e.g.,BaianotTV1becomes@BaianotTV1) - Full YouTube URLs (starting with
http://orhttps://) are preserved as-is - Twitch and Kick names are not modified
Duplicate Detection
Channel names are compared case-insensitively after normalization. For example,BaianotTV1 and @BaianotTV1 are detected as duplicates on YouTube.
On Channel Add
When a new channel is added, two background tasks run automatically:- Immediate live check - the daemon checks if the channel is currently live and starts recording if so
- Profile image fetch - profile and banner images are fetched from the platform API and stored locally
Managing Channels
Edit Channel
Click on any channel to modify its settings. Changes take effect immediately.Pause/Resume
Temporarily pause recording without removing the channel:- Click the pause icon on the channel card
- Recording will resume when you unpause
Delete Channel
Remove a channel from monitoring:- Click the trash icon on the channel card
- Existing recordings are not deleted
Priority
When multiple channels go live simultaneously, priority determines recording order if resources are limited:- Drag channels to reorder priority
- Higher priority channels are recorded first
Channel Images
Each channel can have associated images for display in the UI:- Profile Image - Avatar/profile picture from the platform
- Banner Image - Channel banner from the platform
- Custom Images - Upload your own images to override platform images
Automatic Fetching
Images are automatically fetched from platform APIs when a channel is added.Image Management
| Action | Description |
|---|---|
| Fetch from Platform | Re-download images from the streaming platform |
| Upload Custom | Upload your own image to override platform images |
| Delete Custom | Remove custom image, revert to platform image |
Upload Limits
| Image Type | Max File Size | Auto-Resize To |
|---|---|---|
| Profile | 5 MB | 300x300 px |
| Banner | 10 MB | 1200x400 px |
images_dir directory, organized by channel ID.
Testing Platform Connections
After configuring authentication for any platform, verify the connection is working:OAuth Authentication (Recommended)
For the best experience, use OAuth to connect your streaming platform accounts. OAuth credentials are bundled with the application - no developer portal setup needed.| Platform | OAuth Support | Notes |
|---|---|---|
| Twitch | Full OAuth2 | Automatic token refresh |
| YouTube | Google OAuth2 | Automatic token refresh, or use cookie auth |
| Kick | Full OAuth2 | Automatic token refresh |
Bundled credentials route through a secure proxy at teambattles.gg for client secret handling. All
OAuth flows use PKCE with CSRF state validation for security.
Token Refresh
Platform tokens are automatically refreshed 10 minutes before they expire. No manual intervention is needed once connected. If refresh fails, you’ll be prompted to reconnect.Custom OAuth Credentials
For self-hosted deployments, you can configure your own OAuth credentials:
Custom credentials override the bundled defaults when set.