
AI Writing Assistants
So what even is an AI writing assistant? Think of it like a very well-read friend who has absorbed an enormous amount of …
I have started and stopped blogging more times than I care to admit. The ideas are never the problem. It is everything around the ideas — the setup, the formatting, the front matter, the images, the deploy — that slowly grinds the whole thing to a halt. By the time I have wrestled a post into shape, I have lost the energy I had when the thought first hit me.
So I spent some time recently rebuilding the whole thing from scratch, this time with one goal: make the distance between a thought and a published post as short as possible.

The core of the setup is something I have had for a while but never fully committed to. The blog runs on Hugo, a static site generator that compiles everything to plain HTML and pushes it to S3. Fast, cheap, no database, no server to maintain.
What makes it interesting is that the content/ folder inside the repo is also an Obsidian vault. You open it directly in Obsidian and it looks like a notes app. Every blog post is just a Markdown file with some front matter at the top. Write in Obsidian, commit, push, done.
The problem I always ran into was friction at the edges. Drag an image into Obsidian and it inserts a relative path that breaks when Hugo builds the site. Front matter has to be exactly right or the post does not show up. Remembering the right Hugo commands for showing draft posts versus published ones. Small things, but they add up and they add up fast when you are already on the fence about sitting down to write.
Claude Code is Anthropic’s CLI tool — you open it in a repo and it has full context of everything in that directory. It can read files, run commands, and write code. Most people use it for software projects, but there is no reason it has to stay there.
I set it up with a handful of slash commands specific to this blog. They live in .claude/commands/ and they are just Markdown files that tell Claude what to do when you invoke them. The whole thing took an afternoon to build out, and now the workflow is genuinely different.
The image path issue, for example, is completely solved. There is a Hugo render hook in the theme that automatically adds the leading slash to any image path at build time. Obsidian inserts media/images/blog/fitness/photo.jpg and Hugo serves it as /media/images/blog/fitness/photo.jpg. I never have to think about it.
There are four commands I use regularly now.
/setup handles first-time setup on a new machine — installs Hugo, Go, npm dependencies, initializes the theme submodule, and walks through registering the Obsidian vault. One command and you are ready to write.
/new-post is the one I use most. It asks for a title, a short version for the card UI, and which topic the post belongs to. If you have content ready you paste it in and Claude structures it and fixes any typos without touching your actual words. If you have nothing yet it creates a skeleton with section headings. Then it opens the new file directly in Obsidian so you can start writing immediately. The whole thing takes about thirty seconds.
/preview starts Hugo locally with draft posts visible. Open http://localhost:1313 and you can see exactly what the post will look like before it goes live, including any posts still marked as drafts.
/cross-post is for when a post fits two blogs. I run three separate blogs — one for tech, one for retro computing, and one for lifestyle and habits — and occasionally something belongs in two of them. This command copies the post to the target blog, adjusts the topic, and adds a canonical attribution line so both versions link back to the original.
The honest answer is that it feels like the friction is gone without the soul being gone. Claude structures the file and fixes the typos. Everything else is still me — the idea, the experience, the opinion, the specific details that make a post worth reading. I did not want an AI to write my blog. I wanted it to handle the paperwork so I could focus on the writing.
Whether I will actually post more consistently because of this, I genuinely do not know. But for the first time in a while, the setup is not the excuse.

So what even is an AI writing assistant? Think of it like a very well-read friend who has absorbed an enormous amount of …
My actual daily workflow I use Claude for almost every post I write on this site. Not to write the posts — to work …