{"id":27904788,"url":"https://github.com/taxi-tabby/github-followerandtraitor","last_synced_at":"2026-05-02T02:35:46.219Z","repository":{"id":291596590,"uuid":"978132746","full_name":"taxi-tabby/GITHUB-FollowerAndTraitor","owner":"taxi-tabby","description":"It's a tool with GitHub followers and follower management. Balance it out like Thanos.","archived":false,"fork":false,"pushed_at":"2025-05-05T14:21:19.000Z","size":37,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-05T15:42:16.060Z","etag":null,"topics":["github","githubapi","tool","typescript"],"latest_commit_sha":null,"homepage":"https://blog.smallbrain-labo.work/github-follow-tanos/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taxi-tabby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-05-05T14:17:05.000Z","updated_at":"2025-05-05T15:07:31.000Z","dependencies_parsed_at":"2025-05-05T15:44:19.274Z","dependency_job_id":"bc97d70b-feee-40f1-ae36-c246befb0a39","html_url":"https://github.com/taxi-tabby/GITHUB-FollowerAndTraitor","commit_stats":null,"previous_names":["taxi-tabby/github-followerandtraitor"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taxi-tabby%2FGITHUB-FollowerAndTraitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taxi-tabby%2FGITHUB-FollowerAndTraitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taxi-tabby%2FGITHUB-FollowerAndTraitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taxi-tabby%2FGITHUB-FollowerAndTraitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taxi-tabby","download_url":"https://codeload.github.com/taxi-tabby/GITHUB-FollowerAndTraitor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252593828,"owners_count":21773542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["github","githubapi","tool","typescript"],"created_at":"2025-05-05T23:32:50.171Z","updated_at":"2026-05-02T02:35:46.172Z","avatar_url":"https://github.com/taxi-tabby.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Follower Traitor\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003e🕵️ Track who doesn't follow you back on GitHub\u003c/h3\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[English](#overview) | [한국어](#개요)\n\n\u003c/div\u003e\n\n---\n\n## Overview\n\nGitHub Follower Traitor is a command-line tool that helps you analyze and manage your GitHub followers and following relationships. It identifies users who don't follow you back (\"traitors\") and those you don't follow back, allowing you to easily manage your GitHub connections.\n\n### Features\n\n- 📊 View statistics of your GitHub followers and following\n- 🔍 Identify users who don't follow you back (traitors)\n- 👀 Find followers you don't follow back\n- ✅ Bulk follow/unfollow options\n- 🎯 Individual user follow/unfollow capabilities\n- 🌐 Detailed view of all followers and followings\n\n## Installation\n\n### Prerequisites\n\n- Node.js (v16 or higher recommended)\n- npm (comes with Node.js)\n- GitHub Personal Access Token\n\n### Setup\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/yourusername/github-follower-traitor.git\n   cd github-follower-traitor\n   ```\n\n2. **Install dependencies**\n   ```bash\n   npm install\n   ```\n\n3. **Create .env file**\n   Create a `.env` file in the root directory with the following content:\n   ```\n   GITHUB_TOKEN=your_github_personal_access_token\n   GITHUB_USERNAME=your_github_username\n   \n   # API Rate Limit Settings (milliseconds)\n   # GitHub allows 5,000 API requests per hour for authenticated users\n   # Wait time between each request (default: 1000ms = 1 second)\n   RATELIMIT_WAIT_MS=1000\n   \n   # Timeout Settings (milliseconds)\n   # If the task is not completed within this time, progress is saved and the process exits\n   # The next execution will resume from the saved point\n   # Examples: 50 minutes = 3000000ms, 9 minutes = 540000ms\n   TIMEOVER_MS=3000000\n   ```\n   \u003e Note: To create a personal access token, go to GitHub Settings \u003e Developer settings \u003e Personal access tokens. Make sure to select the \"user:follow\" scope.\n\n4. **Build the application**\n   ```bash\n   npm run build\n   ```\n\n## Usage\n\n### Running the Application\n\n```bash\nnpm start\n```\n\n### Available Commands\n\nOnce you run the application, you'll see a menu with the following options:\n\n1. **Follow all users who follow me but I don't follow back**\n   - Automatically follow all users who follow you but you don't follow back\n\n2. **Unfollow all users who don't follow me back**\n   - Automatically unfollow all users who don't follow you (traitors)\n\n3. **Follow a specific user**\n   - Follow a specific GitHub user by username\n\n4. **Unfollow a specific user**\n   - Unfollow a specific GitHub user by username\n\n5. **View detailed status**\n   - Access a sub-menu with detailed listing options:\n     - View all followers\n     - View all followings\n     - See all traitors (who don't follow you back)\n     - View all unfollowed followers (followers you don't follow)\n\n0. **Exit**\n   - Close the application\n\n## Development\n\n```bash\n# Run the application in development mode\nnpm run dev\n\n# Watch mode (auto-compile on file changes)\nnpm run watch\n\n# Lint the code\nnpm run lint\n\n# Clean the build directory\nnpm run clean\n\n# Rebuild (clean + build)\nnpm run rebuild\n\n# 🚀 NEW: Instant Sync (Auto follow/unfollow)\nnpm run instant-run\n```\n\n### Menu Options\n\nWhen you run the application, you'll see the following menu:\n\n1. **Follow all users who follow me but I don't follow back** - Automatically follow all users who follow you but you don't follow back\n2. **Unfollow all users who don't follow me back** - Automatically unfollow all users who don't follow you back\n3. **Follow a specific user** - Follow a specific GitHub user\n4. **Unfollow a specific user** - Unfollow a specific GitHub user\n5. **View detailed status** - View detailed lists of followers, following, traitors, and unfollowed followers\n6. **🚀 Instant Sync (1 + 2)** - Automatically perform both options 1 and 2 in sequence for perfect synchronization\n0. **Exit** - Exit the application\n\n### Instant Sync Feature\n\nThe new **Instant Sync** feature (`npm run instant-run`) is perfect for quickly synchronizing your followers and following:\n\n- Automatically unfollows users who don't follow you back\n- Automatically follows users who follow you but you don't follow back\n- Runs completely automatically without user interaction\n- Displays detailed progress and final statistics\n- Exits automatically when complete\n- **Smart timeout handling**: If the process takes too long (based on `TIMEOVER_MS` setting), it saves progress to `savedata.json` and resumes from that point on the next run\n- **Rate limit protection**: Respects GitHub API rate limits with configurable delays between requests (`RATELIMIT_WAIT_MS`)\n\nThis is ideal for:\n- Daily maintenance of your GitHub following list\n- Keeping follower/following counts balanced\n- Automated scripts and scheduled tasks (cron jobs, etc.)\n- Large follower/following lists that may exceed time limits\n\n**How it works with cron jobs:**\nIf you schedule this script to run every hour or every 10 minutes, and it doesn't complete within the `TIMEOVER_MS` limit:\n1. The script saves its progress to `savedata.json`\n2. On the next scheduled run, it automatically resumes from where it left off\n3. When all tasks are completed, `savedata.json` is automatically deleted\n\n## License\n\nThis project is get no license.\n\n---\n\n# GitHub Follower Traitor\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003e🕵️ GitHub에서 맞팔로우하지 않는 사용자 추적하기\u003c/h3\u003e\n\u003c/div\u003e\n\n## 개요\n\nGitHub Follower Traitor는 GitHub 팔로워와 팔로잉 관계를 분석하고 관리하는 커맨드라인 도구입니다. 맞팔로우하지 않는 사용자(\"배신자\")와 당신이 팔로우하지 않는 팔로워를 식별하여 GitHub 연결을 쉽게 관리할 수 있게 도와줍니다.\n\n### 기능\n\n- 📊 GitHub 팔로워 및 팔로잉 통계 확인\n- 🔍 맞팔로우하지 않는 사용자(배신자) 식별\n- 👀 당신이 팔로우하지 않는 팔로워 찾기\n- ✅ 일괄 팔로우/언팔로우 옵션\n- 🎯 개별 사용자 팔로우/언팔로우 기능\n- 🌐 모든 팔로워 및 팔로잉 상세 보기\n\n## 설치\n\n### 필수 조건\n\n- Node.js (v16 이상 권장)\n- npm (Node.js와 함께 제공)\n- GitHub 개인 액세스 토큰\n\n### 설정\n\n1. **저장소 복제**\n   ```bash\n   git clone https://github.com/yourusername/github-follower-traitor.git\n   cd github-follower-traitor\n   ```\n\n2. **의존성 설치**\n   ```bash\n   npm install\n   ```\n\n3. **.env 파일 생성**\n   루트 디렉토리에 다음 내용으로 `.env` 파일을 생성하세요:\n   ```\n   GITHUB_TOKEN=your_github_personal_access_token\n   GITHUB_USERNAME=your_github_username\n   \n   # API Rate Limit 설정 (밀리초)\n   # GitHub는 인증된 사용자에게 시간당 5,000건의 API 요청을 허용\n   # 각 요청 사이의 대기 시간 (기본값: 1000ms = 1초)\n   RATELIMIT_WAIT_MS=1000\n   \n   # Timeout 설정 (밀리초)\n   # 이 시간 내에 작업이 완료되지 않으면 진행 상태를 저장하고 종료\n   # 다음 실행 시 저장된 지점부터 재개됨\n   # 예: 50분 = 3000000ms, 9분 = 540000ms\n   TIMEOVER_MS=3000000\n   ```\n   \u003e 참고: 개인 액세스 토큰을 생성하려면 GitHub 설정 \u003e 개발자 설정 \u003e 개인 액세스 토큰으로 이동하세요. \"user:follow\" 범위를 선택해야 합니다.\n\n4. **애플리케이션 빌드**\n   ```bash\n   npm run build\n   ```\n\n## 사용법\n\n### 애플리케이션 실행\n\n```bash\nnpm start\n```\n\n### 사용 가능한 명령\n\n애플리케이션을 실행하면 다음 옵션이 포함된 메뉴가 표시됩니다:\n\n1. **나를 팔로우하는데 내가 팔로우하지 않는 모든 사람을 팔로우하기**\n   - 당신을 팔로우하지만 당신이 팔로우하지 않는 모든 사용자를 자동으로 팔로우합니다\n\n2. **나를 팔로우하지 않는데 내가 팔로우하고 있는 모든 사람 언팔로우하기**\n   - 당신을 팔로우하지 않는 모든 사용자(배신자)를 자동으로 언팔로우합니다\n\n3. **특정 사용자 팔로우하기**\n   - 사용자 이름으로 특정 GitHub 사용자를 팔로우합니다\n\n4. **특정 사용자 언팔로우하기**\n   - 사용자 이름으로 특정 GitHub 사용자를 언팔로우합니다\n\n5. **세부 상태보기**\n   - 상세 목록 옵션이 있는 하위 메뉴에 접근합니다:\n     - 모든 팔로워 목록 보기\n     - 모든 팔로잉 목록 보기\n     - 모든 배신자 목록 보기 (나를 팔로우하지 않는 사람)\n     - 모든 미팔로우 팔로워 목록 보기 (내가 팔로우하지 않는 팔로워)\n\n6. **🚀 즉시 동기화 (1 + 2)**\n   - 1번과 2번 옵션을 순차적으로 자동 실행하여 완벽한 동기화를 수행합니다\n\n0. **종료하기**\n   - 애플리케이션을 종료합니다\n\n### 즉시 동기화 기능\n\n새로운 **즉시 동기화** 기능 (`npm run instant-run`)은 팔로워와 팔로잉을 빠르게 동기화하는 데 완벽합니다:\n\n- 나를 팔로우하지 않는 사용자들을 자동으로 언팔로우\n- 나를 팔로우하지만 내가 팔로우하지 않는 사용자들을 자동으로 팔로우\n- 사용자 상호작용 없이 완전히 자동으로 실행\n- 상세한 진행 상황과 최종 통계 표시\n- 완료 시 자동으로 종료\n- **스마트 타임아웃 처리**: 작업이 너무 오래 걸리는 경우(`TIMEOVER_MS` 설정 기준), `savedata.json`에 진행 상황을 저장하고 다음 실행 시 해당 지점부터 재개 (instant-run 한정)\n- **Rate Limit 보호**: 요청 사이의 지연 시간을 설정(`RATELIMIT_WAIT_MS`)하여 GitHub API ratelimit 에 안걸리게 하기 위한 최소한의 조치 (instant-run 한정)\n\n다음과 같은 경우에 이상적입니다:\n- GitHub 팔로잉 목록의 일일 관리\n- 팔로워/팔로잉 수의 균형 유지\n- 자동화된 스크립트 및 예약된 작업 (cron 작업 등)\n- 시간 제한을 초과할 수 있는 대규모 팔로워/팔로잉 목록\n\n**Cron 작업과 함께 작동하는 방법:** (instant-run 한정)\n1시간마다 또는 10분마다 이 스크립트를 실행하도록 예약했는데 `TIMEOVER_MS` 제한 내에 완료되지 않는 경우:\n1. 스크립트가 진행 상황을 `savedata.json`에 저장\n2. 다음 예약된 실행 시 자동으로 중단된 지점부터 재개\n3. 모든 작업이 완료되면 `savedata.json`이 자동으로 삭제됨\n\n## 개발\n\n```bash\n# 개발 모드로 애플리케이션 실행\nnpm run dev\n\n# 감시 모드 (파일 변경 시 자동 컴파일)\nnpm run watch\n\n# 코드 린트\nnpm run lint\n\n# 빌드 디렉토리 정리\nnpm run clean\n\n# 재빌드 (clean + build)\nnpm run rebuild\n\n# 🚀 새로운 기능: 즉시 동기화 (자동 팔로우/언팔로우)\nnpm run instant-run\n```\n\n## 라이센스\n이 프로젝트는 라이선스가 없습니다.\n\n\n\n\n----\n\u003e 메인 화면\n```bash\n(base) PS R:\\project\\github-follower-traitor\u003e npm run start\n\n\u003e github-follower-traitor@1.0.0 start\n\u003e node dist/index.js\n\nGitHub Follower and Traitor 애플리케이션이 시작되었습니다!\n현재 시간: 2025. 5. 5. 오후 11:19:10\n\n\"taxi-tabby\" 사용자의 팔로워와 팔로잉 정보를 가져오는 중...\nfollowers (팔로워 수): 27\nfollowing (팔로잉 수): 27\n\n내가 팔로우하지만 나를 팔로우하지 않는 사용자 수: 0\n배신자 목록:\n\n나를 팔로우하지만 내가 팔로우하지 않는 사용자 수: 0\n팔로우하지 않는 팔로워:\n\n\n📊 GitHub Follow control menu:\n1: Follow all users who follow me but I don't follow back - 나를 팔로우하는데 내가 팔로우하지 않는 모든 사람을 팔로우하기\n2: Unfollow all users who don't follow me back - 나를 팔로우하지 않는데 내가 팔로우하고 있는 모든 사람 언팔로우하기\n3: Follow a specific user - 특정 사용자 팔로우하기\n4: Unfollow a specific user - 특정 사용자 언팔로우하기\n5: View detailed status - 세부 상태보기 (Sub Menu)\n0: Exit - 종료하기\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaxi-tabby%2Fgithub-followerandtraitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaxi-tabby%2Fgithub-followerandtraitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaxi-tabby%2Fgithub-followerandtraitor/lists"}