Showing posts with label blog. Show all posts
Showing posts with label blog. Show all posts
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 `&lt;` instead of `<` _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)