{"id":50948716,"url":"https://github.com/jdegand/github-follower-audit","last_synced_at":"2026-06-17T23:03:30.515Z","repository":{"id":353450666,"uuid":"1219471265","full_name":"jdegand/github-follower-audit","owner":"jdegand","description":"Python CLI Tool that analyzes a GitHub user's followers to find dead followers and bots","archived":false,"fork":false,"pushed_at":"2026-04-23T23:19:20.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-24T01:29:22.326Z","etag":null,"topics":["cli-tool","github","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/jdegand.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":"audit/__init__.py","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":null,"dco":null,"cla":null}},"created_at":"2026-04-23T23:04:08.000Z","updated_at":"2026-04-23T23:26:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jdegand/github-follower-audit","commit_stats":null,"previous_names":["jdegand/github-follower-audit"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jdegand/github-follower-audit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdegand%2Fgithub-follower-audit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdegand%2Fgithub-follower-audit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdegand%2Fgithub-follower-audit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdegand%2Fgithub-follower-audit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdegand","download_url":"https://codeload.github.com/jdegand/github-follower-audit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdegand%2Fgithub-follower-audit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34468766,"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-06-17T02:00:05.408Z","response_time":127,"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":["cli-tool","github","python"],"created_at":"2026-06-17T23:03:29.751Z","updated_at":"2026-06-17T23:03:30.505Z","avatar_url":"https://github.com/jdegand.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Follower Audit\n\nA small CLI Python tool (mostly AI‑generated, with manual debugging and glue work) that analyzes a GitHub user's followers and identifies:\n\n- **Dead followers** — inactive or abandoned accounts  \n- **Bot‑like followers** — accounts with suspicious patterns  \n\nThe project uses simple heuristics and scoring rules to classify each follower.\n\n---\n\n## Build the Docker Image\n\n```bash\nsudo docker build -t github-follower-audit .\n```\n\nIf you want to force a clean rebuild:\n\n```bash\nsudo docker build --no-cache -t github-follower-audit .\n```\n\n---\n\n## Running Without a GitHub Token (Not Recommended)\n\n```bash\nsudo docker run --rm \\\n  --entrypoint python \\\n  github-follower-audit \\\n  run.py username\n```\n\n**Warning:**  \nWithout a token, GitHub rate limits you to **60 requests/hour**, which is not enough for users with many followers.\n\n---\n\n## Running With a GitHub Token (Recommended)\n\nCreate a `.env` file:\n\n```bash\nGITHUB_TOKEN=ghp_your_token_here\n```\n\nThe token only needs the **read:user** permission.\n\nRun the audit:\n\n```bash\nsudo docker run --rm \\\n  --env-file .env \\\n  --entrypoint python \\\n  github-follower-audit \\\n  run.py jdegand\n```\n\n---\n\n## Example Output\n\n```json\n{\n  \"username\": \"jdegand\",\n  \"total_followers\": 118,\n  \"dead_followers_pct\": 2.54,\n  \"bot_followers_pct\": 0.85,\n  \"dead_followers\": [\n    \"CODECODEdz\",\n    \"ashilaf\",\n    \"rishi-soni\"\n  ],\n  \"bot_followers\": [\n    \"The-force-bee-with-you\"\n  ]\n}\n```\n\n---\n\n## Notes\n\n- The heuristics are intentionally simple and conservative.  \n- A follower is only flagged if they exceed strict scoring thresholds.  \n- This tool is meant for curiosity and exploration, not scientific accuracy.\n- Sparked by an article examining how and why developers inflate GitHub star counts.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdegand%2Fgithub-follower-audit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdegand%2Fgithub-follower-audit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdegand%2Fgithub-follower-audit/lists"}