ShipNote is an AI-powered changelog generator that transforms git commits into user-friendly release notes. It uses Claude AI to create clean, categorized changelogs that anyone can understand.
- Web application for pasting git logs and generating changelogs
- GitHub integration to fetch commits directly from repositories
- VS Code extension for generating changelogs from your workspace
- AI-powered categorization (Features, Fixes, Improvements, Documentation, etc.)
- Dark mode support
- Real-time changelog generation
Before you begin, make sure you have the following installed:
- Node.js (version 16 or higher)
- Python (version 3.8 or higher)
- Git
- A text editor or IDE
- An Anthropic API key (for Claude AI)
- GitHub OAuth App credentials (for GitHub integration)
ShipNote/
├── backend/ # Flask backend server
├── frontend/ # Next.js frontend application
│ └── ship-note/
├── cli/ # Command-line tools
└── extension/ # VS Code extension files
Navigate to the backend directory:
cd backendpip install -r requirements.txtCreate a .env file in the backend directory with the following content:
# Anthropic API Key (Required)
# Get your API key from: https://console.anthropic.com/
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# GitHub OAuth Credentials (Required for GitHub integration)
# Create a GitHub OAuth App at: https://github.com/settings/developers
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secretAnthropic API Key:
- Go to https://console.anthropic.com/
- Sign up or log in
- Navigate to API Keys section
- Create a new API key
- Copy and paste it into your
.envfile
GitHub OAuth App:
- Go to https://github.com/settings/developers
- Click "New OAuth App"
- Fill in the application details:
- Application name: ShipNote
- Homepage URL: http://localhost:3000
- Authorization callback URL: http://localhost:3000/auth/github/callback
- Click "Register application"
- Copy the Client ID
- Generate a new Client Secret
- Paste both into your
.envfile
python app.pyThe backend server will start on http://localhost:5000
You should see output confirming:
- API key loaded successfully
- GitHub OAuth configured successfully
Open a new terminal window and navigate to the frontend directory:
cd frontend/ship-notenpm installCreate a .env.local file in the frontend/ship-note directory with the following content:
# Backend API URL
NEXT_PUBLIC_API_URL=http://localhost:5000
# GitHub OAuth Client ID (must match backend .env)
NEXT_PUBLIC_GITHUB_CLIENT_ID=your_github_client_idMake sure the NEXT_PUBLIC_GITHUB_CLIENT_ID matches the GITHUB_CLIENT_ID from your backend .env file.
npm run devThe frontend will start on http://localhost:3000
- Open your browser and go to http://localhost:3000
- You should see the ShipNote interface
- Try connecting your GitHub account
- Paste some git commits or fetch from a repository
- Click "Generate" to create a changelog
- Open your terminal in any git repository
- Run:
git log --oneline - Copy the output
- Paste it into the "Input Commits" text area in ShipNote
- Click "Generate" to create your changelog
- Click "Connect GitHub" button
- Authorize ShipNote to access your repositories
- Enter a GitHub repository URL (e.g., https://github.com/username/repo)
- Click the green "Generate" button
- Or select a repository from the list in the GitHub modal
- Choose a commit range (Last Week, Last 2 Weeks, Last Month, or All Commits)
- Click "Fetch Commits" to generate the changelog
GitHub Repo of the Extension: https://github.com/baoblank25/extension
- Open VS Code
- Go to the Extensions marketplace
- Search for "GitShipNote" or "ShipNote"
- Click Install
Or install directly from the marketplace: https://marketplace.visualstudio.com/items?itemName=BrianBaoHoang.gitshipnote
- Open VS Code Settings (File > Preferences > Settings)
- Search for "ShipNote"
- Configure the backend API URL if different from default:
- API URL: http://localhost:5000
- Open a git repository in VS Code
- Open the Command Palette (Ctrl+Shift+P or Cmd+Shift+P)
- Type "ShipNote: Generate Changelog"
- Select the commit range or enter custom dates
- The extension will generate a changelog and save it to your workspace
Alternatively:
- Right-click in the Explorer view
- Select "Generate Changelog with ShipNote"
- Follow the prompts to customize the output
Problem: ModuleNotFoundError: No module named 'git'
Solution: Install GitPython: pip install GitPython
Problem: Backend won't start
Solution: Check that your .env file exists and has valid API keys
Problem: TypeError: Client.__init__() got an unexpected keyword argument 'proxies'
Solution: Downgrade httpx: pip install httpx==0.27.2
Problem: "Failed to fetch" error when generating Solution: Make sure the backend server is running on port 5000
Problem: GitHub connection not working
Solution: Verify your GitHub OAuth credentials match in both .env and .env.local files
Problem: Changes not reflecting Solution: Restart both frontend and backend servers
Problem: "Access token not found" Solution: Reconnect your GitHub account and try again
Problem: "Unknown" authors in changelog Solution: Make sure you're using the latest version and the backend server has been restarted
The backend uses Flask and includes:
services/ai_service.py- Handles Claude AI integrationservices/git_service.py- Processes local git repositoriesservices/github_service.py- Handles GitHub API and OAuthapp.py- Main Flask application with API endpoints
The frontend uses Next.js 16 with TypeScript and includes:
app/page.tsx- Main application pagecomponents/GitHubConnectModal.tsx- GitHub integration modallib/api.ts- API client functionslib/github.ts- GitHub OAuth utilities
GET /health- Health checkPOST /api/generate-notes- Generate changelog from commits arrayPOST /api/generate-from-text- Generate from pasted git log textPOST /api/github/auth- GitHub OAuth authenticationPOST /api/github/repositories- Get user repositoriesPOST /api/github/commits- Fetch repository commitsPOST /api/github/generate-from-url- Generate changelog from GitHub URL
Contributions are welcome! Please feel free to submit a Pull Request.
For issues, questions, or suggestions:
- Open an issue on GitHub: https://github.com/baoblank25/Git_Ship_Note/issues
- Check existing documentation in this README
- Built with Claude AI by Anthropic
- Uses Next.js, Flask, and GitPython
- GitHub API integration for seamless repository access