Monday, 23 October 2023
Markdown (and Mermaid) on Blogger in 2023
Building on the fine work of [cs905s](href="https://github.com/cs905s/md-in-blogger") on GitHub, I wanted to Markdown-enable my own blog and thought the process could be brought up-to-date - seven years have passed after all, and _that_ work was in turn based on something from [2011](http://blog.chukhang.com/2011/09/markdown-in-blogger.html)!
Blogger has, slowly but surely, changed since those instructions were written, so at the very least, here's an updated guide on how to do it.
### Extra Goals
I had a couple of extra requirements over the previous solution, however.
- I want to write **my whole post** in [GitHub-flavoured Markdown](https://github.github.com/gfm/); I use it all day (for PR descriptions, in Slack, writing documentation) and I'm pretty sick of the verbosity of `BOO` compared to `**BOO**`!
- I also _never want to have to type `<` ever again_ so I want the script to perform that replacement for me.
- I have fallen in love with [Mermaid](https://mermaid.js.org/) for Markdown-inspired/embedded diagrams and want them to _Just Work_ in my blog in the same way GitHub does it, with a ` ```mermaid ... ``` ` code fence
For a fairly-techy blog, just those changes, plus being able to use backticks and other speedups, _just like it's GitHub/Slack_ is really valuable to me.
Here's an example embedded Mermaid flowchart, just because I can now:
```mermaid
flowchart TD
A[Have Blogger-hosted Blog] -->|Configure Markdown| B(Write blog post)
B --> C{Has
markdown-enabled
label
?}
C -->|Yes| D[Render Markdown to HTML post body]
D --> E[Hide original Markdown area]
C -->|No| F[Leave post body untouched]
F --> G{Has
pre with class markdown
?}
G -->|Yes| H[Render pre to HTML]
E --> I{Has
pre with class mermaid
?}
H --> I
I --> |Yes| J[Render with Mermaid.js]
I --> |No| K[Done]
```
So once you've added a `markdown-enabled` **Label** on your post, the entire **blog post body** will be considered the Markdown source. I decided to "opt-in" like this as I've got a couple-of-hundred non-Markdown-annotated blog posts that I didn't really fancy going back and opting-out of. Well, actually I did try to automate this but lost data in the process, so aborted that little yak-shaving side-mission.
The script will also remove that particular label from the DOM so nobody will see that "load-bearing label" 😉.
The source is [here on GitHub](https://github.com/themillhousegroup/md-in-blogger), and I'll endeavour to keep it working well on the Blogger platform over time. Check the README for the step-by-step instructions if you want to Markdown-enable your own blog!
Labels:
blog,
blogging,
dev,
github,
hacking,
markdown,
markdown-enabled,
opensource,
productivity
Subscribe to:
Posts (Atom)