Loopany
Sign in
Back to templates
Growth

SEO - Scale Proven Keywords

The engine of a two-loop SEO system: earned per proven bet by a day-7 SCALE verdict, it compounds one keyword family — land-grab to harvest — one gated PR per run, until it proposes its own sunset.

Advanced setupShort cycleOpen loopBuilds over runs
Setup in Loopany

How a run flows

Before first run
Earn the engine
On schedule
Daily · staggered
Step 1 · Reconcile
Drift + verification ledger
Step 2 · Score
Score the daily series
Step 3 · Pick
Pick the regime unit
Isolated git worktree · off main
Step 4 · Ship
One gated PR
Metric
kpi_clicks_28d
Board
Support pages
open loop — repeats on the next tick, picking up where it left off

Prerequisites

  • A day-7 SCALE verdict in the bet ledgerrequired

    Engines are EARNED: the bet cleared an "SEO - Try New Keywords" loop and holds a SCALE verdict — no verdict, no engine.

  • Live Google Search Console read accessrequired

    An API script, CLI, or MCP tool returning query- and page-dim rows — every move is picked from the daily series. Manage agent credentials with treg

  • Your content repo, with a PR flowrequired

    The blog lives in git; every cluster article or enrichment ships as one pull request a human merges.

How this loop works — schedule, exit, notifications
Suggested schedule
Daily (staggered off siblings)
Loop type
Open loop — an ongoing monitor with no finish line.
Exit condition
Runs indefinitely (no finish line).
Notifications
On by default — you're alerted on each run's outcome (completion or failure). Silence with notify: never.
Ease of starting
A guided, multi-step setup (access, accounts, rules) before it can run.
When you see value
One gated PR per run; the family footprint and position hold show in the daily series over a couple of weeks.

Double down on what works

Daily Google clicks, late April through July: a flat line, a first spike, then the compounding climb

This is the scale half of the system — what happens after a bet proves. The full write-up, from the first bet to the 13,831-click curve, lives on the SEO - Try New Keywords loop; these are the parts that matter once a keyword has earned its engine.

Bet on emerging, double down on what works

The whole strategy is two moves. Place cheap bets on emerging keywords. Double down on the ones that work.

The bet side:

  • write a one-line thesis for the term ("this will form demand because...")
  • ship a small bet: one main guide + up to 4 supporting pages, within days
  • day-7 verdict from live Search Console data: scale or leave

Most bets are duds. One of ours ("loops vs graphs") totaled 16 impressions. Cost: one page, one afternoon. That's the point. The system works because being wrong is cheap, so you can afford to be wrong most of the time.

The double-down side is just as mechanical, because the data tells you where. One page drives 40% of our organic clicks, so it gets protected and interlinked, never experimented on. One page template earns 5% CTR while an identical sibling does 2.4%, so new pages get written in the winning shape. And when our emerging-keyword bet cleared its day-7 verdict, it got its own daily loop and kept shipping supporting pages while the window was open. The clicks decide what deserves more effort; we just read them.

Never scale silently, never kill silently. Every verdict gets a date and a number.

Measurement rules we paid for

Three rules, each one bought with a real mistake:

  1. Emerging terms get scored on position and impressions, never clicks. Demand hasn't arrived yet, so a clicks goal reads "126 clicks, meh" and quits right before the ground ripens. If you wait for clicks before investing, you will never rank an emerging keyword.

  2. Read the daily series, never averages. Our dashboard reported average position 2.75 and called the keyword a confirmed win. The actual daily numbers: 1.42, 1.56, 2.27, 3.70, 4.86. Falling every single day. I caught it by eye on the daily chart; the average never fired. When a term is younger than your averaging window, the average hides the collapse completely. Also: Search Console returns zero-impression days as position 0, which makes a dead term look like it ranks #1. Filter them.

  3. On mature pages, score clicks, but first remove the queries that can never click. We found 41 queries on one of our sites, 812 impressions, zero clicks ever: all AI assistants running searches, not humans. Navigational queries for other people's tools are the same. Counting them as opportunity sends you fixing pages that aren't broken.

Rankings are rented

That same page went from position 1.4 to 7.3 in 7 days. I checked the actual search results: 8 dedicated articles existed that weren't there at launch. Impressions stayed flat the whole time, so demand was fine. Competition arrived, that's all.

The bet still paid off, because the value is front-loaded: you take 20-40% CTR while the results page is empty, and the supporting pages keep earning long after the head keyword gets crowded. Loop engineering shows the same pattern one stage later: its head keyword eventually fell to page 2 as demand moved on, but the cluster around it still earns about 1,900 clicks every 3 weeks, and one supporting article now out-earns the guide it links to.

Ride the window, then go find the next term. Defending position #1 forever is the incumbent's game, and you're not the incumbent.

