ChatSEO
Free Β· Nothing gated

I built my company a
Chief SEO Officer

Not an SEO tool that hands you 47 issues sorted by severity. Seven skills that read your live Search Console and come back with one decision.

How a solo founder gained 14,500 organic clicks in 100 days β†’

Free Β· No credit card required

47 ISSUES what a tool gives you INDEXING IMPRESSIONS POSITION CTR CONVERSIONS THE CONSTRAINT
An analyst reports every stage. An officer names the one that's binding.
Nicholas

Hey there, I'm Nicholas πŸ‘‹

I grew my last B2C app to 15K Google clicks/month as a solo founder, then sold it. Turns out I fell in love with SEO along the way.

So now I'm building ChatSEO.app β€” an all-in-one SEO employee whose job is to make sure you rank #1 in Google and in AI search.

A month ago I stopped asking Claude for SEO advice and gave it a job title instead. This is the whole thing. Try it free β†’


You don't have an SEO information problem

Every tool you own already tells you more than you can act on.

Open any SEO platform and it will find you problems. Forty-seven of them, sorted by a severity score that somebody else's algorithm decided. Thin content on twelve pages. Missing alt text. Three redirect chains. A title tag over sixty characters.

All of it is true. None of it is a decision. You have one hour this week, and the list does not tell you which of the forty-seven is the one that would actually move the number.

That is the difference between an analyst and an officer, and it has nothing to do with intelligence.

An analyst is measured on coverage

Their job is to miss nothing. So the output grows: more checks, more rows, more severity tiers. A crawler that reported three issues would look broken. The incentive runs directly against the thing you need, which is fewer things to think about.

An officer is measured on the call

They read the forty-seven issues before the meeting and arrive with one. Forty-six of them do not matter this quarter, and saying so out loud is the entire job. You are not paying for the analysis. You are paying for the forty-six things you now get to ignore.

Claude could always do the first job, never the second

Not because it lacked the knowledge β€” it has read more SEO writing than any consultant alive. It lacked two things. It could not see your data, so every answer was general. And nothing forced it to choose, so every answer was a list.

The connector fixes the first. The seven skills below fix the second, and they do it with a constraint written into the prompt itself: cap the output, end on one action, never invent a number.

The whole system in one line: an analyst gives you a list, an officer gives you the next move.


The setup β€” 5 minutes, no API key

The skills are worthless without live data. This is the only part you have to do once.

Step 1 β€” Connect Search Console to ChatSEO

Create a free account at chatseo.app, add your site, then click Connect Google Search Console and authorize with the Google account that owns the property. It's read-only OAuth. There is no API key to generate anywhere in this playbook.

Step 2 β€” Add the connector to Claude

The MCP endpoint is the same for everybody:

https://api.chatseo.app/mcp

Pick your client. The full guide with screenshots is in your dashboard under MCP / API.

Claude Desktop

Easiest if you're not a developer.

Click your account at the very bottom of the sidebar β†’ Settings. Scroll to the bottom of the settings sidebar, under Platform β†’ Customize. Open the Connectors tab β†’ Add, top right. Paste the URL and connect. A browser tab opens once to sign you in.

Claude Code

One command, ten seconds.

claude mcp add --transport http chatseo https://api.chatseo.app/mcp

Run it, open a new session, done.

Cursor, ChatGPT, VS Code

Same URL, three menus.

Cursor β€” add it as an HTTP MCP server in .cursor/mcp.json and restart. ChatGPT / Codex β€” Settings β†’ Connectors β†’ Add custom connector, paste the URL, it handles the OAuth. VS Code β€” add it as an MCP server in your Copilot settings.

Step 3 β€” Prove it's connected

Ask one question before you save a single skill:

Which of my pages lost the most clicks last month?

If it comes back with your actual URLs, you have a Chief SEO Officer. If it comes back with advice, it's still just Claude, and everything below will produce beautifully formatted fiction.

This is the step people skip. Connect ChatSEO free β†’ It's the one thing that makes the other seven work.


The 7 skills

