Generate your first changelog
This tutorial takes you from an empty terminal to a polished changelog in about ten
minutes. You'll install the tool, point it at a real repository, and produce a release
entry you could paste straight into a CHANGELOG.md.
You do not need to understand how the tool works internally yet — that is what the explanation is for. Here, just follow along; every command is meant to be run exactly as written.
What you'll need
- Python 3.8 or newer (
python --versionto check) - Git installed and on your
PATH - A free Google account — we'll use Gemini, which has no credit-card requirement
That's it. No paid API key is required to finish this tutorial.
Step 1 — Get the tool
git clone https://github.com/FaithKovi/changelog-generator.git
cd changelog-generator
Step 2 — Create an isolated environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
Your prompt should now show (venv) at the start of the line. That tells you the
environment is active.
Step 3 — Add a free Gemini key
Copy the example environment file:
cp .env.example .env
Then:
-
Open aistudio.google.com/apikey and sign in.
-
Click Create API Key and copy the value.
-
Paste it into
.env:GEMINI_API_KEY=AIzaSy-your-key-here
The .env file is already git-ignored, so your key will not be committed. Never paste an
API key directly into a command or a tracked file.
Step 4 — Run it against a real repository
Let's generate a changelog for an actual open-source project so the output is meaningful:
git clone https://github.com/pallets/flask.git
python changelog.py --repo ./flask --last 20 --version 1.0.0
In a few seconds you'll see a categorized, Keep a Changelog–style entry printed to your terminal — grouped into Added, Changed, Fixed, and so on, with short commit hashes for traceability.
Step 5 — Save it to a file
python changelog.py --repo ./flask --last 20 --version 1.0.0 --output CHANGELOG.md
Open CHANGELOG.md and you'll find the same entry, ready to commit.
What you just did
You installed the tool, authenticated against a free LLM provider, and turned twenty raw commits into a readable release note — without hand-sorting a single line.
Where to go next
- Have a specific job to do? The how-to guides cover automating this in CI, switching to Claude, and appending to an existing changelog.
- Want every flag explained? See the CLI reference.
- Curious how categorization works? Read how it works.