{"id":13405572,"url":"https://github.com/nvuillam/github-dependents-info","last_synced_at":"2026-04-20T00:12:52.801Z","repository":{"id":63115843,"uuid":"564876700","full_name":"nvuillam/github-dependents-info","owner":"nvuillam","description":"Collect information about dependencies between a github repo and other repositories. Results available in JSON, markdown and badge","archived":false,"fork":false,"pushed_at":"2025-12-22T21:04:43.000Z","size":1425,"stargazers_count":147,"open_issues_count":20,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-22T22:28:21.432Z","etag":null,"topics":["api","dependencies-collector","dependents","github","markdown","pypi-package","stars","usedby"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/github-dependents-info/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nvuillam.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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},"funding":{"github":["nvuillam"]}},"created_at":"2022-11-11T18:00:12.000Z","updated_at":"2025-12-14T02:15:25.000Z","dependencies_parsed_at":"2023-02-19T02:15:27.886Z","dependency_job_id":"669016cd-f27d-4eb9-944d-9fc90be875f6","html_url":"https://github.com/nvuillam/github-dependents-info","commit_stats":{"total_commits":276,"total_committers":7,"mean_commits":39.42857142857143,"dds":0.3586956521739131,"last_synced_commit":"69ce4e67f022e67a669634d3e5a7d6c3f8d33538"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/nvuillam/github-dependents-info","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvuillam%2Fgithub-dependents-info","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvuillam%2Fgithub-dependents-info/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvuillam%2Fgithub-dependents-info/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvuillam%2Fgithub-dependents-info/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nvuillam","download_url":"https://codeload.github.com/nvuillam/github-dependents-info/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvuillam%2Fgithub-dependents-info/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28015021,"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","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"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":["api","dependencies-collector","dependents","github","markdown","pypi-package","stars","usedby"],"created_at":"2024-07-30T19:02:05.704Z","updated_at":"2026-04-20T00:12:52.790Z","avatar_url":"https://github.com/nvuillam.png","language":"Python","readme":"# github-dependents-info\n\n\u003cdiv align=\"center\"\u003e\n\n[![PyPI](https://img.shields.io/pypi/v/github-dependents-info)](https://pypi.org/project/github-dependents-info/)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/github-dependents-info)](https://pypi.org/project/github-dependents-info/)\n[![GitHub stars](https://img.shields.io/github/stars/nvuillam/github-dependents-info?cacheSeconds=3600)](https://github.com/nvuillam/github-dependents-info/stargazers/)\n[![Build status](https://github.com/nvuillam/github-dependents-info/workflows/build/badge.svg?branch=main\u0026event=push)](https://github.com/nvuillam/github-dependents-info/actions?query=workflow%3Abuild)\n[![Python Version](https://img.shields.io/pypi/pyversions/github-dependents-info.svg)](https://pypi.org/project/github-dependents-info/)\n[![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/nvuillam/github-dependents-info/pulls?utf8=%E2%9C%93\u0026q=is%3Apr%20author%3Aapp%2Fdependabot)\n\n[![GitHub contributors](https://img.shields.io/github/contributors/nvuillam/github-dependents-info.svg)](https://github.com/nvuillam/github-dependents-info/graphs/contributors/)\u003c!-- gh-dependents-info-used-by-start --\u003e\n[![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by\u0026message=48\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/github-dependents-info/blob/main/docs/github-dependents-info.md)\u003c!-- gh-dependents-info-used-by-end --\u003e\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/nvuillam)](https://github.com/sponsors/nvuillam)\n[![MegaLinter](https://github.com/nvuillam/github-dependents-info/actions/workflows/mega-linter.yml/badge.svg)](https://github.com/nvuillam/github-dependents-info/actions/workflows/mega-linter.yml)\n[![License](https://img.shields.io/github/license/nvuillam/github-dependents-info)](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\nCollect information about dependencies between a github repo and other repositories.\n\n[![See tutorial on youtube](assets/images/youtube-preview.png)](https://www.youtube.com/watch?v=katV9w0QhTQ)\n\n\u003c/div\u003e\n\n_________________\n## 🚀 Features\n\nGitHub API does not allow to collect information about package usage (**Used by** on home, **Dependents** in insights section)\n\nThis package uses GitHub HTML to collect dependents information and can:\n\n- Automate all the actions below [**using a simple GitHub Action**](#use-as-github-action) !\n- Output as text\n- Output as json (including shields.io markdown badges)\n- Generate summary markdown file\n- Optionally add an AI-generated usage summary (via `litellm`) when an LLM API key is present\n- Update existing markdown by inserting **Used by** badge within tags\n  - `\u003c!-- gh-dependents-info-used-by-start --\u003e\n[![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by\u0026message=48\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/github-dependents-info/blob/main/docs/github-dependents-info.md)\u003c!-- gh-dependents-info-used-by-end --\u003e`\n- Handle multiple repositories packages\n- Filter results using minimum stars or by repository owner\n- Keep huge ecosystems manageable with pagination controls (`--max-scraped-pages`, `--pagination/--no-pagination`, `--page-size`)\n- Fetch dependents faster thanks to asynchronous `httpx` requests and parallelized page scraping\n\nBadges example\n\n[![](https://img.shields.io/static/v1?label=Used%20by\u0026message=15\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(public)\u0026message=11\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(private)\u0026message=4\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)\u0026message=56\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n\n\u003cdetails\u003e\n  \u003csummary\u003eJSON output\u003c/summary\u003e\n\nNote: when AI usage summary is enabled and an LLM API key is present, the JSON output also includes `llm_summary`.\n\n```json\n{\n    \"all_public_dependent_repos\": [\n        {\n            \"name\": \"CIT-SeniorDesign/CIT-SeniorDesign.github.io\",\n            \"stars\": 0\n        },\n        {\n            \"name\": \"Moaz-Adel/Jobsity-Challenge\",\n            \"stars\": 0\n        },\n        {\n            \"name\": \"Moaz-Adel/automation-exercise-cypress\",\n            \"stars\": 0\n        },\n        {\n            \"name\": \"RecuencoJones/vscode-groovy-lint-issue\",\n            \"stars\": 0\n        },\n        {\n            \"name\": \"aboe026/data-structures\",\n            \"stars\": 0\n        },\n        {\n            \"name\": \"aboe026/shields.io-badge-results\",\n            \"stars\": 0\n        },\n        {\n            \"name\": \"aboe026/software-update-checker\",\n            \"stars\": 2\n        },\n        {\n            \"name\": \"katalon-labs/katalon-recorder-extension\",\n            \"stars\": 0\n        },\n        {\n            \"name\": \"mashafrancis/sa-jenkins\",\n            \"stars\": 0\n        },\n        {\n            \"name\": \"nvuillam/vscode-groovy-lint\",\n            \"stars\": 52\n        },\n        {\n            \"name\": \"run2cmd/dotfiles\",\n            \"stars\": 2\n        }\n    ],\n    \"packages\": [\n        {\n            \"id\": null,\n            \"name\": \"nvuillam/npm-groovy-lint\",\n            \"url\": \"https://github.com/nvuillam/npm-groovy-lint/network/dependents\",\n            \"public_dependent_stars\": 56,\n            \"public_dependents\": [\n                {\n                    \"name\": \"CIT-SeniorDesign/CIT-SeniorDesign.github.io\",\n                    \"stars\": 0\n                },\n                {\n                    \"name\": \"Moaz-Adel/Jobsity-Challenge\",\n                    \"stars\": 0\n                },\n                {\n                    \"name\": \"Moaz-Adel/automation-exercise-cypress\",\n                    \"stars\": 0\n                },\n                {\n                    \"name\": \"RecuencoJones/vscode-groovy-lint-issue\",\n                    \"stars\": 0\n                },\n                {\n                    \"name\": \"aboe026/data-structures\",\n                    \"stars\": 0\n                },\n                {\n                    \"name\": \"aboe026/shields.io-badge-results\",\n                    \"stars\": 0\n                },\n                {\n                    \"name\": \"aboe026/software-update-checker\",\n                    \"stars\": 2\n                },\n                {\n                    \"name\": \"katalon-labs/katalon-recorder-extension\",\n                    \"stars\": 0\n                },\n                {\n                    \"name\": \"mashafrancis/sa-jenkins\",\n                    \"stars\": 0\n                },\n                {\n                    \"name\": \"nvuillam/vscode-groovy-lint\",\n                    \"stars\": 52\n                },\n                {\n                    \"name\": \"run2cmd/dotfiles\",\n                    \"stars\": 2\n                }\n            ],\n            \"public_dependents_number\": 11,\n            \"private_dependents_number\": 4,\n            \"total_dependents_number\": 15,\n            \"badges\": {\n                \"total\": \"[![](https://img.shields.io/static/v1?label=Used%20by\u0026message=15\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\",\n                \"public\": \"[![](https://img.shields.io/static/v1?label=Used%20by%20(public)\u0026message=11\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\",\n                \"private\": \"[![](https://img.shields.io/static/v1?label=Used%20by%20(private)\u0026message=4\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\",\n                \"stars\": \"[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)\u0026message=56\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\"\n            }\n        }\n    ],\n    \"total_dependents_number\": 15,\n    \"public_dependents_number\": 11,\n    \"private_dependents_number\": 4,\n    \"public_dependents_stars\": 56,\n    \"badges\": {\n        \"total\": \"[![](https://img.shields.io/static/v1?label=Used%20by\u0026message=15\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\",\n        \"public\": \"[![](https://img.shields.io/static/v1?label=Used%20by%20(public)\u0026message=11\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\",\n        \"private\": \"[![](https://img.shields.io/static/v1?label=Used%20by%20(private)\u0026message=4\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\",\n        \"stars\": \"[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)\u0026message=56\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\"\n    }\n}\n\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eMarkdown output for single package\u003c/summary\u003e\n\n```markdown\n# Dependents stats for nvuillam/npm-groovy-lint\n\n## Package nvuillam/npm-groovy-lint\n\n[![](https://img.shields.io/static/v1?label=Used%20by\u0026message=15\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(public)\u0026message=11\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(private)\u0026message=4\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)\u0026message=56\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n\n| Repository                                                                                                    | Stars |\n|:--------------------------------------------------------------------------------------------------------------|------:|\n| [CIT-SeniorDesign/CIT-SeniorDesign.github.io](https://github.com/CIT-SeniorDesign/CIT-SeniorDesign.github.io) |     0 |\n| [Moaz-Adel/Jobsity-Challenge](https://github.com/Moaz-Adel/Jobsity-Challenge)                                 |     0 |\n| [Moaz-Adel/automation-exercise-cypress](https://github.com/Moaz-Adel/automation-exercise-cypress)             |     0 |\n| [RecuencoJones/vscode-groovy-lint-issue](https://github.com/RecuencoJones/vscode-groovy-lint-issue)           |     0 |\n| [aboe026/data-structures](https://github.com/aboe026/data-structures)                                         |     0 |\n| [aboe026/shields.io-badge-results](https://github.com/aboe026/shields.io-badge-results)                       |     0 |\n| [aboe026/software-update-checker](https://github.com/aboe026/software-update-checker)                         |     2 |\n| [katalon-labs/katalon-recorder-extension](https://github.com/katalon-labs/katalon-recorder-extension)         |     0 |\n| [mashafrancis/sa-jenkins](https://github.com/mashafrancis/sa-jenkins)                                         |     0 |\n| [nvuillam/vscode-groovy-lint](https://github.com/nvuillam/vscode-groovy-lint)                                 |    52 |\n| [run2cmd/dotfiles](https://github.com/run2cmd/dotfiles)                                                       |     2 |\n\n_Generated by [github-dependents-info](https://github.com/nvuillam/github-dependents-info)_\n```\n\u003c/details\u003e\n\nNote: If your repository packages have millions of dependents, running github-dependent-infos could take hours, as it works by browsing and scraping HTML pages returned by GitHub. For example, [angular/angular dependents](assets/angular-package-usage.md) did run during several hours !\n\n- [Installation](#⚙️-installation)\n- [Usage](#🛠️-usage)\n- [Examples](#🧪-examples)\n- [Use as GitHub Action](#use-as-github-action)\n\n_________________\n## ⚙️ Installation\n\n```bash\npip install -U github-dependents-info\n```\n\nor install with `Poetry`\n\n```bash\npoetry add github-dependents-info\n```\n\n_________________\n## 🛠️ Usage\n\n```shell\n    github-dependents-info [OPTIONS]\n```\n\n| Parameter | Type   | Description                                  |\n|-----------|--------|----------------------------------------------|\n| --repo    | String | Repository. Example: `oxsecurity/megalinter` |\n| -b\u003cbr/\u003e --badgemarkdownfile         | String  | _(optional)_ Path to markdown file where to insert/update **Used by** badge \u003cbr/\u003e (must contain tags `\u003c!-- gh-dependents-info-used-by-start --\u003e\n[![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by\u0026message=48\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/github-dependents-info/blob/main/docs/github-dependents-info.md)\u003c!-- gh-dependents-info-used-by-end --\u003e`) |\n| -s\u003cbr/\u003e --sort                      | String  | _(optional)_ Sort order: name (default) or stars                                                                                                                                              |\n| -x\u003cbr/\u003e --minstars                  | String  | _(optional)_ If set, filters repositories to keep only those with more than X stars                                                                                                           |\n| -m\u003cbr/\u003e --markdownfile              | String  | _(optional)_ Output markdown file file                                                                                                                                                        |\n| -d\u003cbr/\u003e --docurl                    | String  | _(optional)_ Hyperlink to use when clicking on badge markdown file badge. (Default: link to markdown file)                                                                                    |\n| -p\u003cbr/\u003e --mergepackages             | String  | _(optional)_ In case of multiple packages, merge their stats in a single one in markdown and json output                                                                                      |\n| -j\u003cbr/\u003e --json                      | String  | _(optional)_ Output in json format                                                                                                                                                            |\n| -u\u003cbr/\u003e --owner                     | String  | _(optional)_ If set, filters repositories to keep only those owned by the specified user/organization                                                                                         |\n| -n\u003cbr/\u003e --max-scraped-pages         | Integer | _(optional)_ Maximum number of GitHub pages to scrape per package (0 uses all available pages)                                                                                                |\n| --pagination\u003cbr/\u003e --no-pagination   | Boolean | _(optional)_ Enable (default) or disable pagination when writing markdown output                                                                                                              |\n| --page-size                         | Integer | _(optional)_ Number of repositories per markdown page when pagination is enabled (default: 500)                                                                                               |\n| --llm-summary\u003cbr/\u003e --no-llm-summary | Boolean | _(optional)_ Generate an AI usage summary in markdown output when an LLM API key is present (default: enabled)                                                                                |\n| --llm-model                         | String  | _(optional)_ LiteLLM model to use for the summary. If not set, a lightweight model is selected based on the detected API key provider                                                         |\n| --llm-max-repos                     | Integer | _(optional)_ Max dependent repos included in the summary prompt payload (default: 500)                                                                                                        |\n| --llm-max-words                     | Integer | _(optional)_ Max words for the generated summary (default: 300)                                                                                                                               |\n| --llm-timeout                       | Float   | _(optional)_ Timeout (seconds) for the summary LLM call (default: 120)                                                                                                                        |\n| -v\u003cbr/\u003e --version                   | Boolean | _(optional)_ Displays version of github-dependents-info                                                                                                                                       |\n| --verbose                           | Boolean | _(optional)_ Verbose output                                                                                                                                                                   |\n\nBadge tags example (the tool replaces everything between the markers):\n\n```markdown\n\u003c!-- gh-dependents-info-used-by-start --\u003e\n[![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by\u0026message=48\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/github-dependents-info/blob/main/docs/github-dependents-info.md)\u003c!-- gh-dependents-info-used-by-end --\u003e\n```\n\n_________________\n## 🧪 Examples\n\n- Text output\n\n      github-dependents-info --repo nvuillam/npm-groovy-lint\n\n- JSON output\n\n      github-dependents-info --repo nvuillam/npm-groovy-lint --json\n\n- Insert/Update **Used by** markdown badge within an existing markdown file containing tags `\u003c!-- gh-dependents-info-used-by-start --\u003e\n[![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by\u0026message=48\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/github-dependents-info/blob/main/docs/github-dependents-info.md)\u003c!-- gh-dependents-info-used-by-end --\u003e`\n\n      github-dependents-info --repo nvuillam/npm-groovy-lint --badgemarkdownfile ./README.md\n\n- Build markdown file with dependent repos (single package), sorted by name\n\n      github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --verbose\n\n- Build markdown file with dependent repos (single package), with minimum 10 stars\n\n      github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --minstars 10 --verbose\n\n- Build markdown file with dependent repos (multiple package), sorted by stars\n\n      github-dependents-info --repo oxsecurity/megalinter --markdownfile ./docs/package-usage.md --sort stars --verbose\n\n- Build markdown file with dependent repos (multiple package), with merged list of packages in output markdown\n\n      github-dependents-info --repo oxsecurity/megalinter --markdownfile ./docs/package-usage.md --sort stars --mergepackages --verbose\n\n- Limit scraping to repositories owned by a specific organization and cap pagination to 5 pages per package\n\n    github-dependents-info --repo oxsecurity/megalinter --owner oxsecurity --max-scraped-pages 5 --verbose\n\n- Generate paginated markdown with 250 repositories per page (use `--no-pagination` to force a single file)\n\n    github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --page-size 250 --mergepackages\n\n- Disable AI usage summary generation\n\n    github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --no-llm-summary\n\n- Force a specific LiteLLM model for the summary\n\n    github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --llm-model gpt-4o-mini\n\n- Generate markdown with AI summary using `OPENAI_API_KEY`\n\n    GEMINI_API_KEY=YOUR_KEY github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --llm-model gemini-3-flash-preview\n\n\n## AI usage summary (optional)\n\nIf an LLM API key is detected in the environment (for example `OPENAI_API_KEY`), the tool will call a lightweight model (via `litellm`) to generate a short **usage summary** and include it in the generated markdown.\n\n![](docs/ai-summary.png)\n\n- Supported provider env vars (most common):\n  - OpenAI: `OPENAI_API_KEY`\n  - Azure OpenAI: `AZURE_OPENAI_API_KEY`\n  - Anthropic: `ANTHROPIC_API_KEY`\n  - Google Gemini: `GEMINI_API_KEY` (or `GOOGLE_API_KEY`)\n  - Mistral: `MISTRAL_API_KEY`\n  - Cohere: `COHERE_API_KEY`\n  - Groq: `GROQ_API_KEY`\n\n- Disable with `--no-llm-summary` (or env var `GITHUB_DEPENDENTS_INFO_LLM_SUMMARY=false`)\n- Override model with `--llm-model` (or env var `GITHUB_DEPENDENTS_INFO_LLM_MODEL` / `LITELLM_MODEL`)\n- Adjust max summary length with `--llm-max-words` (or env var `GITHUB_DEPENDENTS_INFO_LLM_MAX_WORDS`)\n- The summary is cached in `--csvdirectory` (file `llm_summary_\u003crepo\u003e.json`) and reused on subsequent runs\n\n\n## Use as GitHub Action\n\nAllow GitHub Actions to create Pull Requests in **Settings \u003e Actions \u003e General**\n\n![image](https://github.com/nvuillam/github-dependents-info/assets/17500430/19615cf1-001e-4479-8306-0cb30ad996f4)\n\nCreate a file **.github/workflows/github-dependents-info.yml** in your repository with the following YAML content.\n\nIf will generate a new Pull Request (or replace the pending one) every time the usage stats will have changed :)\n\nDon't forget to add tags `\u003c!-- gh-dependents-info-used-by-start --\u003e\n[![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by\u0026message=48\u0026color=informational\u0026logo=slickpic)](https://github.com/nvuillam/github-dependents-info/blob/main/docs/github-dependents-info.md)\u003c!-- gh-dependents-info-used-by-end --\u003e` in your **README.md**, at the end of another badge line if you want github-dependents-info to replace its content automatically.\n\n```yaml\n# GitHub Dependents Info workflow\n# More info at https://github.com/nvuillam/github-dependents-info/\nname: GitHub Dependents Info\n\n# Let by default\non:\n  # On manual launch\n  workflow_dispatch:\n  # On every push on selected branches (usually just main)\n  push:\n    branches: [main,master,setup-gdi]\n  # Scheduled interval: Use CRON format https://crontab.guru/\n  schedule:\n    - cron: \"0 0 * * 0\" # Every sunday at midnight\n\npermissions: read-all\n\nconcurrency:\n  group: ${{ github.ref }}-${{ github.workflow }}\n  cancel-in-progress: true\n\njobs:\n  build:\n    name: GitHub Dependents Info\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n      pull-requests: write\n    steps:\n      # Git Checkout\n      - name: Checkout Code\n        uses: actions/checkout@v6\n        with:\n          token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}\n          fetch-depth: 0\n\n      # Collect data \u0026 generate markdown\n      - name: GitHub Dependents Info\n        uses: nvuillam/github-dependents-info@v1.6.3 # If you want to always have the latest version, you can use nvuillam/github-dependents-info@main :)\n        # See documentation for variables details: https://github.com/nvuillam/github-dependents-info?tab=readme-ov-file#%EF%B8%8F-usage\n        with:\n          repo: ${{ github.repository }}\n          outputrepo: ${{ github.repository }}\n          # markdownfile: docs/github-dependents-info.md\n          # badgemarkdownfile: README.md\n          # sort: stars\n          # minstars: \"0\"\n          # llm-summary: \"true\" # set to \"false\" to disable AI usage summary\n          # llm-model: \"\" # optional: override LiteLLM model (example: gpt-4o-mini, gemini-3-flash-preview)\n          # llm-max-repos: \"500\" # optional: cap repos sent to the summary prompt\n          # llm-max-words: \"250\" # optional: cap summary length\n          # llm-timeout: \"120\" # optional: timeout (seconds) for the LLM call\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          # To enable the AI usage summary, provide one of the supported provider API keys, for example:\n          # OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}\n          # GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}\n\n      # Workaround for git issues\n      - name: Prepare commit\n        run: sudo chown -R $USER:$USER .\n\n      # Create pull request\n      - name: Create Pull Request\n        id: cpr\n        uses: peter-evans/create-pull-request@v8\n        with:\n          token: ${{ secrets.PAT || secrets.GITHUB_TOKEN  }}\n          branch: github-dependents-info-auto-update\n          commit-message: \"[GitHub Dependents Info] Updated markdown file(s)\"\n          delete-branch: true\n          title: \"[GitHub Dependents Info] Updated markdown file\"\n          body: \"_Generated with [github-dependents-info](https://github.com/nvuillam/github-dependents-info), by [Nicolas Vuillamy](https://github.com/nvuillam)_\"\n          labels: documentation\n      - name: Create PR output\n        run: |\n          echo \"Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}\"\n          echo \"Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}\"\n```\n\n_________________\n## 🛡 License\n\n[![License](https://img.shields.io/github/license/nvuillam/github-dependents-info)](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE)\n\nThis project is licensed under the terms of the `MIT` license. See [LICENSE](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE) for more details.\n\n_________________\n## Credits [![🚀 Your next Python package needs a bleeding-edge project structure.](https://img.shields.io/badge/python--package--template-%F0%9F%9A%80-brightgreen)](https://github.com/TezRomacH/python-package-template)\n\nThis package has been inspired by stackexchange post [How to use GitHub API to get a repository's dependents information in GitHub?](https://stackoverflow.com/questions/58734176/how-to-use-github-api-to-get-a-repositorys-dependents-information-in-github)\n- [Bertrand Martel](https://github.com/bertrandmartel)\n- [muvaf](https://stackoverflow.com/users/5233252/muvaf)\n- [Mo Ganji](https://www.linkedin.com/in/mohganji/) \u003c!-- markdown-link-check-disable-line --\u003e\n\nThis project was generated with [`python-package-template`](https://github.com/TezRomacH/python-package-template)\n","funding_links":["https://github.com/sponsors/nvuillam"],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnvuillam%2Fgithub-dependents-info","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnvuillam%2Fgithub-dependents-info","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnvuillam%2Fgithub-dependents-info/lists"}