Blog...
A blog posts...
The content for a blog post is loading...
A blog posts...
The content for a blog post is loading...
Here's my current workflow, why it's frustrating, and what the future of AI-assisted blogging might look like.
Mar 5, 2025
I want blogging to feel effortless and creative—something closer to collaborating on ideas with a co-founder. Something that frees me up to spend my limited energy on brainstorming, taking notes, and crystalizing powerful ideas.
In theory, AI should finally allow us to stop worrying so much about grammar, structure, and formatting. It should give us a blogging experience a bit like "vibe coding" (If you need it, here's an overview on vibe coding by @MatthewBerman).
And yet… here in 2025, it's still incredibly frustrating. The tools just aren't quite there. More often than not, I find myself spending more time wrestling with processes and workflow inefficiencies than I do actually creating.
I've cobbled together a workflow that gets it done well enough for now. I'm mixing various models, custom instructions, and far too much manual intervention. But increasingly, I'm annoyed with how suboptimal it is.
Here's my current workflow, why it frustrates me, and what I think an ideal blogging process might look like.
Usually, this starts with a paper I've read, an idea I've been chewing on, or an intriguing conversation I had recently. I've largely been inspired to lower my bar for this by @simonw's approach to link blogging). That's not to say Simon's posts are low quality, but rather that he's willing to share things that are interesting to him without feeling the need to write a full essay on them.
I'm interpreting this to be more a set of notes for myself that I'm just willing to share.
This project has custom instructions tailored specifically for my blogging process.
First, I kick off a new chat session in my "blog" project. Here's what the custom instructions look like:
Once that's set up, I kick things off with "o3-mini." I outline the core idea behind the post—why it matters to me, what I'm exploring, and how I plan to approach it.
Next, I load all the background content—PDFs, screenshots, links—directly into the chat as I read them. Doing it this way ensures that ChatGPT has as much context as possible.
When I'm done, I invoke "Write Mode." First, I usually use o3-mini-high + search to generate a structured draft:
Then I jump over to GPT-4o in Canvas to refine the draft—though honestly, I find GPT-4.5 way better at refinement but, unfortunately, 4.5 isn't available in ChatGPT's Canvas yet.
Canvas itself is an ok editor, but it but often mishandles outside references, mangles image references, and lacks modern knowledge (so will often rewrite things like o3-mini to gpt-4o-mini)
Pretty quickly, I move the whole mess into VS Code to finalize things.
Manual work begins:
Finally, I commit to GitHub, and it's Vercel that handles the rest.
It's not all bad news, though. A few good things stand out:
Separately, I’ve built a little app for sharing blogs on 𝕏 and I'm pretty happy with it. It's iterative, naturally has my voice (since it drafts directly from my content), and feels like having my own little editorial team working in the background.
I use Trigger.dev to manage the entire flow. Here's how it works under the hood:
Kicking things off: The task starts with a new URL being passed in. The agent takes this page URL, scrapes its HTML content, and uses Google Ai's gemini-2.0-flash and @aisdk to turn it into a structured article object.
Enhancing entities: GPT-4o scans through the structured content, identifying mentioned entities (people, companies, products, etc.). Then, it checks Clearbit’s API to see if these entities have associated Twitter handles, so we can mention them directly in our tweet threads.
Enriching images: Next, GPT-4o takes a closer look at any images in the post, generating detailed alt-text descriptions and attaching them back to our content object, keeping a full structured representation handy.
Thread drafting loop: Here's the real magic—an iterative loop between a Writer/Refiner model (GPT-4.5) and an Evaluator model (o3-mini):
First up, GPT-4.5 writes out an initial thread draft around a clear format:
Then, o3-mini acts as a critical evaluator, scoring the thread's predicted engagement potential based on rules and historical engagement stats baked into the prompt. It returns positive feedback, constructive suggestions, and an overall engagement rating.
Depending on its score (I set 75% engagement or higher as the cutoff), the thread either heads directly to me for final approval or loops back to the Writer/Refiner for another improvement round.
Final review and tweak: Once the AI loop has produced something good enough, I give it a quick final pass—just tiny adjustments usually, confirming mentions, and ensuring it sounds like me. When I'm satisfied, I hit the "post" button, and Trigger.dev kicks off a final task to post directly.
This sparks joy. The final thread is shippable, but lets me edit. And publishing is a single button (a different trigger.dev task that posts to 𝕏).
Increasingly, I'm sure the answer is yes.
And if we really want blogging to feel like vibe coding, we'll probably need something new—a writing IDE that functions differently from anything we currently have.
This is one of those classic founder moments: I deeply want this app to exist, but... I don't really want to be the one to make it.
Maybe someone out there can vibe code it. When you're done, send me a link. I'll happily be user number one.