Official documentation: https://github.com/gis-ops/wordpress-markdown-git This WordPress Plugin lets you easily publish, collaborate on and version control your [ Markdown, Jupyter notebook ] documents directly from your favorite remote Git platform, even if it’s self-hosted . The advantages are: Wr
PricingFree downloadThe WordPress.org download is free. Pro versions, add-ons or external services may cost extra.
CompatibilityRequires WordPress 5.0.0 and PHP 7.0.
SourceWordPress plugins · Oct 20, 2026
01 / Source details
About this tool.
Official documentation: https://github.com/gis-ops/wordpress-markdown-git
This WordPress Plugin lets you easily publish, collaborate on and version control your [ Markdown, Jupyter notebook ] documents directly from your favorite remote Git platform, even if it’s self-hosted .
The advantages are:
Write documents in your favorite editor and just push to your remote repository to update your blog instantly
Use the power of version control: publish different versions of the document in different posts, i.e. from another branch or commit than latest master
Easy to update by your readers via pull requests, minimizing the chance of stale tutorials
The following document types are currently supported:
Markdown
Jupyter notebooks ( only for public repositories )
The following platforms are currently supported:
Github
Bitbucket
Gitlab
Usage
Note , this plugin uses Github’s wonderful /markdown API to render to HTML. This comes with 2 caveats:
01Unless authenticated, the rate limit is set at 60 requests per minute. Since v1.1.0 the plugin is capable of statically caching content . In case that’s not dynamic enough for you, your only option currently is to not use any cache in which case every document will be pulled from your provider every time someone opens it on your site. Then it’s strongly recommended to create a Github access token and register it with the plugin. Then the rate limit will be set to 5000 requests per hour. See Global attributes section for details on how to do that.
02The Markdown content cannot exceed 400 KB, so roughly 400 000 characters incl whitespace. If not a monographic dissertation, this should not be an applicable limit though.
Shortcodes
The plugin features a variety of shortcodes.
Publish documents
The document-specific shortcodes follow a pattern of [git-<platform>-<action>] , where
<platform> can be one of github : if you use Github as your VCS platform
bitbucket : if you use Bitbucket as your VCS platform
gitlab : if you use Gitlab as your VCS platform
<action> can be one of
markdown : Render your Markdown files hosted on your VCS platform in Github’s rendering style
jupyter : Render your Jupyter notebook hosted on your VCS platfrom ( only for public repositories )
checkout : Renders a small badge-like box with a link to the document and the date of the last commit
history : Renders a <h2> section with the last commit dates, messages and authors
Manipulate rendering style
Additionally, there’s an enclosing shortcode [git-add-css] which adds a <div id="git-add-css" class="<classes_attribute>" to wrap its contents. That way you can manipulate the style freely with additional CSS classes. Follow these steps:
03Add a CSS file to your theme’s root folder, which contains some classes, e.g. class1 , class2 , class3
04Enqueue the CSS file by adding wp_enqueue_style('my-style', get_template_directory_uri().'/my-style.css'); to the theme’s functions.php
05Add the enclosing git-add-css shortcode to your post with the custom CSS classes in the classes attribute, e.g.: [git-add-css classes="class1 class2 class3"] [git-gitlab-checkout url=...] [git-gitlab-markdown url=...] [git-gitlab-history url=...] [/git-add-css]
Attributes
Each shortcode takes a few attributes, indicating if it’s required for public or private repositories:
Attribute Action Public repo Private repo Type Description
url all except git-add-css :ballot_box_with_check: :ballot_box_with_check: string The browser URL of the document, e.g. https://github.com/gis-ops/wordpress-markdown-git/blob/master/README.md
user all except git-add-css :negative_squared_cross_mark: :ballot_box_with_check: string The user name (not email) of an authorized user
token all except git-add-css :negative_squared_cross_mark: :ballot_box_with_check: string The access token/app password for the authorized user
cache_ttl all except git-add-css :negative_squared_cross_mark: :negative_squared_cross_mark: integer The time in seconds that the plugin will cache, only for cache_strategy=static .
cache_strategy all except git-add-css :negative_squared_cross_mark: :negative_squared_cross_mark: integer Only static caching is implemented so far. dynamic caching is on the way!
limit history :negative_squared_cross_mark: :negative_squared_cross_mark: integer Limits the history of commits to this number. Default 5.
classes git-add-css :ballot_box_with_check: :ballot_box_with_check: string The additional CSS classes to render the content with
Global attributes
Since most attributes will be the same across the entire system, this plugin offers the possibility to set all attributes globally except for url :
In the menu Plugins ► Plugin Editor , choose “Documents from Git” and enter your preferences in the includes/config.json .
Note , setting the attributes manually in the shortcode has always precedence over any settings in includes/config.json .
Caching
Often we need to prioritize speed when loading content and, in addition, it is very costly to fetch, load and format the content every time we need to read the content of the post.
This plugin soon offers 2 methods for caching, static and dynamic which can be set via the cache_strategy property.
Static caching ( cache_strategy=static )
This is the default strategy, as it doesn’t require any user action.
The property cache_ttl sets how many seconds the content cache will keep alive.
Currently there’s no way to flush the cache manually. However, changing cache_ttl or the history limit will create a new cache.
Dynamic caching ( cache_strategy=dynamic )
This is not implemented yet . See #20 for details.
Token authorization
You need to authorize via user and token if you intend to publish from a private repository. You don’t need to authorize if the repository is open.
However, keep in mind that some platforms have stricter API limits for anonymous requests which are greatly extended if you provide your credentials. So even for public repos it could make sense. And unless you use this plugin’s caching capabilities , it’s strongly recommended to register a Github access token regardless of the VCS hosting platform, see the beginning of the chapter .
How to generate the token depends on your platform:
Github: Generate a Personal Access Token following these instructions
Bitbucket: Generate a App Password following these instructions
Gitlab: Generate a Personal Access Token following these instructions
This plugin needs only Read access to your repositories. Keep that in mind when creating an access token.
Examples
We publish our own tutorials with this plugin: https://gis-ops.com/tutorials/.
01Install WP Pusher (https://wppusher.com) via ZIP and activate
02Install from Github via WP Pusher from gis-ops/wordpress-markdown-git
03Activate and add shortcode to your posts.
Or install the latest code as ZIP from https://github.com/gis-ops/wordpress-markdown-git/archive/master.zip
03 / Source details
Frequently asked questions.
Does the plugin offer a UI
Yes, since v2.0.0 the plugin has a subpage in the main Settings menu.
Does the plugin support caching?
Yes, since v1.1.0 the plugin supports static caching of all relevant information. See the “Caching” section for details.
Are relative links supported?
No, relative image links (e.g.  ) cannot be processed by this plugin. Please see the notes in the documentation for ways to work around this limitation.
Can I host the source file in a private repository?
Yes, you can, if you provide the plugin’s config.json with the necessary credentials for your platform (see documentation for details). However, be aware that all image URLs you are referencing are openly accessible or provide the necessary authentication means. Also see #13 and the documentation for further details.
Website LLMs.txt and LLMs-Full.txt Generator is an LLMs.txt generator and llms-full.txt generator for WordPress. It helps site owners generate, manage, preview, validate, and serve AI discovery files from published public content. Use it to create structured /llms.txt and optional /llms-full.txt end
EngageDock AI is a customizable floating contact widget for WordPress websites that want more leads and faster visitor communication. It helps small businesses turn website traffic into calls, texts, emails, and callback requests from one clean contact panel. Key Features: Click-to-Call – One tap ca
Altify AI is an auto ALT text and AI ALT text plugin for WordPress images. It helps generate descriptive image ALT text for accessibility and image SEO. Use bulk image ALT text tools for your Media Library, generate featured image ALT text automatically, and scale WooCommerce image ALT updates with
The Accepted Payment Methods plugin is a straightforward, lightweight solution that enhances your website by displaying visually appealing icons of the payment methods you accept. This plugin is ideal for a variety of websites, including e-commerce platforms, service-oriented websites, and informati