{"id":13758421,"url":"https://github.com/mangosango/clive","last_synced_at":"2026-05-30T01:18:51.793Z","repository":{"id":27510188,"uuid":"94613608","full_name":"mangosango/clive","owner":"mangosango","description":"A webhook server that posts clips in Twitch chat to Discord","archived":false,"fork":false,"pushed_at":"2024-06-21T01:58:37.000Z","size":559,"stargazers_count":24,"open_issues_count":4,"forks_count":13,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-04-04T10:33:00.454Z","etag":null,"topics":["clips","discord","twitch"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/mangosango.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2017-06-17T09:28:04.000Z","updated_at":"2026-03-07T06:52:25.000Z","dependencies_parsed_at":"2024-08-03T13:01:23.156Z","dependency_job_id":null,"html_url":"https://github.com/mangosango/clive","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mangosango/clive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangosango%2Fclive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangosango%2Fclive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangosango%2Fclive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangosango%2Fclive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mangosango","download_url":"https://codeload.github.com/mangosango/clive/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangosango%2Fclive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33677013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["clips","discord","twitch"],"created_at":"2024-08-03T13:00:29.938Z","updated_at":"2026-05-30T01:18:51.758Z","avatar_url":"https://github.com/mangosango.png","language":"TypeScript","funding_links":[],"categories":["Libraries"],"sub_categories":["JavaScript (Node.js)"],"readme":"\u003cimg src=\"http://i.imgur.com/M9TvvSy.png\" alt=\"clive-mascot\" width=64px /\u003e\n\n## ☝️ That's Clive\n\nHe's a very simple bot that monitors Twitch chat for clips and auto-posts them to Discord.\n\n_**Like this!**_\n\n\u003cimg src=\"https://i.imgur.com/N1CFDLD.png\" title=\"Rich Discord Example\" /\u003e\n\nHe runs on a diet of [nodejs](https://nodejs.org/en/) and [twitch-js](https://twitch-js.netlify.app/). He needs to live on a server (Like an [Amazon EC2 instance](https://aws.amazon.com/getting-started/tutorials/launch-a-virtual-machine/)). I use a [Pocket C.H.I.P.](https://getchip.com/pages/pocketchip) to host Clive.\n\n**Some assembly required (it helps to be familiar with node).**\n\n## 🤖 Instructions (OSX/Linux)\n\nBefore starting, make sure [nodejs](https://nodejs.org/en/download/) v12 or later is installed. You will also need a [webhook](https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks) for the Discord channel where these clips will be posted.\n\n1. Open terminal.\n2. Navigate to a directory (like `~/Developer`).\n3. Run `git clone https://github.com/mangosango/Clive.git \u0026\u0026 cd Clive`.\n4. Run `npm install`\n5. Copy `.env-example` to `.env`\\*\n6. Open `.env` in a text editor (like [Visual Studio Code](https://code.visualstudio.com)).\n7. Refer to the settings flags below.\n8. Save `.env`.\n9. In terminal, run `npm start`.\n10. ???\n11. Profit.\n\n\\* **.env file is primarily for development and debugging.** Environment variables are preferred for production environment. _To use environment variables, you can set all the flags below. `TWITCH_CHANNELS` should be a space limited set of `channel_name`s. You can set these in the provided `clive.service` file, or by using the `export` command. Here's a [short guide](http://blog.mdda.net/oss/2015/02/16/forever-node-service-systemd). on how to use systemd._\n\n### 🚩 Settings Flags\n\n`SETTING_NAME` (required or optional to be set) \\[default production setting]\n\n- `NODE_ENV` (optional) \\[production]\n  - Set to dev for development or production for normal usage\n- `LOG_LEVEL` (optional) \\[error]\n  - Set to which level of logging you'd like. `debug` is good for development. `info` or `error` is good for normal usage. Checkout [Winston](https://github.com/winstonjs/winston#logging-levels) for more info.\n- `LOG_FILE` (required) \\[/var/log/clive.log]\n  - Set this to the location of where you would like a log file. Make sure Clive has write permissions!\n- **`DB_FILE` (required)** \\[db.json]\n  - Set this to the location of your JSON db file. If running as a service make sure to use the absolute file path.\n- **`DISCORD_WEBHOOK_URL` (required)**\n  - Set this to your Discord webhook for the channel you want Clive to post in! [Discord webhook URL](http://i.imgur.com/sEUCxct.png)\n- **`TWITCH_CHANNELS` (required)**\n  - Set the channels you want Clive to monitor for clips. These are also used for `RESTRICT_CHANNELS` If you wanted to watch for clips in `Monstercat`'s chat, you would use `\"monstercat\"`. If you wanted to monitor multiple channels, you would use `\"monstercat mrchowderclam updownleftdie\"`.\n- `TWITCH_CLIENT_ID` (optional, suggested) \\[null]\n  - Needed for Twitch API functionality. This allows Clive to get more data about the clip for its messages! More info: [Twitch Dev Getting Started](https://dev.twitch.tv/get-started)\n- `TWITCH_CLIENT_SECRET` (optional, suggested) \\[null]\n  - Needed along with the client ID for Twitch API functionality. This allows Clive to get more data about the clip for its messages! More info: [Twitch Dev Getting Started](https://dev.twitch.tv/get-started)\n- `RESTRICT_CHANNELS` (optional) \\[true]\n  - **REQUIRES**: `TWITCH_CLIENT_ID` to be set. If true, only shares clips that are listed in `TWITCH_CHANNELS`.\n- `MODS_ONLY` (optional) \\[false]\n  - If true, only allows mods to post clips.\n- `SUBS_ONLY` (optional) \\[false]\n  - If true, only allows subscribers to post clips.\n- `BROADCASTER_ONLY` (optional) \\[false]\n  - If true, only allows the broadcaster to post clips. **NOTE**: broadcaster is **not** considered a mod by default on Twitch.\n- `RICH_EMBED` (optional) \\[true]\n\n  - **REQUIRES**: `TWICH_CLIENT_ID` to be set. If true will post two messages to Discord the first being the video and the second being a rich embed box that contains more information about the clip. Two separate messages are necessary because Discord doesn't allow setting `video` element inside of the rich embed object.\n\n`MODS_ONLY`, `SUBS_ONLY`, and `BROADCASTER_ONLY` can be combined. Example: turning all `BROADCASTER_ONLY` and `SUBS_ONLY` will only share clips posted by those two groups. All three set to `false` on means anyone can post a clip link. Be careful if you are not using a `TWITCH_CLIENT_ID` AND `RESTRICT_CHANNELS` or else ANY clips will be shared to your Discord.\n\n## 📋 Todo\n\n- Having a UI or hosting this somewhere would be nice.\n- Make clive an actual Discord bot, but that would require actual work lol.\n- ~~Option to only send clips of a certain channel or channels.~~\n- ~~Option to only send clips posted by broadcaster, mods, or subs.~~\n- ~~Set the `DISCORD_WEBHOOK_URL` to pull from an evar or something.~~\n- ~~Track previously posted twitch clips~~\n- ~~Use Discord Rich Embed messages~~\n- ~~MFW the Readme is bigger than the app LUL~~\n\n## 👯 Contributing\n\n1. Create your own feature branch (using `git checkout -b ...` or whatever you want to use).\n2. Write some nice code. Commit it! Push it!\n3. Use Github's excellent pull request feature to submit a PR.\n4. Someone will review your PR and merge to master!\n5. Yay.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmangosango%2Fclive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmangosango%2Fclive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmangosango%2Fclive/lists"}