Automating My Blog

I went through a lot of different workflows when trying to create this site and this blog. To be honest, I focused far too much on the tooling and not enough on just writing.
With that said, I’ve settled in on the most basic way of creating content I was already doing - with Markdown files. That’s it. If it’s not in markdown, I kind of don’t care about it. Being a huge fan of Obsidian already, taking pages and getting them onto the Internet was much easier than I really could have imagined when I started all of this.
Step One: What’s my platform?
Wordpress, Drupal, Astro, Ghost, Hugo, Jekyll… I tried them all. I spent so much time trying to get the platform to work right I skipped over just getting what I wanted to say out there. Being a huge fan of Obsidian for all my brain-dumps, it was an easy choice to use Markdown for web pages. Cool.
I also don’t really care about a reactive website - rendering on the fly, lots of JavaScript, whatever. I want this to be simple and fast. So, static files it is.
And it was my usage of AI - specifically my locally-run Hermes Agent - that helped me figure out the path to least resistance.
Step Two: What’s my hosting?
There’s no server behind this site. No VPS, no PHP, no database — just a git push and about sixty seconds of patience. Here’s how it works.
The chain
GitHub → Cloudflare Pages → jessmarie.me
That’s the whole pipeline. Every time I push to the main branch of my blog repo, Cloudflare picks it up and does the rest automatically.
Step by step
-
Write. I edit markdown files locally — posts live in
src/content/blog/, pages like the About page live insrc/pages/. Each markdown file starts with some frontmatter (title, date, tags) and then the content. -
Build. Cloudflare Pages checks out the repo on their servers and runs a build —
pnpm install && astro build. That command turns the whole thing (markdown, templates, CSS) into a directory of flat HTML files. No server-side rendering, no runtime. Just plain .html. -
Deploy. The built output gets pushed to Cloudflare’s edge network — hundreds of data centers around the world. When someone visits jessmarie.me, Cloudflare serves the files from the nearest location. It’s fast.
-
Repeat. Write, push, done. The whole cycle takes about a minute.
Why this works for a personal blog
- Free. Cloudflare Pages gives unlimited bandwidth and 500 builds per month at no cost. A personal blog won’t come close to that.
- No maintenance. No server updates, no security patches, no database migrations. The site is static files on a CDN.
- Rollbacks are one click. If a deploy breaks something, I can go back to any previous build from the Cloudflare dashboard.
- Preview URLs. Every branch push generates a preview URL like
abc123.blog.pages.devso I can check how something looks before it goes live. I will detail that exact setup separately for reference.
The not-so-secret sauce
The site is built with Astro using the Bear Blog-inspired theme by Harley Wilson. Astro compiles markdown into static HTML at build time, which is exactly what you want for a simple blog — no JavaScript runtime, no framework overhead on the client.
The whole thing is public on GitHub — which is also how Cloudflare knows when to rebuild.
That’s it
No deployment rituals, no ssh’ing into a box, no certs to renew. I write in Markdown, push, and the internet gets an updated copy in about a minute. I’ve spent more time overthinking tooling than I care to admit, and this is the simplest thing that’s just worked.