A Python script that converts Kick chat messages (obtained from https://kicklet.app/chat-downloader) into TwitchDownloader-compatible chat JSON format, including emote handling and caching.
- Converts Kick chat messages to Twitch format
- Downloads and embeds emotes with proper base64 encoding
- Handles both static and animated emotes
- Supports emote resizing (including animated GIFs via FFmpeg)
- Implements emote caching to avoid redundant downloads
- Preserves message timing and structure
- Python 3.8+
- Required packages:
requestsPillow(PIL)
- Optional (for GIF resizing):
ffmpeg(must be in PATH or specified)
- Clone the repository or download the script
- Install dependencies:
pip install requests pillow
Basic conversion:
python kick_chat_to_twitch_converter.py input_kick.json output_twitch.jsonAdvanced options:
python kick_chat_to_twitch_converter.py input_kick.json output_twitch.json \
--cache-folder ./emote_cache \
--max-size 56 \
--ffmpeg-path `which ffmpeg`| Argument | Description | Default |
|---|---|---|
input |
Input Kick JSON file | Required |
output |
Output Twitch JSON file | Required |
--cache-folder |
Folder to cache downloaded emotes | None |
--no-save-cache |
Disable saving emotes to cache | False |
--ffmpeg-path |
Custom path to ffmpeg executable | 'ffmpeg' |
--max-size |
Max size (width/height) for emotes in pixels | None |
The script expects a JSON file containing an array of Kick chat messages in the following format:
[
{
"content": "Haha [emote:39250:BBooomer]",
"createdAt": "2025-04-19T15:32:40Z",
"userId": 42657070,
"username": "mrChatter"
}
]The script generates a TwitchDownloader-compatible chat JSON file containing:
- Original messages with timing preserved
- Embedded emote data in base64
- Proper message structure for TwitchDownloader chatrender command
This project is provided as-is without warranty. You are free to modify and distribute it according to your needs.