Skip to main content

LogForge — gitlog

LogForge — AI-Powered Changelog & Release Notes Generator

CI Coverage GitHub Releases Python 3.11+ License: MIT

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.

Quick demo


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:

  1. Builds and publishes to PyPI on tag push
  2. Generates the changelog using gitlog itself
  3. 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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

logforge_gitlog-0.1.1.tar.gz (31.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

logforge_gitlog-0.1.1-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file logforge_gitlog-0.1.1.tar.gz.

File metadata

  • Download URL: logforge_gitlog-0.1.1.tar.gz
  • Upload date:
  • Size: 31.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for logforge_gitlog-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7007b0240d2634db129b32dfff589152e02b24bc49b7b6ef637f39366b96cca9
MD5 b3a8a62ab9140f2640b8e45a145c67a0
BLAKE2b-256 fbb6eb23e32fc5bd9f66995ded7c40a97af25054c73207e7a1340c313d990612

See more details on using hashes here.

File details

Details for the file logforge_gitlog-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for logforge_gitlog-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 628feefd46b551c92201b68835e206e9a6645ff651c8aebf38337f97c7e841cd
MD5 e8f8ccab8e899707715641a64c7c8dd3
BLAKE2b-256 88c3bd2b099be52ccdbcf2f1fd46c3ee1d59ef03ee312d6151f893521908c865

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page