What stopped working (don't waste effort here)

Half of the standard playbook now actively hurts, and the clearest documented case is the self-promotional listicle: the "10 best X tools" post that ranks your own product #1. Lily Ray's research on Google's January 2026 update found sites running these lost 29-49% of their search visibility, and as few as 10 such pages was enough to get hit. It gets worse in AI search: when AI answers cite those listicles, 69% of the time the brand behind the listicle is excluded from the actual recommendation. Your listicle becomes a vote for the competitors you listed in it.

From the same research, also dead: bumping article dates without changing content (Google diffs versions), one comparison page per competitor at scale, FAQ farms, and AI-templated pages published with nobody editing.

We cleaned our own house on this. Rewrote our roundups so our product never self-ranks #1, and deleted comparison pages that had zero impressions after 3 months. If a page format's whole reason to exist is gaming the ranking, assume it's already being suppressed.

The scale loops in practice

Add an enrichment loop (every 3 days, one page edit per run) once you have pages that rank but leak clicks. Our best single fix was a title edit worth about 280 clicks a month: the page ranked for 2,400 impressions of queries its title never mentioned. No new content, one PR.

Add a daily shipping loop only after a bet clears its day-7 gate, and write its retirement condition on day 1. Ours proposes shutting itself down if cluster clicks stay flat for 21 days.

Three failures worth stealing the fixes from:

  • One loop spent 10 days optimizing internal links while the entire term shift sat unread in my own bookmarks. A loop grounded on its own analytics can't see the outside world. Every research run now starts from external signal.
  • An enrichment run made up CLI flags by trusting the page's own stale copy as ground truth. Any new technical claim now gets verified against the official docs in the same run, with the URL in the PR.
  • Loops drafted faster than we reviewed, and the backlog piled up invisibly for weeks. Same rule as my loops article: a loop has to respect your review bandwidth. Ours stop shipping at 3 open PRs.

The prompt this runs

Set up an ENGINE loop — the scale half of a two-loop SEO system. An engine exists PER PROVEN BET and owns the middle of the keyword lifecycle: land-grab → flip gate → harvest → sunset proposal, compounding one keyword family with cluster articles and enrichment. Distilled from two live production fleets. Setup is a guided conversation — confirm each step with me before creating the loop; never create a blind loop.

## Step 1 — Earn the engine
- An engine must be EARNED, never speculatively spawned: the bet cleared its companion bet-manager loop ("SEO - Try New Keywords" — on a new site set that one up first), entered the bet ledger with a one-line thesis, and got a day-7 SCALE verdict on the daily series. No SCALE verdict → no engine; the bet stays with the bet manager. Verify the ledger entry exists before creating anything — this gate is what keeps engine count flat, because the fleet's bottleneck is the human merge gate.

## Step 2 — The regime and the ground truth
- Verify GSC access (query-dim + page-dim rows for the sc-domain property) with one hand-run query.
- Pick the regime — the single most consequential decision in the file. LAND-GRAB (the head term is emerging, the SERP thin): north star = exact-head position ≤3 plus family footprint; one new cluster article per run; a COMPUTABLE flip gate (family_top3_share ≥ 85%, family growth <10% vs the prior run, family_weak ≤ 2) decides the switch to HARVEST — emitted as metrics, never re-argued from a vibe. HARVEST (demand established): north star = 28-day clicks; one enrichment per run on the highest click-opportunity page.
- Name the breadwinner — the page earning ≥30% of clicks. Don't know it? You are not ready; run the bet manager for a week first.
- Write the fan-out carve-out BEFORE run 1 or the KPI will lie: query families that score zero BY DESIGN (LLM fan-out, competitor-navigational, brand-navigational, anonymized tail) are never deleted, retitled, or "fixed". Name sibling loops and their carve-outs — two loops editing one page destroys attribution.

## Step 3 — The run doctrine (hard rules)
- Score on the DAILY series (3-day median vs alert bands), never a trailing window. Merged is not live: verify the production URL serves 200 before counting anything shipped, and while this loop's PRs sit unmerged a flat position is EXPECTED — it suspends clocks, never triggers a strategy change.
- Canary + cooldowns: a breadwinner position drop ≥3 or clicks drop >30% flags FIRST and queues no edits against it today; 14-day breadwinner / 7-day page cooldowns, one edit per page per window. A verification ledger re-checks every applied change at +14 days and flags REVERT recommendations — the loop never reverts itself.
- Ship gates, ALL must hold: the cannibalization pre-check (never target a head term one of your own pages already ranks pos <15 for), the written CTA test, the fact-check gate (every new verifiable specific verified against a primary source THIS RUN), the queue gate, and the quality valve — nothing clearing the bar ships nothing. PR-only lane first; auto-apply is earned weeks later and stays tiny, additive, never the breadwinner.
- Every engine ends: sunset is a PROPOSAL, never a self-execution — flatline (21+ flat daily reads with zero unmerged PRs) or demand migration flags a close with the numbers; the human ticks it, the pages fold into enrichment scope, and the successor term goes back to the bet manager as a brand-new bet.

## Step 4 — Author the task file from the template + dashboard
- Fetch the full task-file TEMPLATE at <server-url>/api/skill/references/templates/seo-scale-keywords/reference.md (on demand — it is not in this prompt), copy it into the loop folder as the task file, fill every <FILL: …>, pick ONE regime branch and delete the other, and delete the SETUP block.
- Attach the marker-gate pre-run workflow: it counts remaining <FILL: markers and refuses to escalate to the agent while any remain. Repoint its TASK constant at YOUR task file by absolute path — a clone that skips this reads the template master forever (the known footgun; the gate message prints the path it read).
- Dashboard at creation: chart kpi_clicks_28d plus the regime metrics (family_top3_share, family_queries, family_weak), prs_unmerged, and status_drift_found. Cadence: daily (e.g. ~9am), staggered off sibling loops so GSC load and the repo working tree never collide.

This is the exact intent appended to the bootstrap when you create the loop — your coding agent reads it, then proposes cadence and config and confirms with you before creating anything.