My Ideal Blogging Workflow

Posted:

I don't know why, but I strongly dislike writing content of any substance in a web-based text editor. It can be the slickest editor ever, with all the bells and whistles, but for some reason, It just doesn't feel right. I scoff at people who measure the snappiness of their local terminal app, but I probably shouldn't because I imagine latency has something to do with why I just don't enjoy writing real content online.

So, I always want a desktop application for writing. And, since the Internet gods are never going to give me back the BEST word processor ever written (WordPerfect 5.1) I've moved on to using Markdown in Obsidian.

I'm also pretty lazy. I like to keep things in one Obsidian vault, and I certainly don't want to be copying and pasting text to post it to a blog. So, I want a single folder in my Obsidian vault to hold all my writing for my blog posts.

Currently, I'm obsessed with the speed of static web sites. I'm working on my own Static Site Generator, but that will take a while because I tend to get performance anxiety when working on my own projects.

The secret of getting ahead is getting started - Mark Twain

So, I installed eleventy and am using that for now. (version: @11ty/eleventy@2.0.1)

Out of the box, eleventy has a few things I do not like.

  1. It makes me use relative paths from my content directory to my layout and include directories. I want my content in a folder in Obsidian, my SSG in it's own place and layout, CSS, and JavaScript files wherever they suit me (but, probably in in the same place as the SSG code).
  2. It doesn't seem to convert Markdown Images into HTML. I'm sure I can find a plugin for that.
  3. Right now, I'm creating a folder for each post, and putting an index.md file in that folder. I would prefer to be able to give the notes meaningful names, and have the SSG deal with putting things in folders with an index.html file.
  4. I should probably get the CSS and fonts for my blog hooked up into Obsidian, so it will look more like my blog as I write. But, right now, I'm really enjoying the handwriting-like font that I'm using in Obsidian, so I'll probably wait on that.
  5. Now that I'm pretty sure eleventy will generate my content properly, I should automate my deployment to AWS as well. With less friction, it will be easier to maintain the blog/digital garden.

For now, here's my workflow.

  1. Create a folder in my Obsidian vault, and add an index.md file to it.
  2. Use templater to add the blog metadata to the blank file. Two important starter metadata attributes are permalink: false and eleventyExcludeFromCollections: true, which keep what I'm writing in draft mode, which will be important once I get automated deploys going.
  3. Brain dump into the index.md file.
  4. In the background, ChronoSync Express sends all the markdown files in my blog folder over to my eleventy content folder, which converts my content from markdown to HTML, plops it into my template file, and copies it over to my destination directory.
  5. When I'm ready, and I've proof-read everything, I open a terminal in my destination directory, do a git commit, and push the content to GitHub.
  6. Behind the scenes AWS Amplify monitors GitHub, and deploys the blog every time I push the code.

All in all, it works. It will allow me to quickly write down things as they pop in my head, and then deploy them when ready. But, there's still room for improvement.

Ideally, I will create a markdown note in Obsidian. I will name it sensibly, and use templater to give it the tags. I will add images and links as I normally do when writing. I will use my pretty callouts and other Obsidian niceties to make things look nice in markdown.

When I'm finished and have proofread everything, I would use an Obsidian command to switch the post out of draft mode, and that would be the end of that. Behind the scenes, my SSG would rename things, copy over the content and images, convert it, commit it to git, and push it up for AWS Amplify to deploy.

Update: I can name my markdown files as I would like