{"id":18438719,"url":"https://github.com/seapagan/github-changelog-md","last_synced_at":"2025-07-07T00:06:42.491Z","repository":{"id":196234872,"uuid":"695484691","full_name":"seapagan/github-changelog-md","owner":"seapagan","description":"Automatically generate a Markdown CHANGELOG from your GitHub Repository","archived":false,"fork":false,"pushed_at":"2025-06-23T17:02:59.000Z","size":3450,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-23T18:20:42.669Z","etag":null,"topics":["changelog","changelog-generator","github-api","markdown","python"],"latest_commit_sha":null,"homepage":"http://changelog.seapagan.net/","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/seapagan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","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},"funding":{"github":"seapagan","buy_me_a_coffee":"seapagan","ko_fi":"seapagan"}},"created_at":"2023-09-23T10:28:19.000Z","updated_at":"2025-05-24T08:27:19.000Z","dependencies_parsed_at":"2023-10-16T11:50:31.422Z","dependency_job_id":"5e37f25e-98d8-47a0-8a0e-ee079326f4d8","html_url":"https://github.com/seapagan/github-changelog-md","commit_stats":null,"previous_names":["seapagan/github-changelog-md"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/seapagan/github-changelog-md","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seapagan%2Fgithub-changelog-md","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seapagan%2Fgithub-changelog-md/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seapagan%2Fgithub-changelog-md/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seapagan%2Fgithub-changelog-md/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seapagan","download_url":"https://codeload.github.com/seapagan/github-changelog-md/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seapagan%2Fgithub-changelog-md/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261531992,"owners_count":23172884,"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":["changelog","changelog-generator","github-api","markdown","python"],"created_at":"2024-11-06T06:21:25.818Z","updated_at":"2025-07-07T00:06:42.474Z","avatar_url":"https://github.com/seapagan.png","language":"Python","funding_links":["https://github.com/sponsors/seapagan","https://buymeacoffee.com/seapagan","https://ko-fi.com/seapagan"],"categories":[],"sub_categories":[],"readme":"# Markdown Changelog Generator \u003c!-- omit in toc --\u003e\n\n[![PyPI\nversion](https://badge.fury.io/py/github-changelog-md.svg)](https://badge.fury.io/py/github-changelog-md)\n![PyPI - License](https://img.shields.io/pypi/l/github-changelog-md)\n[![Ruff](https://github.com/seapagan/github-changelog-md/actions/workflows/linting.yml/badge.svg)](https://github.com/seapagan/github-changelog-md/actions/workflows/linting.yml)\n[![Tests](https://github.com/seapagan/github-changelog-md/actions/workflows/tests.yml/badge.svg)](https://github.com/seapagan/github-changelog-md/actions/workflows/tests.yml)\n[![codecov](https://codecov.io/gh/seapagan/github-changelog-md/graph/badge.svg?token=27D8PGNX0E)](https://codecov.io/gh/seapagan/github-changelog-md)\n[![Dependency Review](https://github.com/seapagan/github-changelog-md/actions/workflows/dependency-review.yml/badge.svg)](https://github.com/seapagan/github-changelog-md/actions/workflows/dependency-review.yml)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/seapagan/github-changelog-md/main.svg)](https://results.pre-commit.ci/latest/github/seapagan/github-changelog-md/main)\n[![CodeQL](https://github.com/seapagan/github-changelog-md/actions/workflows/codeql.yml/badge.svg)](https://github.com/seapagan/github-changelog-md/actions/workflows/codeql.yml)\n[![Weekly Downloads](https://static.pepy.tech/personalized-badge/github-changelog-md?period=week\u0026units=international_system\u0026left_color=black\u0026right_color=green\u0026left_text=Weekly%20Downloads)](https://pepy.tech/project/github-changelog-md)\n[![Total Downloads](https://static.pepy.tech/personalized-badge/github-changelog-md?period=total\u0026units=international_system\u0026left_color=black\u0026right_color=green\u0026left_text=Total%20Downloads)](https://pepy.tech/project/github-changelog-md)\n\n**Generate a Markdown changelog from a Github repository.**\n\nThis project will generate a Markdown-formatted changelog from a Github\nrepository. It will detect all GitHub releases and generate a changelog based on\nthe **merged** Pull Requests for each release along with a section for\n**unreleased** PRs (those since the last release) at the top. It will also\ninclude a list of all Issues closed for each release.\n\nThe PRs and issues are grouped by type (bug, enhancement, etc.) and sorted by\nlatest to oldest in this release.\n\n\u003e [!TIP]\n\u003e For an example of the output, see the\n\u003e [CHANGELOG](https://github.com/seapagan/github-changelog-md/blob/main/CHANGELOG.md)\n\u003e for this project.\n\n**Full documentation is available at:** \u003chttps://changelog.seapagan.net\u003e\n\n- [Install Locally for a project](#install-locally-for-a-project)\n- [Install Globally](#install-globally)\n- [Setup a GitHub PAT](#setup-a-github-pat)\n  - [PAT Permissions](#pat-permissions)\n- [Create a config file](#create-a-config-file)\n- [Add the config file to your .gitignore](#add-the-config-file-to-your-gitignore)\n- [Development setup](#development-setup)\n- [License](#license)\n- [Credits](#credits)\n\nIt is possible to install this package both locally within your projects and\nglobally so it can be used in every project. You also need to generate a GitHub\nPersonal Access Token (PAT) to use this tool or use an existing one. This should\nbe stored in a config file `.github-changelog-md.toml` in the directory you run\nthe tool from.\n\n## Install Locally for a project\n\nChange to your project directory and install the package using your preferred\npackage manager or plain `pip`.\n\nI'd recommend using [uv][uv-link] for managing your\nproject dependencies if you don't already have a preference:\n\n```console\n$ uv add --dev github-changelog-md\n```\n\nor\n\n```console\n$ pip install github-changelog-md\n```\n\n## Install Globally\n\nYou could also install the package globally if you want to use it in every\nproject. See the\n[Documentation][docs-install] for more\ninformation.\n\n## Setup a GitHub PAT\n\nSince this tool uses the GitHub API, you will need to create a [Personal Access\nToken](https://github.com/settings/tokens) (PAT) to use this tool without being\nrate limited. You can create a PAT with the `repo` scope to access private\nrepositories, or just leave all the scopes unchecked to only access public\nrepositories. Generate a 'classic' token unless you need more fine-grained\ncontrol over the permissions.\n\nChoose a descriptive name for your token, such as `github-changelog-md`, an\nexpiry time (or choose to not have it expire at all) and copy the token to your\nclipboard.\n\n### PAT Permissions\n\nAt this time the tool does not require any special permissions, but in the\nfuture we plan to offer the ability to create an actual release from the command\nline. To do this, the PAT will need either the `public_repo` scope (you only\nplan to use this on public repositories) or the `repo` scope (you also plan to\nuse this on private repositories).\n\n## Create a config file\n\nThis tool will look for a config file `.changelog-generator.toml` in the\nlocation it is run from. The config file is a simple [TOML](https://toml.io/en/)\nfile with the following format:\n\n```toml\n[changelog_generator]\nschema_version = 1\ngithub_pat = \"your_github_pat\"\n```\n\nThe easiest way to create this is run the app, you will be prompted for the\nPAT and the config file will be created for you in the current folder then the\napp will continue.\n\n```console\n$ github-changelog-md\n```\n\n\u003e [!TIP]\n\u003e This is only the barest **minimum** usable configuration! There are many more\n\u003e options available, see the\n\u003e [Configuration](https://changelog.seapagan.net/usage/options/) section in the\n\u003e documentation for a full list of the many available options.\n\n## Add the config file to your .gitignore\n\nMake sure you add the config file to your `.gitignore` file so you don't\naccidentally commit your PAT to your repository. If this does happen, GitHub\nwill automatically revoke the PAT and you will need to create a new one anyway,\nbut there is a small chance someone could use it to access your repositories.\n\n## Development setup\n\nInstall the dependencies using Poetry:\n\n```terminal\n$ uv sync\n```\n\nThen, activate the virtual environment:\n\n```terminal\n$ source .venv/bin/activate\n```\n\nIf you don't want to use `uv`, you can create a virtual environment yourself\nthen install the dependencies using pip:\n\n```terminal\n$ pip install -r requirements-dev.txt\n```\n\nSee the [Contributing](https://changelog.seapagan.net/contributing/) section in\nthe documentation for more information on how to contribute to this project.\n\n## License\n\nThis project is released under the terms of the [MIT license](LICENSE.txt).\n\n## Credits\n\nThis generator puts a small unobtrusive comment at the bottom of the changelog\nto indicate that it was generated by this tool. This is to acknowledge the work\nof the contributors and to help spread the word about this project. Please leave\nthis comment in place for others :pray:.\n\nIf you use this tool and like it, please consider giving it a :star: on Github,\nwhich helps others find it. Thanks!\n\nIf you find this tool is useful, please consider\n[sponsoring](https://github.com/sponsors/seapagan) the developer . All sponsors\nwill be listed on the documentation and README. All contributions are greatly\nappreciated and will be directly used to support and improve the project.\n\nThe original Python boilerplate for this package was created using my\n[Pymaker](https://github.com/seapagan/py-maker) tool.\n\n[uv-link]: https://docs.astral.sh/uv/\n[docs-install]: https://changelog.seapagan.net/installation/#globally\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseapagan%2Fgithub-changelog-md","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseapagan%2Fgithub-changelog-md","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseapagan%2Fgithub-changelog-md/lists"}