Skip to main content

Turn merged GitHub pull requests into clean, customer-facing changelogs.

Project description

Shiplog CLI

Turn merged GitHub pull requests into clean, customer-facing changelogs.

Shiplog reads merged PRs from a repository, runs each one through the Shiplog AI transform, and emits a publish-ready changelog grouped by category (New / Improved / Fixed / Infrastructure).

Install

pip install shiplog

Requires Python 3.9+.

Quick start

# 1. Save your API key (get one at https://shiplogbeta.arksoft.xyz)
shiplog login

# 2. Generate a changelog — auto-detects the repo from git origin
cd your-project
shiplog generate

# 3. Or name any repo explicitly
shiplog generate owner/repo --days 30 -o CHANGELOG.md

Authentication

Shiplog API key

The CLI sends your API key with every generation request. Save it once:

shiplog login sk_live_abc123...

Or set SHIPLOG_API_KEY in your environment. Without a key, the CLI works in demo mode (limited to 5 generations per day).

Other auth commands:

shiplog whoami    # show current key
shiplog logout    # remove saved key

GitHub token

For the generate command, Shiplog needs read access to the repo's pull requests. It resolves a GitHub token in this order:

  1. --token flag
  2. $GITHUB_TOKEN / $GH_TOKEN
  3. gh auth token (if the GitHub CLI is installed and logged in)

Public repos work without a token but are subject to tighter rate limits.

Usage

Generate a changelog from a repo

The repo argument is optional — inside a git repo, Shiplog uses the origin remote automatically:

# Run inside your repo — no arguments needed
shiplog generate

# Or name any repo explicitly
shiplog generate owner/repo

# Everything merged in the last 30 days, written to a file
shiplog generate --days 30 -o CHANGELOG.md

# Since a specific date, only PRs merged into main, as JSON
shiplog generate owner/repo --since 2026-06-01 --base main --format json

Bot-authored PRs (dependabot, renovate, …) are skipped by default so the changelog stays customer-facing. Generation runs in parallel and automatically retries on rate limits, so large repos finish fast without dropping entries.

Options:

Flag Description
--token GitHub token (overrides env / gh CLI)
--base Only PRs merged into this base branch
--since YYYY-MM-DD Only PRs merged since this date
--days N Only PRs merged in the last N days
--limit N Max PRs to include (default 20)
--format markdown|json Output format (default markdown)
--output, -o Write to a file instead of stdout
--title Custom heading for the changelog
--no-group List chronologically instead of by category
--no-links Omit PR number links
--include-bots Include bot PRs (off by default)
--concurrency N Parallel generation requests (default 8)

Transform a single PR (no GitHub needed)

Handy for testing or one-off entries — mirrors the website demo.

shiplog single "fix: pagination offset bug in list endpoint" \
  --body "Closes #412. Switched to cursor-based pagination."

Add --format markdown or --format json for machine-readable output.

Configuration

Env var Purpose
SHIPLOG_API_KEY Shiplog API key (alternative to shiplog login)
SHIPLOG_API_BASE Override the generation API URL
SHIPLOG_CONFIG_DIR Override config directory (default ~/.config/shiplog)
GITHUB_TOKEN / GH_TOKEN GitHub auth

How it works

GitHub PRs ──▶ Shiplog API (/api/generate) ──▶ {category, title, body} ──▶ Markdown / JSON

The generation API is a Cloudflare Worker. Authenticated users get metered access based on their plan. Anonymous users get a small demo allowance.

Project details


Download files

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

Source Distribution

shiplog_cli-0.1.0.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

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

shiplog_cli-0.1.0-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file shiplog_cli-0.1.0.tar.gz.

File metadata

  • Download URL: shiplog_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for shiplog_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 12bc3d83d72087bde01f5b39af420516cb50d7d6508cd1a74d3e4284fff285fb
MD5 21faf44f95d6e327d12cf8b171ec7b90
BLAKE2b-256 0df059ac97a334970bd9f8f41447c8f87695f548ac45e546f46f8166bec3c45c

See more details on using hashes here.

File details

Details for the file shiplog_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: shiplog_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for shiplog_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb685e17d67fd882ccc2d9c62b42ab4f36b4f1d686cd79e4593fbae97ffe068e
MD5 2a57f8e181823ca2427c1a1455a32594
BLAKE2b-256 7d19f064ce98d806ff4911424124aa576b04747c3c4edf554f96349a09b55924

See more details on using hashes here.

Supported by

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