Escaping the Optimization Trap: My Automated Publishing Setup

I don't "love" Obsidian yet. I'm barely a beginner.
I definitely don't "love" Webflow. It feels like overkill for a simple blog.

But I have been stuck in a loop of "Over Optimization" for months. I wanted to build this website in public, but the friction of just getting a thought online was stopping me.

So, instead of learning to code from scratch, I "vibe coded" a solution with Cursor (using Claude Sonnet 4.5 and Gemini 3.0 Pro).

This post? It's my "Hello, World!" — except instead of printing to a terminal, I'm publishing to the web.

Building in Public: Post #001

This is the inaugural post of the Over Optimized build log.
* Time to Build: ~4 hours (including debugging terminal configs and API versions).
* Goal: Create a "zero-friction" publishing button.
* Status: Success.

The Goal

I needed a way to draft a thought in my local notes, hit one button, and see it live on my site.

Here is the surprisingly simple architecture we built:

graph LR
    A[📝 Obsidian<br/>Markdown + Frontmatter] --> B[🐍 Python Script<br/>publish.py]
    B --> C{Status: live?}
    C -->|Yes| D[🔄 Convert to HTML]
    C -->|No| E[⏭️ Skip]
    D --> F[📊 Generate Schema.org]
    F --> G[🚀 Webflow CMS API]
    G --> H[🌐 Live Site]

    style A fill:#e3f2fd
    style D fill:#fff3e0
    style G fill:#e8f5e9
    style H fill:#f3e5f5
  1. The Source: A simple folder in my Obsidian[1] vault (Notes) where I drop my thoughts.
  2. The Engine: A custom Python[2] script (written entirely by AI) that converts my Markdown to HTML.
  3. The Destination: The Webflow[3] CMS API, which receives the clean content.

What You'll Need

Tool Cost Setup Time Purpose
Obsidian Free 5 min Local note-taking
Python 3.8+ Free Pre-installed Run the script
Cursor Pro $20/mo 15 min AI code editor
Claude Sonnet 4.5 (via Cursor) Code generation
Gemini 3.0 Pro Free tier Additional AI assist
Webflow CMS $16/mo 10 min CMS hosting

Total Setup: ~30 minutes
Monthly Cost: ~$36 (Cursor Pro + Webflow CMS)

Note: While free alternatives exist, the paid tools significantly reduce debugging time and iteration cycles.

How to Automate Obsidian to Webflow (Step-by-Step)

The workflow is designed to be brain-dead simple so I can't procrastinate:

Step 1: Write your note

Create a markdown file in your designated folder.

Step 2: Add control metadata

At the top of your note, add frontmatter to control publishing:

---
headline: "Your Post Title"
slug: "your-url-slug"
status: "live"
description: "SEO description for search results"
---

Step 3: Publish

Run the script from your terminal:

python publish.py

The script scans your folder, grabs notes marked status: live, converts Markdown to HTML, and pushes them to Webflow via API.

The Real Insight: This isn't about building the perfect system. It's about building any system that removes the friction between "I have a thought" and "It's live."

Why Vibe Coding with Cursor Changes the Game

I am not a coder. I've been using the Cursor[4] editor for a few months, but building a custom API integration like this would have taken me weeks on my own. With Claude Sonnet 4.5[5] (via Cursor) and Gemini 3.0 Pro[6], we built, debugged, and launched it in one session.

This isn't about the tech. It's about breaking the paralysis. Now that the "pipeline" is built, I have no excuse. I can just write.

Is it truly "Zero Friction"? No. I still have to run a script. It might break. But it is infinitely better than the copy-paste formatting hell I was in before.

Current Status

What's Working:
- [x] Local Markdown workflow in Obsidian
- [x] One-command publishing via Python script
- [x] Automatic HTML conversion
- [x] Webflow CMS integration via API
- [x] SEO metadata control through frontmatter

Time to First Publish: 4 hours (including learning and debugging)

What's Next?

Now that the pipeline works, the natural progression:

  1. Dynamic Variable Injection: Add support for {{ variable }} syntax to inject live data from JSON files into posts at publish time. Perfect for dashboards and data-driven content.

  2. Google Search Console Integration: Connect GSC data to see which posts actually get traffic and what queries bring people in. Close the feedback loop.

  3. Permanent Ownership Layer: Archive published content to Arweave or IPFS so I have a cryptographically-verified, permanent record of my work — even if Webflow disappears tomorrow.

  4. Scheduled Publishing: Move the script to a cron job or serverless function so updates can publish automatically without manual intervention.

But for now, I have a "Publish" command. And it works.

---

### References [1] [Obsidian](https://obsidian.md/) - Markdown-based note-taking app [2] [Python 3.12](https://www.python.org/downloads/) - Scripting language [3] [Webflow CMS](https://webflow.com/cms) - Headless CMS platform [4] [Cursor](https://cursor.sh/) - AI-powered code editor [5] [Claude Sonnet 4.5](https://www.anthropic.com/api) - Code generation (via Cursor) [6] [Gemini 3.0 Pro](https://ai.google.dev/gemini-api/docs) - AI assistance for editing and iteration ### Technical Documentation **APIs Used:** - [Webflow CMS API v2](https://developers.webflow.com/reference/cms-api) - Publishing automation - [Schema.org HowTo](https://schema.org/HowTo) - Structured data markup **Python Libraries:** - [python-frontmatter](https://pypi.org/project/python-frontmatter/) - YAML parsing - [markdown](https://python-markdown.github.io/) - HTML conversion with `tables` and `fenced_code` extensions - [requests](https://docs.python-requests.org/) - HTTP client **Tools:** - [Google Rich Results Test](https://search.google.com/test/rich-results) - Schema validation - [Git](https://git-scm.com/doc) - Version control --- ### Version History | Version | Date | Changes | |---------|------|---------| | 1.0 | 2025-12-08 | Initial publication with SEO-optimized structure, requirements table, and step-by-step guide | *This article is version controlled for transparency. Content hash, license, and provenance data available in page metadata.*

By Tree. Edited with assistance from Claude Sonnet 4.5 and Gemini 3.0 Pro via Cursor AI. Publishing script coded in Cursor AI with assistance from the same.