On 30 September 2026, developer Ayush Chaturvedi put CrawlRaven MCP on Product Hunt. The product is a Model Context Protocol server that lets Claude, ChatGPT-compatible clients, and Cursor talk to Google Search Console and Google Analytics 4 through browser OAuth and read-only tools.
That is the news. The operator problem is older. Most solo founders still export a Search Console CSV on Sunday, paste a slice into a chat window, and ask the model to find opportunities. The model invents a content calendar from a stale sample. Impressions move. Clicks do not.
This is a working method for connecting live search data to an agent without turning the site into an unsupervised publisher. You can use CrawlRaven, another MCP server, or a thin script you own. The protocol matters less than the rules around it.
Search work used to live in three tabs: Search Console for queries, Analytics for sessions, and a crawler for broken links. Language models sat in a fourth tab and received whatever you remembered to copy.
MCP flips that. The assistant issues a typed tool call. The server returns a bounded payload: queries, pages, dates, devices, crawl findings. The model reasons over those rows instead of a pasted blob.
CrawlRaven’s write-up describes 13 read-only tools, OAuth instead of a service-account JSON file in a repo, and a long technical crawl checklist. Verify those claims on your own property. The pattern is still right: no write access, no standing API keys in chat history, no weekly CSV ritual.
Frontier models also got cheaper this week. OpenAI listed GPT-6.1 Sol at $2 / $10 per million tokens at DevDay. That makes it tempting to dump entire exports into context. Do not. Token price is not the scarce resource. Attention and wrong pages are.
A typical indie SaaS property in month six has a few thousand queries with impressions. The useful set is small: branded queries you already own, non-branded queries with impressions and a weak click-through rate, and pages that rank 8–20 for a job-to-be-done phrase.
A CSV dump hides that set. Models overweight whatever sits at the top of the file. They recommend long guides. They ignore the query that already has 400 impressions and a 0.8 percent click-through rate because the title tag answers a different question.
Example. A billing tool for freelancers sees invoice reminder template at position 11 with 1,200 impressions and 9 clicks. The homepage ranks for the brand. The blog has a long essay on getting paid on time. An unconstrained agent proposes a new pillar. The correct job is one H1 change, one FAQ block that matches the query language, and a screenshot of the reminder email. That decision only appears if the agent sees the query row, the landing page URL, and the current title together.
Write one sentence: this agent may recommend title, meta, heading, and internal-link edits on existing URLs. It may not publish. It may not create new URLs without a human ticket. If the sentence includes auto-publish a daily blog, stop.
Prefer a browser OAuth flow over a downloaded service-account key. Grant Search Console and, if you use it, Analytics read access only. Confirm the property is the production domain. Store any refresh token in a secret manager. Never paste tokens into a system prompt.
Cap the payload: last 28 days, one country, one device class, top 200 queries by impressions, top 100 pages by clicks. Return columns the model can cite: query, page, impressions, clicks, ctr, position, date range.
Force the agent to emit three labeled lists before any advice:
- Protect: branded queries and pages that already convert.
- Repair: non-branded queries with impressions, position worse than 8, CTR below the page-type median.
- Ignore: one-off queries, navigational noise, and anything under your impression floor (start at 50 in 28 days).
If a recommendation is not tied to a Repair row, reject it.
Change types should be short: title, intro sentence, FAQ, internal link, canonical, or redirect. One row, one URL, one type.
Worked pattern from a notes app: query share meeting notes with clients, page /docs/export, position 9.3, CTR 1.1 percent. Change type: title plus first paragraph. New title states the job. First paragraph names the export formats. No new article.
Give the agent the live title, H1, and the first 400 words of the URL. Ask whether the page already answers the query in the first screen. If yes, the fix is packaging. If no, decide whether an existing docs page is the better home. Agents love net-new URLs. Existing URLs compound.
Use a four-line scorecard: query language in title or H1; answer in the first 150 words; next product action within one click; duplicate intent with another URL. Ship only when the first three can flip to yes without creating a fourth URL.
A row in Linear, Notion, or decisions.md: date, query, URL, change, expected signal (CTR or clicks in 28 days), owner. Review it on the same cadence you review churn.
Do not ask the model if the content feels stronger. Pull the same queries. Keep the edit if clicks rose or position improved without a collapse in the Protect list. Revert titles that gained impressions and lost clicks.
Read-only is the whole product. An agent with Search Console write access can add users or poke sitemaps. An agent with Analytics edit access can wreck event names you use for billing dashboards. Keep crawl tools read-only too.
Do not feed customer PII from Analytics into a public model endpoint. Strip landing-page paths that contain emails or workspace IDs. If you use a third-party MCP server, ask what data leaves your Google account and whether the vendor can see query text. For a B2B app with identifiable workspace URLs, prefer a connector you host.
Model list prices are falling. That does not mean you should generate more drafts. Each extra URL competes with your own Repair list. A founder who publishes four posts a week and never retitles a docs page is paying for tokens to hide a CTR problem.
A tighter budget: one agent run per week, thirty minutes of human edits, zero new URLs unless a Repair query has no home. Do not automate publishing or programmatic pages for every query variant. If the page would not help a paying user, it does not help a model either.
Yesterday’s launch made it easier to stop treating Search Console as a file you download. Keep the agent on a leash: read-only data, three lists, one change per row, a 28-day check.
No. You need a read-only way to fetch Search Console rows into the model’s tool layer. Use that product, another MCP server, or a short script against the official Search Console API. Judge vendors on OAuth, scopes, and log retention.
Yes, but keep the question narrow. Sessions on a landing page help you see whether Search Console clicks become product use. Path plus session count plus conversion flag is enough.
Weekly is plenty for a site under 50 indexed URLs. After a title change, wait a full 28-day window before you judge CTR.
Trust the table. If the tool says position 12 and 80 impressions, do not let the model talk you into a long pillar because the topic looks competitive.
Maybe, later. The first job is still humans clicking through to a page that does the job. Clean titles and first-screen answers help both.