ChatIncluded
ChatIncluded is a plugin for Casterlabs-Caffeinated that automatically translates multilingual chat messages in real time and posts the translation back to chat β no commands needed, no manual copy-pasting.
It works seamlessly across Twitch, Kick, and YouTube simultaneously, making it perfect for multi-streamers with international audiences. Trovo and TikTok support coming soon.
Featuresβ
- π€ Auto-translation β Detects viewer language automatically and translates to your language in real time
- π¬ Two-way conversation β @mention a viewer and ChatIncluded translates your reply into their language
- π€ Smart emote handling β Uses Casterlabs' message fragments to skip emotes and emoji on all platforms
- π‘οΈ Bot exclusion list β Add your bots by username to prevent them from triggering translations
- π Multi-platform β Twitch, Kick, and YouTube simultaneously with cross-platform deduplication
- π’ Chat commands β Viewers can request translations, set language preferences, and more
- π Loop prevention β ChatIncluded never re-translates its own output
- π Update notifications β Notifies you in the Casterlabs console when a new version is available
- βοΈ Fully configurable β Every feature has a settings toggle in the Caffeinated widget panel
Requirementsβ
| Tool | What it is | Download |
|---|---|---|
| Casterlabs Caffeinated | The streaming app ChatIncluded runs inside | casterlabs.co |
| DeepL API account | The translation service ChatIncluded uses | deepl.com |
A free DeepL API account gives you 500,000 characters/month β plenty for most streamers.
Installationβ
Step 1 β Download Casterlabs Caffeinatedβ
ChatIncluded runs as a plugin inside Casterlabs. If you don't have it yet:
- Go to casterlabs.co and download Caffeinated
- Install and sign in with your streaming accounts
Step 2 β Get a DeepL API Keyβ
- Go to deepl.com/pro-api and create a free account
- After signing in, click your account name β Account
- Scroll down to find your Authentication Key and copy it β you'll need it in Step 4
Step 3 β Install ChatIncludedβ
- Windows
- macOS
- Linux
- Manual
- Download ChatIncluded-Setup.exe
- Run the installer β it detects Casterlabs automatically and drops the plugin into the right place
- Open (or restart) Casterlabs when the installer finishes
- Download chatincluded-1.0.0.jar and install.sh into the same folder
- Open Terminal and run:
chmod +x install.sh && ./install.sh - Follow the prompts β the script detects Casterlabs and installs into the correct plugins folder
- Open (or restart) Casterlabs when the script finishes
- Download chatincluded-1.0.0.jar and install.sh into the same folder
- Open a terminal and run:
chmod +x install.sh && ./install.sh - Follow the prompts β the script installs into
~/.local/share/casterlabs-caffeinated/pluginsby default - Open (or restart) Casterlabs when the script finishes
Manual install (any platform): If you prefer, just copy chatincluded-1.1.0.jar directly into your Casterlabs plugins folder. In Casterlabs: Settings β Plugins β Open Plugins Folder.
Step 4 β Configure the Pluginβ
- In Casterlabs, go to Widgets & Alerts
- Click the + button β Other β ChatIncluded Settings
- Go to the DeepL API tab and enter your API key and plan type (Free or Pro)
- Go to the Language tab and set your Target Language Code (e.g.
ENfor English) - Settings save automatically β there is no Save button
That's it! Send a message in another language from a second account to test it.
Updating ChatIncludedβ
When a new version is available, ChatIncluded will notify you in the Casterlabs console at startup:
[ChatIncluded] A new version is available!
[ChatIncluded] Current version : 1.0.0
[ChatIncluded] Latest version : 1.1.0
[ChatIncluded] Update guide : https://chatincluded.live
To update, download and run the latest installer for your platform:
- Windows β ChatIncluded-Setup.exe
- macOS / Linux β download the new
chatincluded-1.1.0.jarand re-runinstall.sh, or copy the JAR directly into your plugins folder
The installer overwrites the existing plugin file automatically. Your settings are preserved.
Settings Referenceβ
Generalβ
| Setting | Default | Description |
|---|---|---|
| Enable ChatIncluded | On | Master on/off switch for the entire plugin |
| Show sender username in translations | On | Adds @username: to translation output β helpful for busy chats |
DeepL APIβ
| Setting | Description |
|---|---|
| DeepL API Key | Your API key from deepl.com |
| API Plan | Free or Pro β must match your actual DeepL account type |
Languageβ
| Setting | Default | Description |
|---|---|---|
| Target Language Code | EN | The language to translate incoming messages into |
Performanceβ
| Setting | Default | Description |
|---|---|---|
| Translation Cooldown (ms) | 500 | Minimum time between translation requests |
| Burst Limit | 5 | Max translations allowed per cooldown window |
| Deduplication Window (seconds) | 10 | Prevents the same message being translated twice across platforms |
| Minimum Message Length | 5 | Skips very short messages that are often misdetected |
Two-Way Conversationβ
| Setting | Default | Description |
|---|---|---|
| Enable Two-Way Translation | On | Translates streamer @mentions back into the viewer's language |
| Remember viewer language for (minutes) | 30 | How long to remember a viewer's language |
Commandsβ
| Setting | Description |
|---|---|
| !chatincluded response message | The message posted when viewers type !chatincluded. Fully customizable |
| !speak access level | Who can use !speak: Streamer / Mod / Subscriber / Everyone |
Bot Exclusionsβ
| Setting | Description |
|---|---|
| Excluded usernames | Comma-separated usernames to ignore (e.g. fossabot, streamelements, nightbot). Case-insensitive |
Platformsβ
| Setting | Default | Description |
|---|---|---|
| Enable on Twitch | On | Toggle translations for Twitch |
| Enable on Kick | On | Toggle translations for Kick |
| Enable on YouTube | On | Toggle translations for YouTube |
Chat Commandsβ
| Command | Who can use it | What it does |
|---|---|---|
!chatincluded | Everyone | Shows plugin info and a link to chatincluded.live |
!languages | Everyone | Posts the most common language codes and a link to the full list |
!setlang ES | Everyone | Pins your preferred language for the session. Sends confirmation in both English and your language. Can be changed any time. |
!translate ES | Everyone | Translates the most recent chat message into Spanish |
!translate ES Hello! | Everyone | Translates the provided text into Spanish |
!translate ES (as a reply) | Everyone | Translates the specific message you replied to |
!speak Welcome! | Configurable | Translates the streamer's message into every language active in the session |
Tip for viewers: You don't need to use
!setlangβ ChatIncluded automatically detects your language the first time it translates one of your messages. Use!setlangonly if short messages are being translated into the wrong language.
How Two-Way Conversation Worksβ
ChatIncluded remembers the language of every viewer it has translated. When you @mention a viewer in chat, it automatically translates your reply into their language:
Viewer: hola como estas
ChatIncluded: [ES->EN] @viewer: Hello how are you
You: @viewer Thanks for watching!
ChatIncluded: @viewer [EN->ES] Β‘Gracias por ver!
No setup needed β it works automatically as soon as a viewer's language has been detected.
Language Codesβ
| Code | Language | Code | Language | |
|---|---|---|---|---|
EN | English | KO | Korean | |
ES | Spanish | ZH | Chinese (simplified) | |
FR | French | RU | Russian | |
DE | German | AR | Arabic | |
PT | Portuguese | NL | Dutch | |
IT | Italian | PL | Polish | |
JA | Japanese | SV | Swedish | |
TR | Turkish | ID | Indonesian |
Full list: DeepL Supported Languages
Common mistakes: Use
IDnotINfor Indonesian,ZHnotCNfor Chinese,JAnotJPfor Japanese. ChatIncluded will suggest the correct code automatically.
Troubleshootingβ
Plugin shows in the list but won't load Fully close Casterlabs (including from the system tray) and reopen it. If the issue persists, re-run the installer.
"Authorization header is missing API key" Make sure you created a ChatIncluded Settings widget and entered your API key. Check that API Plan matches your DeepL account type.
Emotes are being translated Make sure you are on the latest version. Re-run the installer to update.
Single words are being mistranslated Go to ChatIncluded Settings β Performance and increase the Minimum Message Length.
Translations work but replies don't appear in chat The Casterlabs account you are signed in as may not have chat permission on that platform. YouTube requires minimum account age before posting in chat.
Two-way @mention reply isn't working
The viewer needs to have sent at least one message that ChatIncluded translated in the current session, or have used !setlang.
!setlang IN says it's not supported
Use ID for Indonesian. ChatIncluded will suggest the correct code automatically.
Occasional "GOAWAY received" error A normal HTTP/2 network hiccup affecting only that one message. The plugin continues normally.
Securityβ
- The installer (
ChatIncluded-Setup.exe) is signed β see chatincluded.live/policy.html for the code signing policy - Your DeepL API key is stored inside Casterlabs β ChatIncluded never writes it to any file
- Avoid sharing Casterlabs log files (
%appdata%\casterlabs-caffeinated\logs\) during debug sessions - If your API key is ever exposed, regenerate it at deepl.com/account
Contributingβ
ChatIncluded is in active beta. If you find a bug or have a feature request, please open an issue. Pull requests are welcome.