Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/async3619/cage
(almost) realtime unfollower detection for any social services 🦜⛓️🔒
https://github.com/async3619/cage
cli followers github instagram nodejs sns social tiktok twitter youtube
Last synced: about 1 month ago
JSON representation
(almost) realtime unfollower detection for any social services 🦜⛓️🔒
- Host: GitHub
- URL: https://github.com/async3619/cage
- Owner: async3619
- License: mit
- Created: 2022-11-29T00:42:22.000Z (about 2 years ago)
- Default Branch: dev
- Last Pushed: 2024-11-01T06:38:01.000Z (3 months ago)
- Last Synced: 2024-12-08T21:00:53.858Z (about 1 month ago)
- Topics: cli, followers, github, instagram, nodejs, sns, social, tiktok, twitter, youtube
- Language: TypeScript
- Homepage:
- Size: 682 KB
- Stars: 27
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
🦜
Cage
## Introduction
Cage is a cli application for detecting unfollowers on any social services. this application will check all of your followers using each watcher and compare them to the previous check. if there is a difference, it will notify you of the changes.
## Usage
```bash
$ npm install -g cage-cli@dev$ cage --help
Usage: cage [options]
(almost) realtime unfollower detection for any social services 🦜⛓️🔒
Options:
-c, --config path to the configuration file (default: "./config.json")
-d, --database path to the database file (default: "./data.sqlite")
-p, --drop-database delete the old database file
-v, --verbose enable verbose level logging
-V, --version output the version number
-h, --help display help for command
```or you can just deploy with `docker` if you want:
```bash
$ docker run -d --name cage async3619/cage -v /path/to/config.json:/home/node/config.json
```of course, you can also use `docker-compose`:
```yaml
version: "3.9"services:
cage:
image: async3619/cage
volumes:
- /path/to/config.json:/home/node/config.json
```## Watchers and Notifiers
### Watchers
`Watchers` are independent feature that has the ability to watch to check users who follow your account per service.
#### Supported Watchers
| Service | Support? |
|-----------|:--------:|
| Twitter | ✅ |
| GitHub | ✅ |
| Mastodon | ✅ |
| Instagram | ✅ |
| TikTok | ❌ |
| YouTube | ❌ |
| Twitch | ❌ |
| Facebook | ❌ |
| Reddit | ❌ |
| Discord | ❌ |### Notifiers
When we detect unfollowers, new followers, or any other events, Cage will notify you via `Notifiers`.
#### Supported Notifiers
| Service | Support? |
|-----------------|:--------:|
| Discord Webhook | ✅ |
| Telegram Bot | ✅ |
| Slack Webhook | ✅ |
| Email | ❌ |
| SMS | ❌ |## Configuration
this application reads configuration file from `./cage.config.json` by default.
if there's no configuration file to read, this application will create you a default configuration file for you:```json
{
"watchInterval": 60000,
"watchers": {},
"notifiers": {}
}
```you can use json schema file `config.schema.json` on this repository.
### watchInterval: `number` (required)
specify watching interval in millisecond format. minimal value is `60000`.
### watchers: `Record` (required)
Internally, Cage uses [Rettiwt-API](https://github.com/Rishikant181/Rettiwt-API) to get the followers list. so you need to get the API Key with extensions that provided by the author. you can see the instruction [here](https://github.com/Rishikant181/Rettiwt-API#1-using-a-browser-recommended).
```json5
{
"type": "twitter", // required
"apiKey": "API Key that retrieved with X Auth Helper extension", // string, required
"username": "your twitter username", // string
}
```#### github
watcher configuration for GitHub service.
```json5
{
"type": "github", // required
"authToken": "personal access token of your github account" // string, required
}
```watcher configuration for Instagram service.
```json5
{
"type": "instagram", // required
"username": "your instagram username", // string, required
"password": "your instagram password", // string, required
"targetUserName": "target instagram username you want to crawl followers", // string, required
"requestDelay": 1000 // number, optional, default: 1000
// requestDelay is the delay time between each request to instagram server.
// this is to prevent getting banned from instagram server.
}
```### notifiers: `Record` (required)
#### discord
notifier configuration for Discord Webhook notifier.
```json5
{
"type": "discord",
"webhookUrl": "Discord Webhook url" // string, required
}
```#### telegram
notifier configuration for Telegram Bot notifier.
```json5
{
"type": "telegram",
"botToken": "token that generated from https://t.me/CageNotifierBot", // string, required
"url": "custom notification relay server url" // string, optional
}
```In most cases, you will not need `url` property since since Cage already provides hosted version of this server out of the box. but if you want to use custom notification relay server, take a look [this repoitory](https://github.com/async3619/cage-telegram-helper#usage).
#### slack
notifier configuration for Slack Webhook notifier.
```json5
{
"type": "slack",
"webhookUrl": "Slack Webhook url" // string, required
}
```