Seven jobs, in the order a real Chief SEO Officer would do them.

Paste one and you get an answer once. Save it as a file and you get the same job, in the same shape, every time you type its name β€” with no slow drift in the wording that makes this month's output incomparable to last month's.

Every prompt below does three things on purpose: it caps its own output, it ends on one action, and it forbids invented numbers. That last rule matters more than it sounds. A connected model that guesses is worse than a disconnected one, because now you believe it.

1

SEO diagnosis

Reads the funnel from impressions through to conversions and names the one constraint holding the site back. Not 47 issues. One.

Takes: 3 min Returns: one constraint When: first, then quarterly
/seo-diagnosis
Use the ChatSEO connector. If no site is set, list my sites
and ask me which one. Do not guess.

Pull the last 90 days of Search Console data and walk the
funnel in this order:
1. INDEXING     β€” pages indexed versus submitted
2. IMPRESSIONS  β€” total, and the trend versus the prior 90 days
3. POSITION     β€” how many queries sit 1-3, 4-10, 11-20, 21+
4. CTR          β€” actual CTR per position band versus what that
                  band normally earns
5. CONVERSION   β€” if analytics is connected, clicks to conversions
                  by landing page

For each stage give me one line: the number, the direction,
and whether it is healthy.

Then name THE ONE binding constraint: the earliest stage in
that list that is broken. Order matters β€” a CTR problem is not
worth solving on pages Google is not showing.
Explain in two sentences why that stage and not the next one,
using the numbers you pulled.

If a figure is not in the data, write "cannot compute from this
data". Do not estimate it.

End with ONE sentence: the constraint, and the single next action.
Do not list the other issues you found. Do not append an audit.

The order of the funnel is the whole skill. Rewriting titles on pages Google isn't showing is the most common wasted month in SEO, and it happens because CTR is the easiest number to look at. Walking the stages in sequence makes that mistake structurally impossible: the model isn't allowed to reach stage four while stage two is broken.

2

Query opportunity

Every query by position, impressions, CTR and intent. Then what to do with each one: push, defend, rewrite, merge, or drop.

Takes: 3 min Returns: five buckets, one action When: monthly, before planning
/query-opportunity
Use the ChatSEO connector on my active site.

Pull the last 28 days of query data. Exclude brand queries
everywhere β€” they move for reasons that have nothing to do
with the page.

Put every query with 50+ impressions into exactly ONE bucket:
- PUSH    β€” position 5-15, impressions rising. A small move is
            worth real clicks.
- DEFEND  β€” position 1-4 with meaningful clicks, and slipping
            versus the previous 28 days.
- REWRITE β€” position 1-10 but CTR below half the band average.
            You won the spot and lost the click.
- MERGE   β€” two or more URLs ranking for the same query in the
            same period. Name both URLs.
- DROP    β€” impressions with no commercial intent, or position
            40+ with no trend. Stop spending on it.

Cap each bucket at 5 rows, ranked by impressions β€” never by
percentage change.
Columns: query | URL | position | impressions | CTR | why this bucket.

Classify intent as informational, commercial or navigational from
the wording of the query itself. If the intent is ambiguous, say
so rather than picking one.

End with the ONE query to act on this week and which bucket it
came from.
Do not give me a content calendar. Do not rank the buckets
against each other.

A keyword list sorted by volume is a wish. The five buckets exist because they map to five completely different Monday mornings β€” writing, defending, retitling, consolidating, and deliberately doing nothing. That last one is a real output. Most keyword tools have no way to tell you to stop.

3

Click capture

The gap between what you rank for and what actually gets clicked. Position 8–15, 500+ impressions, under 1% CTR β€” then a title rewritten against the query people really typed.

Takes: 4 min Returns: one title + meta to ship When: monthly
/click-capture
Use the ChatSEO connector on my active site.

Pull the last 28 days. Find every page matching ALL THREE:
- average position between 8 and 15
- 500+ impressions
- CTR under 1%

Cap the list at 5 pages, ranked by impressions.

