{"id":49523159,"url":"https://github.com/jakubn11/kick-emotes","last_synced_at":"2026-05-16T00:10:34.240Z","repository":{"id":354448080,"uuid":"1223680177","full_name":"jakubn11/kick-emotes","owner":"jakubn11","description":"Safari userscript that adds BetterTTV, 7TV, and FrankerFaceZ emotes to Kick.com chat","archived":false,"fork":false,"pushed_at":"2026-05-09T23:29:24.000Z","size":322,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-10T00:36:00.343Z","etag":null,"topics":["7tv","animated-emotes","autocomplete","betterttv","bttv","chat","emotes","ffz","frankerfacez","kick","kick-emotes","safari","tampermonkey","userscript","violentmonkey"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakubn11.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-28T14:51:38.000Z","updated_at":"2026-05-09T23:29:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jakubn11/kick-emotes","commit_stats":null,"previous_names":["jakubn11/kick-emots","jakubn11/kick-emotes"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jakubn11/kick-emotes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-emotes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-emotes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-emotes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-emotes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakubn11","download_url":"https://codeload.github.com/jakubn11/kick-emotes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-emotes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33085196,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["7tv","animated-emotes","autocomplete","betterttv","bttv","chat","emotes","ffz","frankerfacez","kick","kick-emotes","safari","tampermonkey","userscript","violentmonkey"],"created_at":"2026-05-02T01:03:16.380Z","updated_at":"2026-05-16T00:10:34.229Z","avatar_url":"https://github.com/jakubn11.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"icon.svg\" width=\"108\" height=\"108\" alt=\"Kick Third-Party Emotes\"\u003e\n\n\u003ch1\u003eKick Third-Party Emotes\u003c/h1\u003e\n\n\u003cp\u003e\n  BetterTTV, 7TV, and FrankerFaceZ emotes directly in Kick.com chat.\u003cbr\u003e\n  Animated GIFs · Zero-width overlays · Autocomplete · Native emote picker tab.\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003cimg alt=\"Userscript\" src=\"https://img.shields.io/badge/Userscript-Any%20Manager-22c55e?style=flat-square\u0026labelColor=101013\"\u003e\n  \u0026nbsp;\n  \u003cimg alt=\"License GPLv3\" src=\"https://img.shields.io/badge/license-GPLv3-55d2ce?style=flat-square\u0026labelColor=555555\"\u003e\n  \u0026nbsp;\n  \u003cimg alt=\"Tested on Safari\" src=\"https://img.shields.io/badge/Tested%20on-Safari-22c55e?style=flat-square\u0026logo=safari\u0026logoColor=fff\u0026labelColor=101013\"\u003e\n  \u0026nbsp;\n  \u003cimg alt=\"Providers\" src=\"https://img.shields.io/badge/Providers-BTTV%20%C2%B7%207TV%20%C2%B7%20FFZ-22c55e?style=flat-square\u0026labelColor=101013\"\u003e\n  \u0026nbsp;\n  \u003cimg alt=\"Animated emotes\" src=\"https://img.shields.io/badge/Animated-GIF%20%2B%20Zero%E2%80%91Width-22c55e?style=flat-square\u0026labelColor=101013\"\u003e\n  \u0026nbsp;\n  \u003cimg alt=\"Autocomplete\" src=\"https://img.shields.io/badge/Tab-Autocomplete-22c55e?style=flat-square\u0026labelColor=101013\"\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\n## Features\n\n- Emotes from three providers rendered inline in chat messages\n- Per-channel emote sets loaded automatically on navigation\n- Animated emote support (GIF)\n- Zero-width 7TV emote overlays\n- Hover tooltips showing emote name and provider\n- Autocomplete popup when typing (prefix match, keyboard navigation)\n- Third-party emote tab inside Kick's native emote picker with search, animated emotes, and per-provider **Load more**\n- Stale-while-revalidate local cache per provider to show repeat-visit emotes immediately while refreshing in the background\n- Works with Kick's SPA routing — no page reload needed when switching channels\n\n## Requirements\n\nThe script works with any userscript manager (Tampermonkey, Violentmonkey, Greasemonkey, ScriptCat or other) but is developed and tested on **Safari + Userscripts** only. Other browsers and managers may work but are untested.\n\n**Recommended setup:**\n- macOS with Safari\n- [Userscripts](https://apps.apple.com/app/userscripts/id1463298887) extension (free, by Justin Wasack)\n\n## Installation\n\nSee [INSTALL.md](INSTALL.md) for step-by-step instructions.\n\n**Quick install:** open the script on **[Greasy Fork](https://greasyfork.org/cs/scripts/578174-kick-third-party-emotes)** and use the install button if your userscript manager supports web installs.\n\n**Safari (recommended):**\n1. Install the **[Userscripts](https://apps.apple.com/app/userscripts/id1463298887)** extension from the Mac App Store\n2. Configure a scripts folder in the extension settings\n3. Copy `kick-emotes.user.js` into that folder\n\n**Other browsers (untested):**\n1. Install [Tampermonkey](https://www.tampermonkey.net), [Violentmonkey](https://violentmonkey.github.io), [Greasemonkey](https://www.greasespot.net), [ScriptCat](https://scriptcat.org) or other\n2. Open `kick-emotes.user.js` and paste it into a new script, or drag the file into the extension dashboard\n\nSee [INSTALL.md](INSTALL.md) for full per-manager steps.\n\n## Providers\n\n| Provider | Global emotes | Channel emotes |\n|----------|--------------|----------------|\n| BetterTTV | ~2 000 | Kick + Twitch fallback |\n| 7TV | ~1 000 | Kick + Twitch fallback |\n| FrankerFaceZ | ~500 | Kick channel |\n\nProvider failures are isolated — if one fails, the others still load.\n\n## Usage\n\nOpen any Kick channel. Emotes load automatically and replace matching words in chat.\n\n**Autocomplete:** start typing an emote name in the chat input to open the suggestion popup.\n\n| Key | Action |\n|-----|--------|\n| ↑ / ↓ | Navigate suggestions |\n| Tab | Insert selected emote (auto-inserts if only one match) |\n| Esc | Close autocomplete |\n\n**Emote picker:** open Kick's native emote picker and choose the **7TV+** tab to browse animated third-party emotes. The picker starts with 80 matches per provider for performance, then offers **Load more** per provider. Search narrows across all loaded emotes. Clicking an emote inserts its code into the chat input. Animated 7TV emotes show their frozen first frame in the picker and start animating when you hover them — this keeps the page responsive when browsing large emote sets.\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---------|-----|\n| No emotes appear | Open your browser's DevTools → Console and look for `[KickEmotes]` log lines. If absent, check that your userscript extension is enabled for kick.com. |\n| Only global emotes load | The streamer may not have BTTV/7TV/FFZ configured for their channel. |\n| Emotes stop working after a Kick update | Kick may have changed their chat DOM selectors. Open an issue with the relevant class names from the browser inspector. |\n| Stale emotes after a script update | Clear the cache: `Object.keys(localStorage).filter(k =\u003e k.startsWith('kte_')).forEach(k =\u003e localStorage.removeItem(k))` |\n\n## License\n\nLicensed under the GNU General Public License v3.0. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubn11%2Fkick-emotes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakubn11%2Fkick-emotes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubn11%2Fkick-emotes/lists"}