tl;dr
We introduced Scratch by using Scratch to introduce itself. I pointed Claude at whalesync.com, our live Webflow site, and had it add internal links to our most-visited blog posts and normalize 153 post titles. Every edit came back as a diff. I approved most, rejected some, had Claude write a validator mid-run, and published about 170 changes back to the live site, all in around fourteen minutes.
The whole run is on video below. This post is the written version, with the numbers and the mistakes left in.
The job
Our marketing site, whalesync.com, runs on Webflow, and its blog has years of posts about content workflows. Plenty of them are exactly the posts where a link to Scratch belongs. A post like "Five AI workflows for content housekeeping" should mention the tool we built for AI content housekeeping.
The old way to fix that is the Webflow admin panel: open each post, scroll, find the spot, edit, publish, repeat. The other way people suggest is wiring an AI straight to the CMS API through an MCP server. That writes to the live site with no review step, and Webflow has no undo. Neither gets me the thing I need: confidence in what ships.
So I used Scratch. I had already connected our Webflow site, which means every CMS item was sitting on my laptop as a file. Exactly what Webflow stores, one file per record.
The run
I exported our GA4 data, dragged it into a Claude chat, and asked for relevant internal links to Scratch on the top three to five pages first, with a bigger batch to follow. The reason the content lives as files is that files are what AI is best at. Claude gets to use every script and CLI tool it already knows, and any agent works: Claude, Codex, Cursor. To the agent it's just a folder.
While the first chat worked, I was already reviewing its early edits in Scratch, and I noticed something unrelated: our blog post titles were inconsistent. Some sentence case, some title case, separators all over the place. So I opened a second Claude chat and set it loose on title normalization at the same time. I usually have three or four sessions going at once. The files don't care.
The review
Edits stream into Scratch as the agent makes them, and this is the part I cannot overstate. Some of these post bodies run thousands of words. If I had to re-read a 3,000-word post to find what the AI touched, the review would cost more than the AI saved me. Instead, Scratch shows me exactly where the edit landed, word by word: what the AI added, what it removed, everything else grayed out.
So the review went like this:
- Approved: a line added to a directory-tools roundup noting that Scratch lets AI make bulk edits while you review every change before it goes live. Right post, right claim.
- Approved: a Scratch mention in our bulk-SEO-metadata post. That one is the most natural fit on the whole blog.
- Rejected: one link placement that just wasn't great. The paragraph didn't earn it. One click, gone, and the live site never knew the edit existed.
The rejection is the point. If every edit in a run gets approved, you don't need a review step. The one I killed is why the step exists.
The validator born mid-run
Reviewing one diff, I spotted that Claude had slipped an em dash into our copy. I don't want em dashes in our content. AI taught me to dislike them.
Instead of rejecting em dashes by hand forever, I asked Claude to write a validator: a small Python script Scratch runs against every record automatically. Anything Python can check can be a validator: banned words, title casing, meta description lengths, brand spellings. From that moment on, em dashes get flagged before a diff ever reaches my eyes, and Claude sees the failure and fixes it without me.
The validator earned its keep within minutes. More on that below.
The bulk approve, and the parts that went sideways
The title chat came back with 153 edited records. For a run like this, where the change is mechanical, I don't read every row top to bottom. I switched to a view that puts before and after side by side, scanned down the list, rejected the few I didn't like, and bulk-approved the rest. Your eyes are built for checking "is this the same title, recased" when the two versions sit next to each other.
Two things went wrong along the way, and both got caught:
- Claude's first batch attempt skipped five files because its script's tokens didn't match the actual content. It noticed, abandoned the bulk shortcut, and redid the edits one record at a time. The diff caught the gap; nothing half-edited got near the site.
- At publish time, Scratch warned me that a handful of records still contained em dashes. That was the brand-new validator firing on old em dashes Claude was still cleaning up in another chat. I knew exactly what they were, so I chose to publish anyway. The point is that Scratch made me choose.
Then I hit publish on about 170 approved changes. As I said in the video, I probably shouldn't have published 170 edits live during a demo. But that's the real thing, not a staged one, and every one of those changes is individually reversible if I got it wrong.
What's live now
We checked the site right after. The blog index shows the normalized titles. The meta-descriptions post now ends with a line about letting AI rewrite metadata in bulk while reviewing each change as a diff, with no blind API writes. Claude wrote that sentence, I approved it, and Scratch published it.
That's the full circle: pull the content from Webflow onto a laptop, let Claude do whatever it wants to the files, review every single edit, publish back, see it live. Rinse and repeat. The same loop runs on WordPress, Shopify, HubSpot, Notion, and Airtable, with whichever agent you prefer.
The run, in numbers
| What | Count |
|---|---|
| Claude sessions running in parallel | 2 |
| Titles normalized in one batch | 153 |
| Changes published to the live site | ~170 |
| Link placements rejected in review | 1 |
| Files a bad batch script skipped, then redone one by one | 5 |
| Validators written mid-run | 1 |
| Edits that touched the live site before I approved them | 0 |
Run it yourself
The /start/ walkthrough gets you the twenty-minute version on your own content. If your site is on Webflow, Scratch for Webflow covers what it reads and writes, and there's a ready-made recipe for adding links to a Webflow blog with AI. For the bigger picture of why we built the loop this way, read What is Scratch?
Try it on your content
Everything above happened on our real, live marketing site, because that's the only honest demo. If you want to see the same loop on yours, grab 30 minutes with Curtis and bring your messiest folder, or download Scratch and run it on one folder today.