Push MD — Git Sync for WordPress Content
Push MD makes WordPress available as a Git remote for supported content. Posts and pages can be cloned as readable Markdown, edited in a local editor or coding-agent workspace, committed, and pushed back through WordPress.
WordPress stays in charge. Push MD reads and writes through WordPress APIs, checks the current user’s capabilities, creates WordPress revisions for accepted content changes, and rejects stale pushes before they can overwrite newer WP-Admin edits.
This gives Markdown-first teams and coding agents a Git-shaped workflow without moving the source of truth out of WordPress.
Beta: Push MD is an early release for experimentation. Try it on a staging site first and keep your normal WordPress backups in place.
What you can do
- Clone supported WordPress content with a normal Git client.
- Edit posts and pages as Markdown.
- Review changes with standard Git diffs before pushing.
- Pull WP-Admin edits before continuing local work.
- Let authenticated coding agents work in an ordinary checkout.
- Keep WordPress roles, revisions, previews, publishing, and rendering in the loop.
- Work with block theme files, Global Styles, and Gutenberg Guidelines when available.
How it works
The Git endpoint on a site with Push MD active is:
/wp-json/git/v1/md.git
The repository branch is trunk. Push MD accepts pushes to trunk only.
Users authenticate through WordPress REST authentication. The built-in WordPress Application Passwords feature is the usual Git-over-HTTPS option, and other REST authentication plugins can work when they authenticate the request as a WordPress user before Push MD’s permission checks run.
A checkout can include:
post/{slug}.mdfor posts.page/{slug}.mdandpage/{parent}/{child}.mdfor pages.wp_template/{slug}.htmlandwp_template/{theme}/{slug}.htmlfor templates.wp_template_part/{theme}/{slug}.htmlfor template parts.wp_navigation/{slug}.htmlfor navigation posts.wp_theme/{theme}/theme.jsonas read-only context.wp_global_styles/{theme}.jsonfor editable Global Styles overlays.wp_guideline/skills/{slug}/SKILL.mdfor Gutenberg Guidelines skills and Push MD’s built-in agent skills.AGENTS.md,CLAUDE.md,.agents/skills, and.claude/skillsfor agent guidance when available.
Markdown files use a small front matter contract: title, date, status, and optional description. File paths identify content.
Structural block files use raw Gutenberg block markup with no front matter so they can round-trip through WordPress without being forced into Markdown.
Safety model
Push MD is designed to fail closed. Before applying a push, it validates the changed files across the pushed range. If any file or later commit is unsafe, the whole push is rejected before WordPress content is changed.
Push validation rejects stale remote state, unsupported paths, path traversal, malformed front matter, invalid block markup, invalid Global Styles JSON, and edits to read-only theme JSON.
Deleted post and page files move the matching WordPress content to trash instead of permanently deleting it. Re-adding the same path restores the trashed object instead of creating a duplicate.
Template, template part, navigation, and Global Styles deletes or renames are rejected until reset semantics are explicit.
Try a read-only demo
You can clone the public read-only demo remote before installing Push MD:
git clone https://pushmd.blog/wp-json/git/v1/md.git my-site
That demo lets you inspect the file tree and Markdown shape. Pushes require Push MD on your own authenticated WordPress site.