OPERAND STUDIO
IN BUILD · RANKWATCH

Rankwatch — where your pages rank, and the few changes that move them.

A weekly automation on n8n: it measures where a site's pages actually rank, computes what moved since last week, and surfaces a short list of high-leverage opportunities — each carrying the ranking evidence that motivates it. Detection is deterministic and grounded; a separate brick drafts the fix into a reviewable pull request. This one dogfoods our own site first.

SITUATION

You publish to get found — but whether it worked is invisible.

Answer-first pages are written to rank. Whether they do lives in a rankings dashboard nobody opens, and the signal that matters — what moved week over week, which page slipped, which one is one change away from page one — is buried under everything that stayed the same.
BOTTLENECK

Checking by hand doesn't happen — and most tools invent the answer.

The two usual approaches both fail:
SYSTEM

A grounded pull, deterministic heuristics, findings — and a PR a human merges.

A weekly cron pulls the domain's ranked keywords and live SERP positions from DataForSEO under a spend cap, computes week-over-week movement, and runs a small set of deterministic heuristics — each attaching the ranking evidence behind it. A fail-open LLM seam drafts the recommendation wording; the finding lands regardless. Findings get stable IDs and are re-checked next week — did the last change work? A signed digest goes out, and a separate implementation brick opens the fix as a reviewable pull request.
The Rankwatch brick, grounded by construction. A weekly cron pulls the domain's ranked keywords and live SERP positions from DataForSEO under a spend cap; an error, unauthorized response, or rate-limit stops the run and reports the blocker rather than fabricating a ranking. Measured positions are diffed week over week into gained, lost, new, and decayed. Deterministic, thresholded heuristics then find the opportunities — SEO-STRIKE for striking-distance pages at positions four to twenty, SEO-CANN for cannibalization where two of the site's own pages rank for one query, and SEO-DECAY for positions that dropped beyond a threshold, with SEO-CTR deferred until first-party click data is wired. If the facts are good and the enrichment seam is bound, one fail-open LLM pass drafts the change wording; if the seam is unbound or down, the finding still lands with its evidence. Findings are written with stable IDs, their evidence, and a weekly did-it-work loop, and a signed digest reports net movement and the single most important action. A human merges every change — the pull request is the review gate.
THE PIPELINE, IN ORDER
  • Pull: DataForSEO returns the domain's ranked keywords with positions and volume, plus the live SERP for tracked terms. A durable spend counter caps cost; an error, unauthorized response, or rate-limit sets the run to not-grounded and stops — no invented numbers, ever.
  • Movement: each keyword is diffed against the prior run into gained / lost / new / dropped / flat, with a flag for anything that fell out of the top 100.
  • Heuristics (deterministic): SEO-STRIKE surfaces striking-distance pages (positions 4–20 with real volume); SEO-CANN flags cannibalization; SEO-DECAY catches positions that dropped beyond a threshold. SEO-CTR (high-impressions, low click-through) is deferred until Google Search Console first-party data is wired.
  • Draft (fail-open): with the enrichment seam bound, one LLM pass drafts the change wording; unbound or errored, the deterministic finding and its evidence still land — wording left for the human or the apply brick.
  • Loop: every prior open finding is re-checked against the new positions — worked, no change, or regressed — so next week's list keeps what moved the needle.
  • Notify: a signed digest goes out — net movement, the biggest gains and losses, and the single most important action to take.
Grounded, never guessed

Every position, volume, and movement figure traces to a value the ranking data actually returned. If the pull errors, is unauthorized, or hits its spend cap, the run stops and reports the blocker — it never fabricates a ranking.

Deterministic detection, drafted wording

The opportunities are found by fixed, thresholded heuristics on measured positions — the LLM only drafts the recommendation text. That draft is a fail-open seam: the finding and its evidence land with or without a model bound.

A human merges every change

The detection half never touches the site. A separate brick turns the highest-conviction findings into a reviewable pull request — cross-model evaluated before it opens. Nothing merges without a person; the PR is the gate.

OUTCOME

Measured, not promised.

Every ranking, movement, and finding is stored with the evidence behind it — that record is the measurement instrument, and the outcome section will publish from it, not from claims.
IN BUILD

The brick is spec-complete and provisioned inactive, parked at its data-credential gate. Once it runs, the numbers land here: pages moved toward page one, opportunities surfaced by class, and the share of findings whose fix actually moved the ranking — pulled straight from the stored evidence. Until then this section stays deliberately empty. No invented figures, ever.

PACKAGES

A detection base and the apply brick that acts on it.

Detection and apply are two separate bricks on two rails: the n8n workflow finds and grounds the opportunities; a studio-ops agent turns them into a reviewable pull request. The LLM drafting seam is the same enrichment brick both lead systems already use.
Rankwatch — detection (BASE)This system — a grounded weekly rank monitor over DataForSEO, deterministic heuristics, and findings with evidence. Runs alone by design.BASE
Amend — auto-PR (ADD-ON · PHASE 2)Turns the highest-conviction findings into a reviewable pull request in the site repo — generated, bug-tested, and cross-model evaluated before it opens. A human merges.ADD-ON · PHASE 2
Readout — LLM enrichment (ADD-ON)The same fail-open LLM pass the lead systems use — here it drafts the recommendation wording. The detection base stays untouched.ADD-ON
Talk about your site's rankings →View the components on GitHub →