AI-Powered Changelog & Release Notes Generator
Project description
LogForge — gitlog
LogForge — AI-Powered Changelog & Release Notes Generator
One command. From git history to a human-readable, structured CHANGELOG.
Supports multiple languages, multiple output formats, and any LLM.
Quick Start
# Install directly from GitHub (recommended until published to PyPI)
pip install git+https://github.com/JToSound/LogForge.git
cd your-repo
export OPENAI_API_KEY=sk-...
gitlog generate
That's it. Your CHANGELOG.md is ready. 🎉
5s Demo
Below is a very short demo that shows gitlog generate producing a changelog in under 5 seconds on small repos.
Features
- 🤖 Two-layer classification — rule engine (zero API cost) + LLM batch fallback
- 🌍 Multilingual output — English, Traditional Chinese, Simplified Chinese, Japanese
- 📄 Multiple formats — Markdown (Keep-a-Changelog), JSON, HTML, Twitter drafts
- 🔗 GitHub integration — auto-generates PR/issue/commit links
- ⚡ Batch LLM calls — never call the LLM in a loop; respects token budgets
- 🔄 Fallback chain — LLM failure → rule engine, never interrupts the flow
- 🧩 CI/CD ready — GitHub Actions workflow included out of the box
- 🏠 Local inference — Ollama support for fully private generation
Installation
# Recommended: with uv
uv tool install gitlog
# Or pip
pip install gitlog
Requirements: Python 3.11+, Git
Usage
# Generate full CHANGELOG
gitlog generate
# From a specific version
gitlog generate --since v1.2.0
# HTML report
gitlog generate --format html
# Traditional Chinese output
gitlog generate --lang zh-TW
# Use a local Ollama model (no API key needed)
gitlog generate --model ollama/llama3
# Preview in terminal without writing a file
gitlog generate --dry-run
# Compare two versions
gitlog diff v1.0.0 v1.1.0
# Generate Twitter/X announcement
gitlog tweet
# ASCII commit statistics
gitlog stats
# Interactive setup
gitlog init
Configuration
Create a .gitlog.toml in your repo root (or run gitlog init):
[gitlog]
llm_provider = "openai"
model = "gpt-4o-mini"
language = "en"
format = "markdown"
output_file = "CHANGELOG.md"
project_description = "A developer tool for..."
exclude_patterns = ["^chore\\(deps\\)", "^Merge branch"]
group_by_scope = true
max_commits_per_group = 20
[gitlog.github]
repo = "owner/repo"
Full Configuration Reference
| Parameter | Default | Description |
|---|---|---|
llm_provider |
openai |
LLM provider: openai, anthropic, ollama |
model |
gpt-4o-mini |
Model identifier |
language |
en |
Output language: en, zh-TW, zh-CN, ja |
format |
markdown |
Output format: markdown, json, html, twitter |
output_file |
CHANGELOG.md |
Output file path |
project_description |
"" |
Project context injected into LLM prompts |
exclude_patterns |
see default | Regex list of commit messages to skip |
group_by_scope |
true |
Group commits by conventional commit scope |
max_commits_per_group |
20 |
Max commits shown per category per version |
github.repo |
"" |
owner/repo for generating clickable links |
GitHub Actions Integration
Add to your release workflow:
- name: Generate Changelog
uses: JToSound/LogForge/.github/workflows/release.yml@main
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
Or use the included release.yml which automatically:
- Builds and publishes to PyPI on tag push
- Generates the changelog using gitlog itself
- Creates a GitHub Release with the generated notes
Supported LLM Providers
| Provider | Model Example | Env Var |
|---|---|---|
| OpenAI | gpt-4o-mini |
OPENAI_API_KEY |
| Anthropic | claude-3-5-haiku-20241022 |
ANTHROPIC_API_KEY |
| Ollama (local) | ollama/llama3 |
(none required) |
| Gemini | gemini/gemini-1.5-flash |
GEMINI_API_KEY |
License
MIT © gitlog contributors
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file logforge_gitlog-0.1.0.tar.gz.
File metadata
- Download URL: logforge_gitlog-0.1.0.tar.gz
- Upload date:
- Size: 31.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a5e647e28d4748945440692cc2d5ab2dfe38d80baf1904260c2e10350c387cd
|
|
| MD5 |
83c0f40b465cf8c1b0414e9509d24288
|
|
| BLAKE2b-256 |
b98a7ad561ec48e471dc16ba23072661297a969641bc9e1bfae5a99321d4c829
|
File details
Details for the file logforge_gitlog-0.1.0-py3-none-any.whl.
File metadata
- Download URL: logforge_gitlog-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1259c92b687a9054ab2877be5a083f9dbd5b580c5652eabbaddb4206482efc6
|
|
| MD5 |
f8c5b8f6d6c847d2b386b8b191c69e58
|
|
| BLAKE2b-256 |
5afd2cfccd0f32721a0c7ac54b5c54b587e6fdf0e8f819ca3ef095c36ac22304
|