Recipe

The headline A/B loop

By Axel Antas-Bergkvist Published June 1, 2026
Time ~30 min setup, ~5 min/week
Cost ~$0.50/week (~$9/year)
Risk Low if you cap rotation frequency

Title tags are the single biggest click-through lever in organic search, and most blogs write one at publish time and never touch it again — leaving 10–40% of click-through on the table on every post. True A/B testing is hard in search because you can’t show different titles to different users on the same results page. But you can test sequentially: ship variant A for two weeks, swap to variant B, compare. Over a year that’s three or four iterations per post and measurably better titles archive-wide. The reason nobody does it is bookkeeping — tracking variants, swapping them, measuring the shift. With a folder of markdown, frontmatter, and a weekly cron, that bookkeeping is trivial.

What you need

The recipe

This one is a loop, in two phases:

  1. Setup — generate candidates (once). Pull with Specter, then run the variant prompt to give every post a title_candidates list and a title_history block in frontmatter. Dry-run and push.
  2. Rotate (weekly). Export Search Console → Pages → last 14 days, run the rotation prompt to record the current title’s performance and swap in the next candidate, then dry-run and push.
  3. Schedule it. Run the weekly step via cron or GitHub Actions. After about three months every post has three or four titles measured — lock each to its winner (highest CTR with enough impressions).

The prompt

The one-time variant generator:

For every post, read the current title and body and generate 4 alternative
titles in distinct patterns (question, numbered/specific, comparison, outcome
promise). Each must be 45–65 characters, include the primary keyword, make a
specific promise, and avoid "ultimate / best / guide / everything you need to
know". Write them to a `title_candidates` frontmatter list (impressions 0,
clicks 0), and seed `title_history` with the current title and today's date.
Don't change the live `title`. Frontmatter only.

The weekly rotator:

Using the last-14-days Search Console CSV: for each post, record impressions and
clicks against the open `title_history` entry. If the post had < 200 impressions
in the window, roll the current title over another week (too little signal).
Otherwise swap in the next `title_candidates` entry as the live title and open a
new history entry. When candidates run out, lock the post to the highest-CTR
title with >= 500 impressions. Log rotations, skips, and locks.

Cost and time

PhaseTokensCostCadence
Setup (200 posts × 4 variants)~600k$1.20Once
Weekly rotation~80k$0.15Weekly
Annual total~4M~$9

Pitfalls

Where to go next

Run the meta description sweep on the same cadence — title and description share the snippet, so rotating both compounds the click-through gain.

Buy Specter Pro — $99/year Browse all recipes