CHANGELOG.md を自動で生成する
みなさん、こんにちは!寒くなるとついついいっぱい食べがち、体重増加に要注意!!! 🤤
フロントエンドエンジニアの @nyaomaru です!
CHANGELOG をリリースノートから自動で生成するツールを作ったので紹介させていただきます! 🚀
🧪 きっかけ
みなさんも普段、CHANGELOG.mdを使って、リリースの内容を管理していると思いますが、これをバージョン上げるたびに手動で作るのがめんどくさい・・・
ある程度は自動化できるけど、生成されるCHANGELOG.mdが分類されてなかったり、整形されておらず使いづらい・・・
という個人の経験より生まれたのがchangelog-botや!

🎁 なんで changelog-bot?
- 🖋 めんどくさい
CHANGELOG.mdの生成を自動化- AI を使って整形するので精度が高い
- コミットメッセージや PR タイトルを解析して、“fix”や“feat”を自動で分類してくれる
- Release Note から自動整形
- 煩雑な Conventional Commit 不要
- AI を使わなくても fallback 可能
- API KEY を指定しない場合でもある程度の精度で生成できる
🔎 どうやって使うの?
その場で試す (npx / pnpx)
CLI からサクッと試すなら、npx / pnpm dlx が一番手軽!
まずは環境変数で自分の対象 repository を指定してな!
export REPO_FULL_NAME=your_name/your_repository_name
npm
npx @nyaomaru/changelog-bot@latest --help
pnpm
pnpm dlx @nyaomaru/changelog-bot \
--release-tag v0.0.1 \
--provider openai \
--dry-run
--dry-run を外せば CHANGELOG.md が PR で生成されるで!
AI を利かせたい場合は、実行前に環境変数で API キーをセットしておく。
# OpenAI 派はこっち
export OPENAI_API_KEY=sk-xxxx # OpenAI を使う場合
export OPENAI_MODEL=gpt-4o-mini # 任意モデルを指定したいとき(省略可)
# Anthropic 派はこっち
export ANTHROPIC_API_KEY=sk-ant-xxxx
export ANTHROPIC_MODEL=claude-3-5-sonnet-20240620
mise でローカル環境を整える
ソースから触りたい場合は mise で Node / pnpm を揃えてからビルド!
mise install # Node 22 / pnpm 10.12 を一括セットアップ
mise dev_install # 依存関係をインストール
mise build # TypeScript をコンパイル
必要な環境変数を export しておこか~
export REPO_FULL_NAME=your_name/your_repository_name # 実行対象のリポジトリ名
export GITHUB_TOKEN=ghp_xxx # Github Token
export OPENAI_API_KEY=sk-xxx # AI を利用する場合は、API key を宣言
あとは CLI を叩くだけ~。
mise start \
--release-tag v0.0.1 \
--provider openai \
--dry-run
💡 Tip:
--dry-runを外すと、実際にCHANGELOG.mdが PR に反映されるで!
- API キーを渡さない場合はローカルのコミットログから fallback で分類してくれる
- OPENAI_MODEL や ANTHROPIC_MODEL を環境変数で差し替えると、任意のモデルで整形可能
GitHub Actions で自動化
Github Actions で回したい場合はもっと簡単。.github/workflows に下記みたいな CI を置けば、リリースタグが打たれたタイミングで勝手に changelog が生えてくるで!
name: Auto Changelog
on:
workflow_dispatch:
push:
tags:
- 'v*'
jobs:
changelog:
uses: nyaomaru/changelog-bot/.github/workflows/changelog.yaml@v0
with:
changelog_path: CHANGELOG.md
provider: openai
release_tag: ${{ github.ref_name }}
dry_run: 'false'
secrets:
REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
AI キーが無いリポジトリでは dry_run: 'true' にして下書きを PR に貼る、なんて運用もアリやで。
🌱 配布とエコシステム
- npm / pnpm でインストール可能な CLI パッケージ (
@nyaomaru/changelog-bot) - 同梱の
action.ymlで GitHub Marketplace の Action としても使える - fallback ロジックは Conventional Commit の前提なしで動くから、既存プロジェクトにも導入しやすい
- Issue / PR はいつでもウェルカム!テンプレが整備されてるので、気軽にフィードバック置いてってな 😹
今後やりたいことリスト
- changelog の分類モデルをローカル LLM にも対応
- 英語以外の出力に対応
- 出力内容の精度改善(scoring による前処理とプロンプト)
🎯 まとめ
changelog-bot は「リリースを hook に CHANGELOG.md を自動生成する」ための CLI であり、Github Actions でもある。
気に入ったら 🌟 つけてってなぁ~!😻
おまけ

is-kitっていう、isXXXを簡単に構築できるユーティリティ OSS も公開してるから、見てってなぁ~!
記事もあるで~!
Discussion