Rainmaker is an open-source SEO and AEO agent with one principle.

Every finding is ranked by distance to revenue, never by technical severity.

The repository is public and MIT licensed. The specification is written, the measuring core and the ledger are built, and the rest is in progress. This page describes what it does and how it is put together.

What problem does it solve?

Search tools are good at finding two hundred problems and bad at telling you which one pays. They sort by a severity score the vendor invented, so a missing alt attribute on a careers page and a noindexed pricing page arrive looking roughly equivalent. Both get written into a report. Neither gets fixed.

The second problem is quieter. Almost nothing in this discipline keeps a record. A plan gets made, work gets shipped, three months pass, and nobody can say which of the eleven recommendations actually moved a number. The next plan then gets made on the same assumptions, because nothing disproved them.

Rainmaker fixes the ordering by tiering every URL by how close it sits to money, and fixes the memory by writing every observation to an append-only ledger with a verification window per metric.

What is the job to be done?

The job: know what to fix first and prove it was worth it, as a loop from See to Decide to Build to Spread to Prove and back to Decide When I own a site and a revenue number, I want to know what to fix first, so I can show a win before the quarter ends. See what is true Decide what is worth it Build the thing Spread where answers form Prove what moved belief updated, strategy changes

The arrow back from Prove to Decide is the entire product. Everything else in this category stops at Build.

How do you set it up?

Three commands, and only the first is required.

npx rainmaker init                 the measuring core, plain Node, no model needed
npx skills add vcxcvii/rainmaker   the 26 skills, into whichever assistant you use
npx rainmaker agent                the interactive agent, with your own key

The first ten minutes run in a deliberate order.

Onboarding: eight config questions while the crawl runs in the background, then a grounded interview, then three fixes, then a cadence recommendation 1. Eight questions 90 seconds, all skippable 2. Grounded interview 12 questions, one at a time 3. Three fixes effort against impact 4. Cadence recommended, not assumed the crawl runs here, in the background, so question one of the interview can cite a real number

Setup asks only what cannot be measured: the site, how the business makes money, where money changes hands, average contract value, sales cycle length, one line on who buys, and up to five competitors. Every question can be skipped, and skipping degrades the output rather than blocking it.

The interview never runs first. It runs second, after the crawl, and it opens like this:

I looked at 214 pages before asking you anything.

78% of your pages are Tier 3. 4% are Tier 1. Your only comparison
page has no internal links pointing at it from anywhere on the site.
Your top competitor has 31 Tier 1 pages. You have 3.

First question. Your /demo page gets 1,240 impressions and 11 clicks
over 28 days, sitting at position 8.4. Who reads that page before a
deal closes, and what do they still not know when they leave it?

Then three fixes, not sixty, each with the file the evidence came from, the tier, the hours, and the exact next command. Then it asks how often you want it to run, and recommends a cadence from your site’s shape. Under a hundred clicks a month there is no weekly signal to read, so it will tell you to run monthly and explain why.

What does it actually do?

Twenty-six skills, six phases, one decision each. No two skills can answer the same question, and together they cover the job.

Skill tree: five working phases above the Ground phase, which writes the shared context layer, over the deterministic core See unblock-my-money-pages find-my-quick-wins get-mentioned-by-ai stop-losing-visitors beat-my-competitors Decide follow-the-money pick-my-battles can-i-actually-rank what-to-target-next map-my-site Build brief-my-writer write-the-page make-it-sound-human make-me-quotable revive-old-pages Spread get-cited-elsewhere show-up-in-communities spread-one-piece-everywhere Prove check-before-i-publish show-me-progress what-actually-worked what-changed-in-search put-it-on-autopilot Ground know-my-buyer, say-it-their-way, explain-this-number. Runs after the first crawl, and writes what everything else reads. Context layer context/business.md and data/strategy.json. Shared ids, verified by hash, one owner per field. Deterministic core crawl, tier, score, ledger. Written in code, identical across runs, never produced by a model.

The layers below are what stop twenty-six skills becoming twenty-six opinions. Every skill loads the same business context, in the same way, and each field in the strategy file has exactly one skill allowed to write it. The numbers underneath are computed in code, so two runs over unchanged input produce identical scores. No model produces or adjusts a score anywhere in the system.

Why not just install a folder of SEO skills?

There are good individual skills in the wild, and this project studied several closely. Sam Dunning’s research pipeline is the sharpest public example of qualifying keyword candidates against the real SERP and killing most of them. Yahav Fuchs’ AEO set is right that an AI visibility score means nothing until you decompose it per engine and per market and read the raw answer. Both are worth your time, and Rainmaker takes the lessons.

