This project is a Node.js application designed to aggregate live chat messages from various streaming and social media platforms. It captures chat messages from Twitch, YouTube, Telegram, and Kick(TODO), and can relay them to other platforms like Telegram and Misskey. The core of the application uses a Redis pub/sub system to pass messages between services.
- Multi-platform: Aggregates chats from Twitch, YouTube, Telegram, and Kick.
- Chat Relay: Relays chat messages to Telegram and Misskey.
- Web Viewer: A simple web interface to view all aggregated chat messages in one place.
- Service-based Architecture: Each platform integration runs as a separate service, allowing for flexibility and scalability.
- Dockerized: The entire application can be easily run using Docker and Docker Compose.
- Node.js (if running services individually)
- Access tokens and client secrets for the platforms you want to integrate.
If you prefer not to use Docker, you can run each service as a separate Node.js process.
-
Install Dependencies:
npm install
-
Configuration: Create a
.envfile (you can copy.env.example) and fill in your credentials. -
Run Each Service: You can start each service in a separate terminal session:
- Management Server:
npm run start:manager
- Twitch Chat Injector:
npm run start:twitch
- YouTube Chat Injector:
npm run start:youtube
- Telegram Chat Injector:
npm run start:telegram
- Live Chat Viewer:
npm run start:viewer
- Telegram Relay:
npm run start:relay
- Misskey Relay:
npm run start:misskey
- Management Server:
The .env file is used to configure the application. Below is an explanation of the variables from .env.example:
TWITCH_CHANNEL: The name of the Twitch channel to monitor.TWITCH_CLIENT_ID,TWITCH_CLIENT_SECRET: Your Twitch application credentials.KICK_CHANNEL: The name of the Kick.com channel to monitor.YOUTUBE_CLIENT_ID,YOUTUBE_CLIENT_SECRET: Your Google Cloud credentials for the YouTube Data API.YOUTUBE_LIVE_ID: The ID of a specific YouTube live stream.YOUTUBE_CHANNEL_ID: The ID of a YouTube channel to monitor for live streams.TELEGRAM_BOT_TOKEN: The token for your Telegram bot that will be used for chat injection.TELEGRAM_CHAT_ID: The ID of the Telegram chat to monitor.TELEGRAM_TOPIC_ID: The ID of the topic within the Telegram chat.TELEGRAM_RELAY_BOT_TOKEN_YOUTUBE,TELEGRAM_RELAY_BOT_TOKEN_TWITCH: Bot tokens for relaying YouTube and Twitch chats to Telegram.TELEGRAM_MANAGE_BOT_TOKEN: A bot token for management purposes.MISSKEY_HOST: The URL of your Misskey instance.MISSKEY_TOKEN_YOUTUBE,MISSKEY_TOKEN_TWITCH,MISSKEY_TOKEN_TELEGRAM: API tokens for relaying chats to Misskey.MISSKEY_CHAT_ID: The ID of the Misskey chat to post to.REDIS_SERVER,REDIS_PORT: The address and port of your Redis server.REDIS_PUBSUB_CHANNEL: The name of the Redis channel to use for messaging.