For each one, pull the TOP 3 QUERIES that page actually receives
impressions for. This matters: the rewrite has to match the query
people typed, not the keyword the page was written for.

Then fetch the live page and read its current title and meta
description.

For each page give me:
- URL | position | impressions | CTR | current title
- the top query, verbatim
- ONE new title, under 60 characters, containing the top query
  in the words the searcher used
- ONE new meta description, under 155 characters, that answers
  the query rather than describing the page

Do not write three options per page. One title, one meta, your best.
If the page cannot honestly deliver the query, say so and skip the
rewrite β€” a title that earns a click the page doesn't keep is a
bounce, not a win.

End with the ONE page to ship first and why that one.

Position twelve with 800 impressions and a 0.6% CTR is not a ranking problem. You already paid for that traffic β€” in content, in links, in months. The packaging is what's failing, and it's the cheapest fix in SEO because nothing needs to move for it to work.

The instruction to pull the page's actual queries first is the part people cut, and it's the part that makes the rewrite work. The keyword you wrote the page for and the query that page receives impressions for are different strings more often than not.

4

Experimentation

Maintains the backlog. Scores every test by traffic impact, confidence and effort, then tells you what ships this week and what waits.

Takes: 3 min Returns: one item that ships When: weekly
/seo-experiments
Use the ChatSEO connector on my active site.

Keep a running backlog of SEO tests. If I have given you a backlog
file, read it. If not, build one from the last run of /seo-diagnosis,
/query-opportunity and /click-capture.

Score every item out of 10 on three axes:
- IMPACT     β€” the clicks at stake, taken from real impression and
               position data, never from a guess about volume
- CONFIDENCE β€” how sure we are the change causes the effect. A title
               rewrite on a page with 800 impressions is high. A
               site-wide internal linking change is low.
- EFFORT     β€” hours of human work, inverted, so cheap scores high

Score = impact x confidence / effort. Show the arithmetic in one
line per item.
If IMPACT cannot be grounded in a number from the data, mark the item
"unscored" and leave it out of the ranking rather than inventing a
figure.

Output the table, capped at 8 rows, sorted by score.

Then split it in two:
- SHIPS THIS WEEK β€” exactly one item
- WAITS           β€” everything else, each with the one condition
                    that would promote it

Every shipped experiment needs a check date and a success metric
written before it ships. Give me both, in one line.

Do not propose a sprint. One item ships.

SEO backlogs rot because every item on them looks equally plausible. Scoring turns an argument into arithmetic, and the arithmetic is deliberately crude β€” three numbers, one formula, shown in a line. A scoring model nobody can compute in their head is a scoring model nobody trusts.

The check date is the part that changes how you work. Without it you accumulate changes and learn nothing, which is empirically indistinguishable from doing no SEO at all.

5

Decay

Page-level trends, cannibalisation, lost positions. Which pages are quietly dying, when they started, and which two of your posts are eating each other.

Takes: 4 min Returns: one page to rescue When: monthly, or after an update
/decay-check
Use the ChatSEO connector on my active site.

Compare the last 90 days to the 90 days before, page by page.
Rank by absolute clicks lost, never by percentage: a page falling
from 8 clicks to 2 is not a priority.

Return three lists, 5 rows each.

DECAYING β€” pages losing clicks steadily.
Each: URL | clicks before | clicks after | clicks lost | the month
the decline started.
Date the start from the data by walking the monthly series back to
the last month that was flat or rising. Say which month. Do not date
it from a Google update you remember β€” if you think an update is
involved, ask me for the date.

CANNIBALISATION β€” queries where two or more of my URLs both received
impressions in the same period.
Each: query | URL A + position | URL B + position | which one should
keep the query, and why.

LOST POSITIONS β€” queries that ranked top 10 in the earlier period and
no longer do.
Each: query | old position | new position | the URL.

For every row in DECAYING, name the cause from the numbers:
- position dropped            -> content or authority problem
- position stable, CTR down   -> a SERP problem: someone else's
                                 title, or an AI answer above you
- both stable, clicks down    -> impressions fell. That's demand,
                                 not ranking. Say so and stop.

