225 lines
6.4 KiB
Markdown
225 lines
6.4 KiB
Markdown
# Live Chat Widget Setup Guide
|
|
|
|
This guide will help you set up the Live Chat widget to display Twitch and YouTube live chat in OBS.
|
|
|
|
## Quick Start
|
|
|
|
1. **Start the server**
|
|
```bash
|
|
uv run streamer-widgets --tray
|
|
```
|
|
|
|
2. **Configure Chat**
|
|
- Open http://127.0.0.1:8765/config in your browser
|
|
- Configure your Twitch channel and/or YouTube video ID
|
|
- (Optional) Set up OAuth for authenticated connections
|
|
|
|
3. **Add to OBS**
|
|
- Create a new Browser Source
|
|
- URL: `http://127.0.0.1:8765/widgets/livechat/`
|
|
- Width: 400px (or your preference)
|
|
- Height: 600px (or your preference)
|
|
- Check "Shutdown source when not visible" for performance
|
|
|
|
## Features
|
|
|
|
### Supported Platforms
|
|
- **Twitch**: IRC WebSocket connection (anonymous or authenticated)
|
|
- **YouTube**: Live Chat API (requires OAuth)
|
|
|
|
### Emote Support
|
|
- Twitch native emotes
|
|
- FrankerFaceZ (FFZ)
|
|
- BetterTTV (BTTV)
|
|
- 7TV
|
|
- YouTube emoji (native)
|
|
|
|
### Display Options
|
|
- **Unified View**: Mix messages from both platforms chronologically
|
|
- **Separate Columns**: (Coming soon) Side-by-side platform displays
|
|
- Customizable message limit
|
|
- Timestamps
|
|
- User badges
|
|
- Platform indicators
|
|
|
|
## Authentication Setup
|
|
|
|
### Configuration File
|
|
|
|
OAuth credentials are stored in a JSON configuration file. On first run, the application creates an example config at:
|
|
|
|
**Windows:** `%LOCALAPPDATA%\StreamerWidgets\config.json`
|
|
|
|
You can also find the exact path in the web UI at http://127.0.0.1:8765/config
|
|
|
|
### Twitch OAuth (Optional)
|
|
|
|
For anonymous chat reading, you don't need OAuth. For authenticated connections:
|
|
|
|
1. **Create a Twitch Application**
|
|
- Go to https://dev.twitch.tv/console/apps
|
|
- Click "Register Your Application"
|
|
- Name: `My Chat Widget` (or any name)
|
|
- OAuth Redirect URLs: `http://localhost:8765/auth/twitch/callback`
|
|
- Category: Chat Bot
|
|
- Client Type: **Confidential**
|
|
- Click "Create"
|
|
|
|
2. **Configure Credentials**
|
|
- Open `config.json` in a text editor (see path above)
|
|
- Under `twitch_oauth`, set:
|
|
- `client_id`: Your Twitch Client ID
|
|
- `client_secret`: Your Twitch Client Secret
|
|
- `redirect_uri`: Keep as `http://localhost:8765/auth/twitch/callback`
|
|
- Save the file
|
|
- **Restart the application**
|
|
|
|
Example:
|
|
```json
|
|
{
|
|
"twitch_oauth": {
|
|
"client_id": "abc123xyz456",
|
|
"client_secret": "def789ghi012",
|
|
"redirect_uri": "http://localhost:8765/auth/twitch/callback"
|
|
}
|
|
}
|
|
```
|
|
|
|
3. **Authenticate**
|
|
- Go to http://127.0.0.1:8765/config
|
|
- Click "Login with Twitch"
|
|
- Authorize the application in the browser popup
|
|
|
|
### YouTube OAuth (Required for YouTube)
|
|
|
|
YouTube Live Chat requires OAuth authentication:
|
|
|
|
1. **Create a Google Cloud Project**
|
|
- Go to https://console.cloud.google.com/
|
|
- Create a new project
|
|
- Enable "YouTube Data API v3"
|
|
|
|
2. **Create OAuth Credentials**
|
|
- Go to "Credentials" in your project
|
|
- Click "Create Credentials" → "OAuth client ID"
|
|
- Application type: Web application
|
|
- Authorized redirect URIs: `http://localhost:8765/auth/youtube/callback`
|
|
- Click "Create"
|
|
|
|
3. **Configure Credentials**
|
|
- Open `config.json` in a text editor
|
|
- Under `youtube_oauth`, set:
|
|
- `client_id`: Your YouTube Client ID (ends with `.apps.googleusercontent.com`)
|
|
- `client_secret`: Your YouTube Client Secret
|
|
- `redirect_uri`: Keep as `http://localhost:8765/auth/youtube/callback`
|
|
- Save the file
|
|
- **Restart the application**
|
|
|
|
Example:
|
|
```json
|
|
{
|
|
"youtube_oauth": {
|
|
"client_id": "123456789-abc.apps.googleusercontent.com",
|
|
"client_secret": "GOCSPX-xyz123abc456",
|
|
"redirect_uri": "http://localhost:8765/auth/youtube/callback"
|
|
}
|
|
}
|
|
```
|
|
|
|
4. **Authenticate**
|
|
- Go to http://127.0.0.1:8765/config
|
|
- Click "Login with YouTube"
|
|
- Sign in with your Google account
|
|
- Authorize the application
|
|
|
|
## Configuration Options
|
|
|
|
### Channel/Video Settings
|
|
- **Twitch Channel**: The channel name to monitor (without #)
|
|
- **YouTube Video ID**: The ID from the YouTube video/stream URL
|
|
- Example: For `https://youtube.com/watch?v=dQw4w9WgXcQ`, use `dQw4w9WgXcQ`
|
|
|
|
### Emote Providers
|
|
- Enable/disable FFZ, BTTV, and 7TV emotes
|
|
- Emotes are loaded when connecting to a channel
|
|
|
|
### Display Settings
|
|
- **Max Messages**: Number of messages to keep (10-200)
|
|
- **Show Timestamps**: Display message times
|
|
- **Show Badges**: Display user badges (mod, subscriber, etc.)
|
|
- **Unified View**: Mix both platforms or show separately
|
|
|
|
### Filtering (Advanced)
|
|
Not yet implemented in UI, but available via API:
|
|
- Filter by user roles
|
|
- Block messages with specific keywords
|
|
- Set minimum message length
|
|
|
|
## Customization
|
|
|
|
### Widget Styling
|
|
|
|
Edit `app/assets/web/widgets/livechat/style.css` to customize:
|
|
- Colors and themes
|
|
- Font sizes
|
|
- Message spacing
|
|
- Platform indicators
|
|
- Badge styles
|
|
|
|
### Widget Size
|
|
|
|
Adjust in OBS Browser Source properties:
|
|
- **Vertical chat**: 400x600px or 400x800px
|
|
- **Horizontal chat**: 800x400px or 1000x400px
|
|
|
|
## Troubleshooting
|
|
|
|
### Twitch Chat Not Connecting
|
|
- Check that the channel name is correct (lowercase, no #)
|
|
- For authenticated connections, verify OAuth tokens are valid
|
|
- Check console output for error messages
|
|
|
|
### YouTube Chat Not Showing
|
|
- Ensure the video/stream has live chat enabled
|
|
- Verify OAuth authentication is complete
|
|
- Check that the video ID is correct
|
|
- YouTube requires authenticated access
|
|
|
|
### Emotes Not Loading
|
|
- Check internet connection
|
|
- Third-party emote services may be rate-limited
|
|
- Try disabling/re-enabling emote providers in config
|
|
|
|
### Messages Not Appearing in OBS
|
|
- Verify the widget URL is correct
|
|
- Check that the browser source is visible
|
|
- Refresh the browser source
|
|
- Check browser console for WebSocket errors
|
|
|
|
## API Endpoints
|
|
|
|
For advanced integration:
|
|
|
|
- `GET /api/chat/messages?limit=50` - Get recent messages
|
|
- `GET /api/chat/config` - Get current configuration
|
|
- `POST /api/chat/config` - Update configuration
|
|
- `GET /ws` - WebSocket for real-time updates
|
|
|
|
## Notes
|
|
|
|
- Tokens are stored locally in `%LOCALAPPDATA%/StreamerWidgets/tokens.json`
|
|
- Chat history is kept in memory (not persisted)
|
|
- Anonymous Twitch connections have no rate limits for reading
|
|
- YouTube API has daily quotas (should be sufficient for chat reading)
|
|
|
|
## Future Enhancements
|
|
|
|
- [ ] Chat commands/interactions
|
|
- [ ] Message filtering UI
|
|
- [ ] Custom badge images
|
|
- [ ] Sound notifications
|
|
- [ ] Chat replay/history
|
|
- [ ] Multi-column layout
|
|
- [ ] Custom CSS themes
|
|
- [ ] Raid/host notifications
|
|
- [ ] Viewer count display
|