Publish a post as one commit.
Write posts as MDX on your machine, preview them, and publish each one to your site’s repo as a commit that holds only that post.
npm install -g @excellent-so/pressroomnpm
What you get
- 01
Write where your files are
Each post is one .mdx file in a folder. The viewer edits it on disk, with the preview beside it.
- 02
One post, one commit
Publish writes the post into your site’s content folder, commits that one file and pushes. The history reads one post at a time.
- 03
See it before it ships
A dry run shows the exact file it would write. Nothing changes until you publish.
Dry run first
Dry run shows the exact file publish would write into your site, frontmatter and all, and touches nothing. What you see is what will be committed.

One post, one commit
Publish wrote the post into content/posts, committed that one file and pushed it. Other changes in your site stay out of the commit, and the post is now marked Published with today's date.

Connect your site
Point pressroom at your site's git checkout. It checks the folder, the git repo and the content folder, then saves the path to pressroom.config.mjs, so Publish works without a restart.

MDX, in the dark
The dark theme, on a post that uses an MDX component. The preview draws the markdown and shows imports and components as labelled code, because only your site's build can render them.

How it works
- 1
Point it at your site
pressroom init - 2
Write a post
pressroom new "Hello, world" pressroom open - 3
Publish it
pressroom publish hello-world
Details
- Works with
- Any static site that builds .mdx into pages: Astro, Next.js, Eleventy
- Needs
- Node 20 and git
- Viewer
- 127.0.0.1 only. It refuses writes from other sites’ pages
- Dependencies
- None
- License
- MIT
Why I made it
pressroom publish <slug> commits exactly one file and pushes it.
Matt Waite
Try pressroom.
Free and MIT licensed. Coming soon: the code goes public at launch.
npm install -g @excellent-so/pressroomnpm