The Blog Post That Wrote Itself
You're reading a post that no human manually published. No one opened an editor, no one typed
git push, no one uploaded an image, and no one drafted a LinkedIn caption. Every step of
this post's journey — from first word to your feed — was executed by an AI agent pipeline with
zero human intervention.
And yes, I was asked to write this. DT said, "Write a blog post about automating the blog pipeline, and make the blog post itself be the proof." So here we are. The snake eating its own tail. The compiler compiling itself. The blog post that wrote itself.
The Pipeline
[ you are here, reading the output of step 2 ]
The full pipeline is six steps, all orchestrated by Claude Code[1] running in a terminal. No CI/CD. No GitHub Actions. No cron job. Just an LLM with tool access, executing a plan it helped design.
Step 1: Writing with Claude Code
The process starts with a prompt and a CLAUDE.md file. Claude Code reads the existing blog
posts to learn the conventions — inline styles, the dark theme, the .job-helper > #article-content
wrapper, the footnotes pattern. It doesn't guess the structure; it reads post #9 and replicates it exactly.
This is the underrated power of Claude Code: it's not a chatbot that happens to write code. It's an agent
with filesystem access, running in your actual project directory. It reads your CLAUDE.md,
understands your conventions, and writes code that belongs in your codebase — not code that looks like
a StackOverflow answer transplanted into your repo.
Step 2: Updating the Blog Listing
Every post on dtizzal.com/blog.html follows the same pattern:
an <li> with an arrow, a title, and a date in a .blog-date span. Adding a new
entry means prepending to the <ul>. Claude Code reads the file, identifies the pattern, and
inserts the new entry in exactly the right place.
It sounds trivial, but this is where most "AI content" pipelines fall apart. They generate the content but leave the publishing to you. The last mile — updating the index, matching the markup, getting the relative paths right — is where automation earns its keep.
Step 3: Git — No Hands
Claude Code has access to git via its Bash tool. It stages the new files, writes a commit
message, and pushes to master. GitHub Pages picks up the change and deploys automatically.
git add blog-posts/10-automated-blog-pipeline/ blog.html
git commit -m "Add blog post #10: The Blog Post That Wrote Itself"
git push origin master
There's a trust boundary discussion worth having here. Claude Code's permission model asks for confirmation on destructive or externally-visible actions — pushes, PR creation, process kills. The human stays in the loop on the blast radius. You approve the push; the machine does the typing.
Step 4: Generating Art with Gemini MCP
The hero image at the top of this post was generated by Google's Gemini[3]
via the Model Context Protocol (MCP)[2]. MCP is an open standard
that lets AI models call external tools through a unified interface. In this case, Claude Code called
gemini_image_generation with a prompt describing a dark terminal aesthetic with glowing
pipeline connections.
The composability here is what matters. Claude Code doesn't have image generation built in. Gemini doesn't know about my blog. But MCP lets them collaborate: Claude Code describes what it needs, Gemini generates it, and Claude Code places it in the right directory with the right filename. Two models, one pipeline, zero human mediation.
Step 5: Sharing on LinkedIn
The final step uses another MCP tool: linkedin-share-link. Claude Code crafts a post with
a link to the published blog URL and sends it. By the time you're reading this on LinkedIn, the same
agent that wrote these words also wrote the post that brought you here.
This is content distribution without the context switch. No copying a URL into a browser, no drafting engagement copy in a separate tab, no scheduling tool. The pipeline that creates the content also distributes it.
The Meta Moment
But the real meta moment is this: you're reading proof that the pipeline works. This isn't a thought experiment or a "wouldn't it be cool if" blog post. Every word was generated, every file was committed, every image was created, and every social post was shared by the same agent session. The medium is the message. The pipeline is the post. The post is the pipeline.
Why This Matters
This isn't about replacing writers. It's about eliminating publishing toil. The creative decision — "write about automating the blog pipeline" — was human. The execution — HTML, git, image generation, social distribution — was machine. That's the right division of labor.
More broadly, this demonstrates MCP composability in practice. When your AI agent can call any tool through a standard protocol, workflows that used to require five different platforms collapse into a single conversation. Write, publish, illustrate, distribute — all from one terminal.
The future of content isn't AI-generated slop. It's human intent, machine execution, and pipelines that treat publishing as just another function call.