It walks git tags, finds merged PRs between releases, buckets them into categories, and renders MDX (Docusaurus in our case) organized by year -> month -> category -> version. There is an optional LLM mode that produces structured JSON via a Pydantic schema for PR entry and monthly summaries.
Example:
python .scripts/changelog/generate.py --year 2025 --github --ai --ai-model gpt-5.2 (or --help)
Gotcha: if you use --github, set GITHUB_TOKEN or you will most likely hit GitHub rate limits.
Repo script: https://github.com/confident-ai/deepeval/blob/main/.scripts/...
Disclosure: I maintain DeepEval. Happy to answer questions and take feedback.
dustfinger•3w ago
If anyone tries my script on their repo and runs into issues, I am happy to help troubleshoot. Also, the output is actually plain Markdown (no JSX). The only Docusaurus specific bit is the YAML frontmatter header. If you are not using Docusaurus, you can just strip that header and rename .mdx to .md.