← /skills/ · skill·v 1·last edit May 20, 2026

How to bulk-add outbound links to a Webflow blog with AI

Pull your Webflow CMS blog into Scratch, hand Claude the top-ranking posts from GA4 and the destination URLs you want to drive traffic to, and let it insert one well-placed link per post. Review every change as a diff before publish. webflowseo·1.5 kb prompt·works with Claude Code · Claude · Cursor · Codex · Antigravity

You own two sites. Your Webflow blog has 80 posts pulling traffic for terms in your space. Your product site has 12 product pages and a few docs pages that you actually want people to land on. The blog is where the traffic comes in. The product site is where it converts. The link from one to the other is the SEO move you've been meaning to make for six months.

In Webflow today, you have two options. Edit each blog post by hand in the CMS, find the spot where the link belongs, paste it in, save. That's a day of work for 80 posts. Or use Webflow's bulk-update, which lets you change a field across many posts at once but doesn't know which target URL belongs in which post. So you don't save time, you just save clicks.

Scratch takes a different path. Pull your Webflow blog as local files. Hand the AI a list of high-traffic posts from GA4 and a short list of the destination URLs you want links to. The AI reads each post, decides which destination is the best fit for the topic (or skips the post if none of them are), inserts a single well-placed link in the prose, and writes the change back. You review each insert as a word-level diff before anything ships.

The prompt

Two prerequisites before you paste this:

  1. Export your top 20 to 50 posts from a GA4 acquisition report. You need the page path plus the search terms each page ranks for (or the topic, if your GA4 setup doesn't surface terms cleanly).
  2. Write down the destination URLs you want links to. One sentence per URL describing what that page is about ("the pricing page", "the integration explainer", "the docs hub", "the comparison page").

The prompt below interviews you for both, calibrates on one post, then works through the rest.

You are inserting outbound links across a folder of Webflow blog
post JSON files. Scratch pulled them from a live Webflow CMS
collection. The edits land on disk; a human reviews each one as a
diff in Scratch before anything ships.

Edit only the rich-text post body field. Do not change any other
field. Do not change SEO meta, slug, publish state, or hero image.

Before you start:

1. Read a handful of posts to understand the catalog. What the
   blog covers, the topical range, the tone, typical post length.
2. Interview me for two inputs:
   a. The list of high-traffic posts I want you to focus on.
      I will paste a CSV (or a list) from GA4 with the page path
      and the search terms or topic that page ranks for. You only
      edit posts on that list.
   b. The destination URLs. I will give you one sentence per URL
      describing what the page is about. These are the only URLs
      you can link to.
3. Insert one outbound link in the first post on the list. Show
   me the diff before continuing. Only proceed once I am happy
   with the placement and the anchor text.

For each post on the list:

- Pick at most one destination URL that genuinely fits the post's
  topic. Skip the post if none of the destinations fit.
- Place the link inside an existing sentence in the body. Do not
  add a new paragraph. Do not append a "related links" section.
  Do not edit anything except the sentence the link lands in.
- Use anchor text that reads naturally. Avoid generic anchors
  ("click here", "this page"). Avoid exact-match anchors that
  copy the destination URL's keyword verbatim.
- One link per post, total. Two posts may point at the same
  destination; one post pointing at two destinations is not OK.

Skip a post if any of the following are true:
- None of the destinations match the post's topic well enough.
- The post already links to one of the destinations.
- The post is shorter than 300 words or is a changelog entry.

When you finish, print one line: count linked, count skipped
(with reason counts), then "READY · review diff in Scratch".
Edits on disk are the deliverable. Do not dump rewrites to chat.

What the link-insert actually looks like

This is the loop Scratch runs for every task. Here is what each step looks like for an outbound-link pass.

1. Pull

Scratch pulls your Webflow blog collection into a local folder, one .json per post. Page collection and localizations stay where they are; this pass only touches the blog. You see something like scratch/webflow/blog/0001-how-to-sync-airtable-to-webflow.json, with the editable body in the rich-text field and the locked fields (slug, SEO meta, publish state, hero image) sitting beside it. Eighty posts land as eighty files. Nothing on the live site has changed.

2. AI edits

Open Claude Code at your Scratch project root and paste the prompt above. The AI reads a sample of posts, asks you for the GA4 list and the destination URLs, and inserts a link in the first post for sign-off. After you approve the placement on post one, the AI works through the rest, skipping cleanly when no destination fits. Scratch keeps the original alongside the edit so it can diff them later. You did not give the AI an API token; it cannot touch the live site even if it wanted to.

3. Review

Open the Scratch desktop app. Every post the AI edited shows up as a row in the review table, the old body on the left, the new one on the right, the changed words highlighted in line. Skim the diff. Most edits are a single-sentence change with one new anchor. Approve the ones that read naturally and link to the right place. Reject the ones where the AI forced a link or chose a weak anchor. Fix the anchor in place where the wording is close but not quite right.

4. Ship

When you have approved the rows you want live, hit publish in Scratch. Scratch writes the approved post bodies back through the Webflow CMS API, one post at a time. Rejected and unedited posts stay where they were. Roll back any row after publish by rejecting it; the original body goes back.

Why not just edit in Webflow

Webflow CMS, post by post ✗ no batch view of which posts got links and where ✗ no per-post preview before save ✗ anchor-text mistakes only catch on the live page ✗ rollback means manually re-removing each link ✗ no enforcement of "one link per post" the manual way AI -> files -> review -> ship ✓ every link shows up in one review queue ✓ anchor text and surrounding sentence visible per post ✓ "one link per post" is a prompt rule, enforced before review ✓ rejected rows leave the original body untouched ✓ skipped posts (no good fit) are explicit, not silent the Scratch way

Manual editing in Webflow falls apart at 50 posts. You lose track of which posts you've already linked, you can't see the anchor-text choices side by side, and any standard you set ("one link per post, no exact-match anchors") only gets enforced in your head. The Scratch path makes the standard a prompt rule, makes the queue visible, and makes the rollback per-post.

When not to use this skill

The shape is simple: the AI proposes the links, you keep the veto. Eighty posts get the same standard applied, and not one link ships without you reading it.

Related

Try this on a real project.

Curtis runs intro calls personally. Bring a refresh, a migration, or anything that feels sticky. We'll work through whether Scratch fits.

Talk to Curtis → or start with Scratch