The difference is structural.

  A folder of skills Rainmaker
Context each skill re-derives the business from whatever it reads one context layer, loaded identically, one owner per field
Numbers the model produces the score computed in code, identical across runs
Memory the session append-only ledger, strategy history, verification windows
Scope keyword research, or AEO, or technical your site, Google, answer engines and off-site, in one system
Structure a list of pages to write a site blueprint with one intent per URL and a publish budget
Ending a plan a record of what shipped, what moved, and what did nothing

The last row is the one that matters. Anything can produce a plan. Very little will tell you, ninety days later, that four of the eleven things it recommended did nothing measurable, and then change its own mind about the strategy because of it.

What makes ranking durable?

Three mechanisms, each of which tells you to do less.

Nothing gets briefed without a SERP verdict. Every candidate query ends up QUALIFY, CONDITIONAL or KILL after reading the live results. Beatability needs named evidence: a top-five result that does not serve the intent, a format gap, a stale set of pages, or your own measured history at that impression volume. Optimism is not evidence.

Your publish rate is bounded by your indexation rate. The system measures how many of your recent new pages actually got indexed and ranked, and sets a monthly budget from that. Publishing two hundred pages into a site that gets six indexed produces a hundred and ninety four pages of crawl waste and a diluted internal link graph.

No fourth cluster opens while any existing cluster is under forty percent covered. Three half-covered topics beat nothing. Six quarter-covered topics beat nothing at all.

What can you ask it?

The system is meant to work at both ends of the range, from a personal site to one with tens of thousands of URLs.

A personal site or small blog:

  • My site has about thirty pages and two hundred clicks a month. What is actually worth fixing?
  • Which of my posts are dying, and should I refresh them or delete them?
  • I write about two unrelated topics. Am I splitting my own authority?
  • Do any AI assistants mention me when someone asks about my field?

A local or service business:

  • I serve six suburbs. Should each one get its own page, or is that spam?
  • Map the site structure for my services across the areas I cover.
  • Which service pages could realistically reach the top three, and which am I wasting effort on?

Ecommerce:

  • My category pages cannibalise each other. Show me which ones, and which to keep.
  • Which product pages get impressions but no clicks, and is that a title problem or a ranking problem?

A mid-size B2B software company:

  • We have four hundred blog posts and three comparison pages. Rebalance us.
  • A competitor owns the alternatives queries. Can we take them, honestly?
  • Which pages does sales actually send, and are any of them technically broken?
  • Write the brief for a comparison page, but only if the SERP says we can win it.

A large site with several teams and tens of thousands of URLs:

  • Rank every Tier 0 and Tier 1 page by revenue score and give me the top twenty with owners.
  • How many pages can we publish a month before we exceed what this site gets indexed?
  • Show me every cluster under forty percent complete before anyone opens a new one.
  • Organic traffic dropped eighteen percent. Was that the core update, something we shipped, or neither? Show me the control.
  • Of everything we shipped last quarter, what did nothing?

That last question is the one the system was built to answer, and the one most reporting is designed to avoid.

What will it not do?

  • Post to a community, send outreach, change live content, or delete a URL. It drafts, files issues and writes diffs. A person approves.
  • Let a model compute or adjust a revenue score.
  • Use third-party authority metrics anywhere in scoring.
  • Buy links, exchange links, run multiple accounts to simulate independent voices, or ship doorway-page permutations.
  • Claim an algorithm update caused a metric change. It reports timing consistency and shows whether unaffected pages moved too.

Every item on that list is either externally visible and hard to reverse, or a shortcut that trades a short-term signal for a long-term liability. The value of the system is that its record can be trusted, and an agent that can quietly publish is one bad inference away from destroying it.

Bring your own keys

There is no hosted service and no account. Keys are read from your environment, used against the API they belong to, and sent nowhere else.

Key Unlocks
none crawl, technical audit, tiering, scoring, site blueprint, reports
Google service account Search Console and Analytics, which turns flat opportunity scoring into measured opportunity
Firecrawl the default crawl provider
An AI model key the interview, the writing skills, and citation probes per engine
PageSpeed, Clarity, SERP higher rate limits, behavioural leak analysis, live SERP verdicts

Everything degrades rather than fails. With zero keys you still get a full technical, structural and competitor diagnosis, and every report carries a mandatory section stating which capabilities were live and precisely what their absence weakens.