Do not speculate beyond what the numbers support.
End with the ONE page to rescue first, and whether the fix is a
rewrite, a merge or a redirect.

Nobody notices decay, because nothing breaks. A page loses four clicks a week for six months and no alert ever fires, because no single week looks like an incident. By the time it's visible in the monthly total, the cause is a year old.

Dating the decline from the data rather than from a remembered algorithm update is a small instruction with a large effect. Models are extremely willing to attribute your traffic loss to an update that shipped in a different quarter.

6

SEO reporting

One page every Monday: clicks, impressions, average position, indexed pages, what moved, why it moved, and what needs attention next.

Takes: 2 min Returns: four numbers, one action When: every Monday
/monday-report
Use the ChatSEO connector on my active site.

Compare the last 7 days to the 7 days before. Produce ONE page,
in this exact order, and nothing else.

THE NUMBERS β€” four lines only:
clicks | impressions | average position | indexed pages
Each with the change versus last week, as an absolute number and
a direction.

WHAT MOVED β€” the 3 biggest movers by absolute clicks, up or down.
One line each: URL or query | before | after | direction.

WHY IT MOVED β€” one sentence per mover, and only causes the data
supports: position change, CTR change, or impression change.
If you cannot tell from the data which one it was, write "cause
unclear from this data" and move on. Do not guess at an algorithm
update.

NEEDS ATTENTION β€” exactly one item. The single thing worth
someone's time this week, and the first step.

Hard rules: no recommendations section, no summary paragraph, no
encouragement.
If a number is flat, say flat. A week where nothing happened is a
valid report and should be three lines long.

The report exists so that nobody has to open Search Console. If it takes more than two minutes to read, it has failed at the only thing it was for.

"A week where nothing happened is a valid report" is the line that makes it survive past month two. Every weekly report ever written died because the person producing it felt obliged to produce insight, ran out, and started padding.

7

SEO strategy

New language. New cluster. Site migration. Programmatic pages. Models the upside, the downside, the assumptions and the time to payback before you commit six weeks.

Takes: 5 min Returns: go, wait or no When: before any big bet
/seo-strategy
Use the ChatSEO connector on my active site.

I will describe a bet: a new language, a new topic cluster, a site
migration, or programmatic pages. If I haven't said which, ask.
Do not model a generic version.

Ground the model in my actual data first. Pull, and state plainly:
- my current clicks and impressions in the relevant segment
- my average position and CTR in that segment β€” this is the
  conversion rate the model must use
- how long my last comparable pages took to reach their current
  position, measured from the data, not assumed

Then give me four blocks, in this order:

UPSIDE     β€” the realistic ceiling in clicks per month, with the
             arithmetic shown in one line. Use my measured CTR,
             not an industry curve.
DOWNSIDE   β€” what this costs if it fails, including the pages it
             takes attention away from. A migration also risks
             losing what already works: quantify that in clicks.
ASSUMPTIONSβ€” every number in the model that is not measured from
             my data, listed explicitly. If that list runs longer
             than three lines, the bet is not modellable yet and
             you should say so.
PAYBACK    β€” weeks until the upside exceeds the effort, based on
             how long my own comparable pages actually took.

Never present a projected number without the assumption it rests
on, in the same line.
If the data cannot support the model, say "cannot model this from
the available data" and tell me the one thing that would make it
modellable.

End with a verdict in one word: GO, WAIT, or NO. Then one sentence
of justification.
Do not present options. Give me your call.

Every six-week SEO commitment I have ever seen was made in a ten-minute conversation, using a CTR curve somebody found in a blog post in 2019. Forcing the model to use your measured CTR and your measured time-to-rank is what separates a projection from a fantasy.

The one-word verdict is not decoration. A model that ends in "it depends on your priorities" has handed the decision back to you, which is exactly the job you were trying to delegate.

Save them, so you type a name instead of a prompt

Pasting works. Saving is better β€” same job, same shape, every time.

If you write a description, write it as when to use this, not what this is. That sentence is what the model reads to decide whether to run the skill at all.


The routine

