Automatically generates changelogs, GitHub release notes, and social announcements from Git tag diffs using AI-powered commit analysis.
- Analyze commits between Git tags and classify by type (feat/fix/chore/breaking)
- Generate Keep-a-Changelog formatted CHANGELOG.md entries
- Create GitHub Releases-ready markdown with categorized sections
- Produce short announcements for Slack, Discord, or social media
- Filter commits by path prefix for monorepo support
- Handle both conventional commits and free-form commit messages
- Configurable output tone: technical, friendly, or marketing
Requirements:
- Node.js 16+
- Git CLI
git clone https://github.com/NeoSkillFactory/git-release-notes.git
cd git-release-notes
npm install# Generate changelog for a release
node scripts/generate-release-notes.js --from v1.4.0
# Create GitHub release notes
node scripts/generate-release-notes.js --from v1.4.0 --outputFormat release-notes
# Generate a social media announcement
node scripts/generate-release-notes.js --from v1.4.0 --outputFormat announcement --tone marketing
# Monorepo: only include commits under a specific path
node scripts/generate-release-notes.js --from v1.4.0 --monorepoPath packages/core
# Custom template
node scripts/generate-release-notes.js --from v1.4.0 --templatePath ./my-template.md## [1.4.0] - 2025-01-15### Added- OAuth 2.0 authentication support
- Dark mode toggle for accessibility
### Fixed- Memory leak in background processing
- Incorrect calculation in billing module
### Changed- Updated dependencies to latest versions
- Improved error handling for API requests| Option | Description | Default |
|---|---|---|
--from | Starting Git tag (required) | — |
--to | Ending Git tag | HEAD |
--outputFormat | changelog, release-notes, or announcement | changelog |
--tone | technical, friendly, or marketing | technical |
--monorepoPath | Path prefix for monorepo filtering | — |
--templatePath | Custom template file | built-in |
const{ generateReleaseNotes }=require('./scripts/generate-release-notes');constresult=awaitgenerateReleaseNotes({fromTag: 'v1.4.0',toTag: 'HEAD',outputFormat: 'changelog',tone: 'technical'});- name: Generate Release Notesrun: node scripts/generate-release-notes.js --from ${{ github.ref_name }}id: release-notes
- name: Create GitHub Releaseuses: actions/create-release@v1with:
body: ${{ steps.release-notes.outputs.markdown }}npm testMIT © NeoSkillFactory