Michael J Coyne

Michael J Coyne

Software Engineer & Architect

Location:

New York, NY

Company: Huntress

Publishing Jekyll Posts as Markdown

Published on April 16, 2026

In the era of agentic development and workflows, plaintext and Markdown content has quickly become the de facto way of capturing and sharing context for LLM sessions.

Leaning into this trend, I’ve added a small Jekyll plugin to my site that will publish the original markdown content when the site is built. Simply replace the .html at the end of a post’s URL with .md and you will be able to get the content in markdown format.

Adding support was easy. First, I created a plugin under _plugins/markdown_output.rb with the following hook:

# Write raw markdown to output directory
Jekyll::Hooks.register :posts, :post_write do |post|
  output_file = File.join(post.site.dest, "posts", File.basename(post.path))

  File.open(post.path) do |markdown|
    File.open(output_file, "w+") do |output|
      output << markdown.read
    end
  end
end

Next, I create a small Liquid filter in _plugins/markdown_output.rb to transform the page’s HTML URL into an .md URL:

module Jekyll
  module MarkdownLinkFilter
    def to_markdown_link(input)
      input.gsub(/\.html\z/, ".md")
    end
  end
end

Liquid::Template.register_filter(Jekyll::MarkdownLinkFilter)

Lastly, in _layouts/post.html we can add a link to the Markdown version with the following HTML:

<a href="/posts/2026-04-16-publishing-jekyll-posts-as-markdown.md">
  View as Markdown
</a>

How easy is that? All the posts on this site will have a link below the post header to view the content as Markdown.