Seven skills is not seven weekly jobs. Two repeat. The rest fire on a trigger.

WEEKLY 10 + 20 minutes MONDAY REPORT EXPERIMENTS MONTHLY 45 minutes QUERY OPPORTUNITY CLICK CAPTURE DECAY QUARTERLY or on a trigger DIAGNOSIS STRATEGY
Two weekly, three monthly, two on a trigger. That's the whole calendar.

Every Monday β€” 10 minutes

6 Β· /monday-report β†’ read the four numbers β†’ do the one thing under NEEDS ATTENTION β†’ close the tab.

Every week β€” 20 minutes

4 Β· /seo-experiments β†’ ship the one item it names β†’ write down the check date. The check date is not optional; it's the only reason next month's report means anything.

Monthly β€” 45 minutes

2 Β· /query-opportunity β†’ run 3 Β· /click-capture on whatever it surfaced β†’ 5 Β· /decay-check to see what you're losing while you gain.

That chain is the whole loop: find the opportunity, package it, and check the ground isn't moving underneath you.

Quarterly, or when something big is on the table

Don't set up all seven this week. Set up two: /monday-report and /seo-diagnosis. Run them for a month. Add the rest when those two feel automatic.

What a chat can't do: remember

Worth being straight about, because you'll hit it in week three, and it's the one thing on this page the prompts cannot fix.

A connector gives Claude your data on demand. It does not give the conversation a memory. Every new chat starts from zero: it can re-pull the numbers, but it doesn't know which page you fixed in March, what the title used to say, when you shipped it, or what you were waiting to see.

Six of the seven skills survive that. Skill 4 doesn't. A backlog with check dates is, by definition, a thing that has to persist between sessions β€” and the moment you're maintaining it by hand in a doc, you've rebuilt the spreadsheet the officer was supposed to replace.

That's the half a chat window structurally can't hold. It's what ChatSEO keeps on the other side of the connector: the site, the conversation history, the todos each shipped change writes, and the Monday report that grades them. Claude is the interface. The record has to live somewhere that doesn't reset.

Connect Claude to ChatSEO free β†’


The 5 mistakes that kill this

Running all seven every week

You'll spend an hour reading and zero minutes fixing. The routine exists because the seven skills compete for the same hour, and reading is the more comfortable half.

Editing out the constraint because you want "the full picture"

Every prompt ends on one action on purpose. The first time you delete that line to get more options back, you have rebuilt a 47-issue audit with extra steps and a chat interface.

Trusting a number it didn't pull

Every prompt forbids estimation. If an answer contains a confident figure and no data call behind it, ask where the number came from before you act on it.

Skipping the check date

"I shipped the change" and "the change worked" are different claims. Without a date and a metric written before you ship, you accumulate changes and learn nothing.

Diagnosing at the wrong stage

Rewriting titles on pages Google isn't showing is the most common wasted month in SEO. Running skill 1 before skills 2 and 3 is the entire defence against it.

Where this still needs you


How one founder went from 250 β†’ 750 clicks a day

He added +14,500 clicks just by chatting with AI.

No SEO expertise. He simply ran the recommendations he was given.

Search Console graph showing daily clicks rising from around 250 to around 750.

Why this works when old SEO tools don't

Here's the blunt truth about SEO in 2026.

Old SEO tools

  • 47 issues sorted by somebody else's severity score
  • Hours of exporting before you learn anything
  • Five tools that don't talk to each other
  • A backlog nobody ever ranked
  • A weekly report nobody reads past line two

What you actually want

  • One constraint, named, with the reason
  • Live data, not a Tuesday export
  • One connection, from data to CMS
  • Every test scored before anyone builds it
  • Four numbers and one action, every Monday
Comparison of traditional SEO tooling against the ChatSEO approach.

That's the entire idea behind ChatSEO

One SEO employee that reads your Search Console, tells you the single thing holding the site back, writes the fix, ships it to your site β€” and tells you a month later whether it worked. From your Claude chat, or from ChatSEO itself.

Try ChatSEO free β†’

No credit card required