How to use Claude for SEO
Claude is good at reading SEO data, spotting patterns, and writing briefs. It is only as accurate as the data in front of it. This guide covers the open-source Claude SEO plugin, the three ways to run Claude for SEO work, a fictional research session that shows how the connected tools are used, and the parts Claude cannot do.
What “Claude SEO” means: the project and the workflow
The phrase refers to two different things, and it helps to separate them before reading anything else.
- The project. Claude SEO on GitHub is an open-source, MIT-licensed skill for Claude Code, published under the AgriciDaniel account. It adds slash commands such as /seo audit and /seo schema and is one of the things people mean when they search “claude seo”.
- The workflow. Using Claude, in chat or in Claude Code, to do SEO work: keyword research, content briefs, on-page audits, Search Console analysis, and the decisions that follow.
The two overlap but are not the same. You can use Claude for SEO without the plugin, and you can use the plugin alongside other data sources. This page covers both, starting with how to pick an approach.
Choose your approach: Claude chat, Claude Code, or SEO skills
The right setup depends on whether you are analysing data, changing a site, or running a repeatable checklist. Each column below is a real constraint, not a sales pitch.
| Approach | Good for | What it needs | Limits |
|---|---|---|---|
| Claude chat (claude.ai, Desktop) | One-off analysis, rewriting titles and meta descriptions, turning a spreadsheet into a shortlist, drafting briefs | Uploaded CSV exports from Search Console or a keyword tool, or a connected MCP server for live data | Without a connector, every number is whatever you pasted. Search Console report exports have row limits, the API supports larger pulls, and downloaded files do not update on their own |
| Claude Code | Working on the site itself: fixing titles, canonicals, internal links, schema, and sitemaps in the repo while checking data in the same session | A local checkout of the site, plus MCP servers or skills for outside data | A terminal workflow, so it suits developers and technical marketers more than editors. Deploying is still a separate step |
| SEO skills and plugins | Repeatable checklists: on-page audits, schema generation, E-E-A-T review, content structure, reporting | Claude Code, the installed skill, and usually your own API keys for any enriched data | A skill is a set of instructions and scripts. It sees pages it fetches; it does not see rankings, volume, or your Search Console unless you wire in a data source |
These combine. A common setup is Claude Code with an SEO skill for the checklist work and an MCP server for the numbers. The rest of this page assumes you want data in the loop, whichever client you use.
What the open-source Claude SEO plugin provides
The Claude SEO repository describes itself as a universal SEO skill for Claude Code, with 25 sub-skills and 18 sub-agents. It installs through the Claude Code plugin marketplace or a shell script and adds a family of /seo commands.
What it covers
At the time of writing the command list includes site and page audits, schema markup, technical SEO, content and E-E-A-T review, GEO and AEO for answer engines, local SEO, backlinks, image and hreflang checks, e-commerce and international SEO, semantic clustering, sitemap checks, and PDF or Excel reporting. That is a wide surface, and the checklists are the main value: they encode a consistent way of reviewing a page rather than leaving it to a prompt.
What it can see on its own
Out of the box the plugin fetches the URLs you point it at and reasons over the HTML, so audits, schema, and on-page checks work without any keys. Rankings, keyword volume, Search Console metrics, and backlink data are optional integrations. The README lists Google APIs such as Search Console and PageSpeed Insights, DataForSEO, Firecrawl, and several commercial SEO tools, and each one needs your own credentials. Without them, any number the plugin reports about demand or rankings is an estimate from the model, not a measurement.
It runs only inside Claude Code. If you use Claude on the web or in Claude Desktop, the plugin does not apply, though the same checklist ideas can be pasted in as instructions.
Where CalmSEO complements skills and plugins with live data
CalmSEO is a hosted SEO MCP server that works with Claude on the web, Claude Desktop, and Claude Code, with no API keys to manage and nothing to install locally. Once connected, Claude gains tools it can call for numbers.
- Free, read-only Search Console. Six tools that return your own clicks, impressions, CTR, position, pages, queries, and sitemap status. Google grants only the read-only scope, so nothing can be changed through the connection. Tool by tool reference: Google Search Console MCP.
- Paid SERP, keyword, and audit tools. search_serp (1 to 3 credits), get_keyword_search_volume (15), find_keyword_ideas (15 to 50), get_ranked_keywords (5 to 20), and audit_page (5). New accounts start with 20 free credits.
This sits next to a skill rather than replacing it. The plugin decides how to audit; CalmSEO answers what people search for, who ranks today, and how your pages are performing. Claude Code can use both in the same session. Adding the endpoint to each Claude client is covered in connecting Google Search Console to Claude.
Research a topic and decide whether it needs a page
A realistic session from start to decision. All numbers are illustrative and rounded; the shape of each step is what matters. The site is a small accounting SaaS with an existing article at /blog/invoice-template. The question: does “freelance invoice template” deserve its own page?
Inputs
- Date of the session: 8 September 2026.
- Property: sc-domain:example.com.
- Date range for Search Console: 9 August to 5 September 2026, 28 days ending three days back to allow for Google’s reporting lag.
- Candidate topic: freelance invoice template.
Step 1: what the existing page already ranks for
Prompt: “What queries does /blog/invoice-template get impressions for, and which mention freelancers?” Claude calls get_gsc_page_queries (free) and filters the rows.
| Query | Clicks | Impressions | CTR | Position |
|---|---|---|---|---|
| invoice template | 1,240 | 48,900 | 2.5% | 8.1 |
| free invoice template | 610 | 31,200 | 2.0% | 9.6 |
| freelance invoice template | 61 | 4,900 | 1.2% | 12.3 |
| invoice template for freelancers | 18 | 1,700 | 1.1% | 14.8 |
| freelancer invoice example | 4 | 620 | 0.6% | 19.2 |
Reading: the page already appears for the freelance variants but sits on page two with a CTR around 1%. Google associates the page with the topic without rewarding it.
Step 2: what the SERP wants
Prompt: “Search ‘freelance invoice template’ and summarise what the top ten pages are.” Claude calls search_serp at depth 10 (1 credit). Illustrative result: eight of ten are pages titled specifically for freelancers, with sections on hourly versus project billing, late fees, and tax IDs; two are general invoice template pages. The intent is specific, and the general page you already have looks like the minority pattern.
Step 3: is the demand real
Prompt: “Get search volume for the freelance variants and the head term.” One get_keyword_search_volume call (15 credits) for the batch.
| Keyword | Monthly volume (US) | Paid competition |
|---|---|---|
| freelance invoice template | 2,400 | Low |
| invoice template for freelancers | 590 | Low |
| freelancer invoice example | 210 | Low |
| invoice template | 74,000 | Medium |
Reading: about 3,200 monthly searches across the freelance cluster, small next to the head term, which the existing page already serves. The illustrative volumes show demand; whether the cluster is winnable organically still needs a SERP and authority check.
Step 4: check nothing else already covers it
Prompt: “Do any other pages on the site get impressions for these freelance queries?” Claude calls query_gsc_search_analytics (free) grouped by page with a query filter containing “freelanc”. Illustrative result: only /blog/invoice-template and a pricing page with 40 impressions. No competing page exists.
The decision
Build a dedicated page at /templates/freelance-invoice, match the SERP’s structure (hourly and project billing, late fees, tax fields), and link to it from the freelancer paragraph on the existing article. Expected outcome: the new page takes over the freelance queries and the existing page keeps the head term.
The rejected alternative
Expand the existing article with a freelancer section instead. Rejected because the SERP is dominated by dedicated pages, the existing page averaged position 12 to 15 in this window (compare earlier windows before calling it stuck), and adding a second intent to a page that ranks well for the head term risks the term you already own. That is a judgement call, not a guarantee, and the measurement step below is how you find out if it was right.
Audit a draft, review recommendations, and measure results
Audit the draft
Once the page is live at a reachable URL, prompt “Audit /templates/freelance-invoice and list the issues that matter.” audit_page (5 credits) returns the title, headings, links, status code, canonical, and on-page problems. If you use the Claude SEO plugin, /seo page gives you a checklist pass over the same HTML. Both are useful; they check different things.
Review the recommendations
Claude will suggest fixes. A human still decides which ones to apply, because some are trade-offs the model cannot see: a shorter title may lose brand terms you need, a canonical change may affect a page that converts, an internal link may not fit the design. Ask Claude to show the data behind each recommendation and reject the ones that only have an opinion behind them.
Measure
Search Console data lags two to three days, and a new page needs weeks to settle. Set a reminder for four to six weeks after publishing, then run get_gsc_page_queries for both the new page and the original article over the same 28-day window and compare with the Step 1 table.
Keep measurements and hypotheses apart. “The new page has 210 clicks for freelance queries and the original lost 40” is a measurement. “The new page caused the original’s drop” is a hypothesis, and so is “the original would have grown anyway.” Claude is quick to turn the first into the second; ask it to label which is which.
What Claude cannot do for SEO
- Guarantee rankings. Live data improves the decision; it does not change what Google does with the page. Any tool that promises otherwise is selling something.
- Change your site. Through CalmSEO, Claude reads data only. Claude Code can edit files in a repository, but reviewing, deploying, and submitting URLs are still yours.
- Know numbers it was not given. Without a data source, volumes, positions, and competitor claims are plausible guesses. The failure is quiet: the answer reads the same either way. If a number matters, make sure a tool call produced it.
- See backlinks through CalmSEO. CalmSEO has no backlink index. For link profiles you still need Ahrefs, Semrush, or a similar suite, and the Claude SEO plugin’s backlink command depends on one of those integrations.
- Read everything in Search Console. CalmSEO’s tools return performance, sitemaps, and site lists. They do not expose manual actions, Core Web Vitals reports, or URL inspection; Google offers a separate URL Inspection API.
Frequently asked.
Is Claude good at SEO?+
Is the Claude SEO plugin free?+
Do I need Claude Code?+
Can Claude read my Search Console?+
Does Claude replace Ahrefs or Semrush?+
Can I use this with ChatGPT instead?+
How much does a research session like the worked example cost?+
Is CalmSEO affiliated with Anthropic or the Claude SEO plugin?+
Give Claude live SEO data
20 free credits + free Google Search Console tools. No card required.