Rainmaker
An open-source SEO and AEO agent that ranks every finding by distance to revenue instead of technical severity, refuses to brief a page it has not checked the SERP for, and keeps an append-only record of what shipped and what moved.
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 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.
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.
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.