A blog for the Jupyter Book subproject.
This blog is a small MyST site along with a javascript plugin for blogging.
To run it locally, take these steps:
-
Install NPM and MyST by following the MyST installation instructions.
-
Install the plugin requirements with NPM:
$ npm install
-
Build the site:
$ myst start
The posts/releases/
folder contains automatically generated release posts for all repositories in the Jupyter Book organization.
- Make the release on GitHub
- Re-build the blog
The blog action will catch the latest release and include it in the list, sorted by dates.
The release posts are generated automatically using the src/generate_release_notes.py
script, which:
- Fetches all repositories from the
jupyter-book
GitHub organization - Retrieves all releases from each repository using the GitHub API
- Sorts releases by date (newest first)
- Generates numbered markdown files with proper frontmatter
- Formats @mentions with backticks for better readability
- Adds formatted dates to titles (e.g., "July 6th, 2025")
Files are named with a numbered prefix to ensure proper ordering until we make it possible to list blog posts sorted by date:
001-{repo-name}-{release-title}.md
(newest release)002-{repo-name}-{release-title}.md
- ...
224-{repo-name}-{release-title}.md
(oldest release)
To generate the release posts locally:
$ python src/generate_release_notes.py
Requirements:
- GitHub CLI (
gh
) must be installed and authenticated - Python 3 for processing JSON data
The release posts are automatically generated during the CI/CD build process (see .github/workflows/deploy.yml
). This ensures that new releases are always included in the blog without manual intervention.