SEO+GEO War Machine in Claude Code: The Complete Guide

Complete Tutorial · Claude Code

Build your SEO powerhouse in Claude Code

A step-by-step guide to connecting all the MCPs that power a complete SEO+GEO pipeline in Claude Code: Chrome (see the preview), Search Console (real data), keywords (Ubersuggest/Ahrefs), image generation, and WordPress publishing. Real configurations, exact commands—just copy and paste.

Level: Intermediate
Setup: ~15 min
By Décupler
🔌
Trendy MCPs
12
⚙️
Installation
~15 min
🤖
In
Claude Code
🚀
Pipeline
A → Z

The concept: one brain, multiple arms

Claude Code is the brain. The MCPs (Model Context Protocol) are the arms: each one connects Claude to a real-world tool (your browser, Search Console, a keyword tool, your WordPress site). Once connected, Claude no longer just “talks” about SEO—he does it: he reads your actual data, writes content, previews it, and publishes it.

  • MCP Chrome DevTools — Claude opens a browser and views the HTML rendering before publication
  • MCP Search Console (via Windsor.ai) — Your Site's Actual Impressions, Rankings, and Clicks
  • MCP Keywords (Ubersuggest / Ahrefs) — Search Volume, Difficulty, Intent
  • MCP imagegen — generates images for articles
  • WordPress Post — via the REST API (application password)

That's the core. In total, we connect 12 MCPs —the complete list is right below.

Claude Code in the center, connected via MCPs to the browser, Search Console, keywords, and WordPress
A brain (Claude Code) connected to its physical tools via the MCPs.
💡

There are two types of MCPs: those that run locally (launched by npx, declared in a config file) and the claude.ai connectors (connected with a single click from the settings). We'll look at both.

The 12 SEO MCPs to Connect to Claude

You don’t need 10 SEO tools at €200 each per month. You needONE solid SEO infrastructure, connected to your actual data. Here are the 12 MCPs we connect for our clients—and how each one fits in.

The 12 Best SEO Tools to Connect to Claude: DataForSEO, Ubersuggest, Ahrefs, Search Console, Firecrawl, Chrome, Google Analytics, PostHog, WordPress, ChatGPT/Perplexity, Reddit, Notion
Claude Code in the center, surrounded by the 12 MCPs that give him access to your real data.

The basic idea: Claude Code is in charge. Surrounding it are MCPs (connectors) that give it access to the data. You ask, it fetches the data, and it executes the command. The step-by-step details are right below.

⚙️

No need to set everything up all at once. Start with Search Console + a keyword tool + WordPress, then add the layers (crawl, analytics, AI visibility) as needed. One central hub, your real data, the best MCPs.

What you do with each MCP—and what you earn

The image shows you the roadmap. Here, MCP by MCP, arethe specific actions you take and the benefits you gain from them.

1
Search

DataForSEO

API · .mcp.json
You do

Volumes, difficulty, positions, and real-time SERPs—for thousands of keywords at once, billed per query.

You win

Unlimited data that replaces three licenses, with no monthly subscription.

Connection

.mcp.json file + your API credentials in .env (DATAFORSEO_LOGIN, DATAFORSEO_PASSWORD).

Quick Test

Give me the volume, difficulty, and top 10 results for "GEO Paris Agency" in the French market.

2
Search

Ubersuggest

claude.ai Connector
You do

Keyword expansion, Google suggestions, content ideas, SERP analysis.

You win

A prioritized backlog of articles without a license for €200 per month.

Connection

Native connector: Settings → Connectors → Authorize using your Ubersuggest account. Nothing to install, nothing to configure.

Quick Test

List 50 keywords related to “generative engine optimization,” including search volume and difficulty, for the French market.

3
Search

Ahrefs

API · Key Required
You do

Backlinks, referring domains, anchor text, and the pages that actually rank among your competitors.

You win

You see why they're going ahead—it's not just that they're going ahead.

Connection

Ahrefs API key (API plan required) declared in .mcp.json. Don't have API access? DataForSEO covers most of your backlink needs.

Quick Test

Compare my backlink profile to that of [competitor] and list the 20 domains that they have but I don't.

4
Data

Search Console

Connector or service account
You do

Impressions, clicks, average position, and actual search queries—page by page, for any time period you choose.

You win

Stop guessing: this is the only source that tells you what Google actually gives you.

Connection

Two options: a connector (Windsor.ai, no code), or a Google service account with ` GSC_CREDENTIALS_JSON ` in `.env ` for a local script.

Quick Test

List my pages ranked 8th through 15th over the last 28 days, sorted by impressions.

5
Crawl

Firecrawl

npx · API key
You do

Scrape any page into clean Markdown—including those rendered with JavaScript.

You win

Claude actually reads the top three results on the SERP before writing, instead of just guessing what they contain.

Connection

npx -y firecrawl-mcp in .mcp.json, with FIRECRAWL_API_KEY.

Quick Test

Scrape the first 3 results for “SEO audit” and tell me which sections they cover that I don’t have.

6
Rendering

Chrome / HTML

npx · local
You do

Claude opens a real browser, loads your page, checks how it looks, measures the Core Web Vitals, and takes a screenshot.

You win

Never again will an article be published with a broken block—it checks it before you do.

Connection

claude mcp add chrome-devtools — npx -y chrome-devtools-mcp@latest –isolated

Quick Test

Open this preview URL, check that all the images load, and show me the Core Web Vitals.

7
Data

Google Analytics

Connector · OAuth
You do

Sessions, conversions, entry pages, and behavior by channel.

You win

You're finally linking SEO to revenue, not just to search rankings.

Connection

GA4 connector (native or via Windsor.ai), OAuth authorization on your property. Read-only.

Quick Test

Which organic landing pages generated the most conversions last month?

8
Data

PostHog

API · Project Key
You do

Session replays, funnels, and custom events on your SEO pages.

You win

You can see where readers lose interest in the article—SEO doesn't end with the click.

Connection

PostHog project API key in .mcp.json. It points to the website project, not the app.

Quick Test

Of the organic visitors to this page, at what point do they drop off before reaching the form?

9
Publication

WordPress API

Local Script · REST
You do

Create, update, and publish posts and pages—title, slug, excerpt, media, and status.

You win

No copying and pasting: The article goes from the editor to the WordPress draft with a single command.

Connection

WordPress app password (revocable) + WP_SITE_URL, WP_USER, WP_APP_PASSWORD in .env.

Quick Test

Publish this HTML as a draft on WordPress, as a page, keeping the existing slug.

10
AI Visibility

ChatGPT / Perplexity

API · connector
You do

Run your target queries through AI search engines and note who is mentioned, in what order, and with what sources.

You win

Measuring Your GEO Market Share: The SERP Is No Longer the Only Playing Field.

Connection

Perplexity API key in .mcp.json. Responses are logged for month-over-month comparison.

Quick Test

Perplexity’s “Best GEO Paris Agency” ranking: Who is listed, and where do I rank?

11
Signals

Reddit

API · crawl
You do

Trace the threads back to where your target asks their real questions, using their exact wording.

You win

AI engines rely heavily on Reddit: being mentioned there means being mentioned by them.

Connection

Reddit read-only API (app registered on your account), or using Firecrawl to access the pinned threads.

Quick Test

Find the 10 most recent Reddit threads asking how to choose an SEO agency.

12
Management

Concept

claude.ai Connector
You do

Reads and writes your editorial framework: briefs, keywords, status updates, schedule, and approvals.

You win

The machine has a memory—what has been done, what remains, and who approved what.

Connection

Native connector: One click, and then you authorize only the relevant databases.

Quick Test

Create a row in the "SEO Mapping" database for each keyword we just validated.

Install Claude Code

Two ways to get started. The easiest: the Claude app (Mac, Windows, or the web at claude.ai/code)—just open your project and connect the connectors with a few clicks, without touching the terminal. Or use the command line (below), which is more flexible for MCPs running locally.

If you haven't already, install Claude Code (Node.js required), then run it from your project folder.

terminal
# Installation (one-time)
npm install -g @anthropic-ai/claude-code
# Run in your project
cd my-project
claude

MCPs are declared either in an .mcp.json file at the root of the project or using the ` claude mcp add` command. Both methods are used below.

MCP Chrome DevTools

The most important thing for quality: Claude opens a real browser, loads the page, and checks how it renders (screenshot + accessibility tree). No more “blind publishing”—we check the HTML before going live.

.mcp.json
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest", "--viewport", "1440x900", "--isolated"]
    }
  }
}

Equivalent in a single order:

terminal
claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest --isolated

Check: In Claude, ask, “Open this page and take a screenshot”—if it sends you a screenshot, it’s connected.

MCP imagegen

To ensure that each article is published with its images, we connect a generator (in this case, OpenAI's gpt-image-1 ). You'll need an OpenAI API key.

.mcp.json
{
  "mcpServers": {
    "imagegen": {
      "command": "npx",
      "args": ["-y", "imagegen-mcp", "--models", "gpt-image-1"],
      "env": { "OPENAI_API_KEY": "sk-…ta-clé…" }
    }
  }
}
🔒

Never commit your key. Store it in an environment variable or in a file that Git ignores.

Search Console via Windsor.ai

To make data-driven decisions (impressions, positions, clicks), connect Google Search Console. The easiest way is to use the Windsor.ai connector, which integrates GSC (and over 300 other sources) into MCP on the claude.ai side.

📌 Login (on the claude.ai side)

  1. Go toclaude.ai/customize/connectors
  2. Add Windsor.ai and authorize it
  3. In Windsor, connect the Search Console source and select your site's property
  4. In Claude, retrieve the queries from the last 90 days (fields: query, clicks, impressions, CTR, position, page)

Claude then retrieves the raw data, which you process into a query to identify the quick wins (pages ranked 5–20 that can move up to page 1):

terminal
python3 scripts/gsc_normalize.py \
  --in .cache/gsc-raw.json \
  --out .cache/gsc.json

Ubersuggest or Ahrefs

For search volume, difficulty, and intent, you can connect a keyword tool to MCP. Both Ubersuggest and Ahrefs offer a connector—the same connection process as Windsor.

📌 Connection

  1. Add the connector (Ubersuggest or Ahrefs) in Settings → Connectors, or specify its MCP server in .mcp.json if it's running locally
  2. Check authentication (account + tier) before starting
  3. Ask Claude: Suggestions for keywords, search volumes, and difficulty levels for your topics (French market)
🎯

Goal: Not 500 keywords in a spreadsheet, but a short list prioritized by commercial intent and feasibility. (Turning this into a complete editorial plan is coveredin another guide.)

WordPress Publishing (REST API)

You can publish directly to WordPress via its REST API using an app password (which can be revoked without exposing your real password). Create it in WordPress: Users → Profile → App Passwords.

.env
# Never committed
WP_SITE_URL=https://ton-site.com
WP_USER=your-username
WP_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx

A small script posts the content (article or page), which is saved as a draft by default for proofreading:

terminal
python3 scripts/wp_publish.py --type post \
  --title "My Title" --slug my-title \
  --content-file article.html --status draft
🖼️

Images are also uploaded via the API (/wp-json/wp/v2/media)—Claude generates them, compresses them, uploads them, and then inserts the URL into the content.

Skills: Solidify Your Methods

A “Skill” is a written method that Claude follows exactly the same way every time (role + rules + format). This is what makes production consistent and scalable. Each step in the pipeline has its own: keyword research, expert writing, lead magnet…

~/.claude/skills/expert-writing/SKILL.md
---
name: expert-writing
description: Writes an in-depth, well-sourced SEO+GEO article.
---
# Rules
1. Research BEFORE writing (data, SERPs, sources)
2. Each paragraph = one piece of data / one example / one method
3. Go into the technical “how,” not the “what”
4. Publish as a draft; never make up numbers

En Claude Code, un dossier ~/.claude/skills/<nom>/SKILL.md est auto-découvert. Tu invoques ensuite le skill par son nom.

Monitoring & Reporting

The loop is completed with monitoring. The MCP Search Console continuously updates a dashboard: what’s rising, what’s stagnating, and where to reinvest. A monthly report is generated automatically, and keyword rankings are tracked via the MCP Keywords tool.

  • Positions & Impressions: GSC in Real Time (Windsor)
  • Tracking target keywords: Ubersuggest / Ahrefs
  • Monthly report: generated and formatted automatically

How It All Fits Together

Keywords
Writing (skill)
Rendering (Chrome)
Images (imagegen)
Publish (WP)
Tracking (GSC)

Each step feeds into the next: GSC data reveals quick wins, keywords inform expert writing, Claude previews the final result before publishing, WordPress receives the linked and illustrated article, and GSC measures the results—which kickstarts the cycle all over again. One brain, one loop.

The 5 Combinations That Change Everything

An MCP on its own is just another tool. The real power comes from the chains: three or four MCPs calling each other within a single prompt, each passing its result on to the next. That’s when the work stops being manual—no more exporting, no more copying and pasting, no more open tabs “just to check.”

Here are the five channels we use most often, along with the exact prompt and what happens behind the scenes.

01CatchingUp on Quick Wins

Search ConsoleDataForSEOFirecrawlWordPress≈ 6 min
What you type:
Claude
Take my pages ranked 8 through 15 over the last 28 days.
For the 5 with the most impressions: find out what the top 3
cover that I don't, write the missing sections,
and update the draft page.
What Claude does on his own:
  1. Search Console — extracts queries ranked 8–15, aggregates by URL, and sorts by impressions.
  2. DataForSEO — retrieves the actual top 3 results from the SERP for the main search query of each URL.
  3. Firecrawl — scrapes these competitor pages and extracts their Hn structure and processed entities.
  4. Claude — Compare it to your page, make a list of the gaps, and write only what's missing.
  5. WordPress API — updates the existing page to draft status — slug and URL remain unchanged.
Available

5 optimized pages, in draft form, ready for proofreading. This is the combo that pays off the fastest: you’re working on pages that have already generated impressions, so every ranking gain is immediately visible.

02TheBrief That Doesn't Break New Ground

UbersuggestDataForSEOFirecrawlNotion≈ 4 min
What you type:
Claude
Create the brief for “GEO Paris Agency”: keyword expansion,
primary intent, what the top 5 results cover, the H1 structure that outperforms them,
and add it to the Notion database with the status “To be written.”
What Claude does on his own:
  1. Ubersuggest — semantic expansion, search volumes, Google suggestions, related questions.
  2. DataForSEO — Live SERP: Top Search Intent, Formats That Rank, AI Overview.
  3. Firecrawl — scrapes the top 5 results and extracts the Hn outlines, lengths, and topics covered.
  4. Claude —constructs the plane that contains the union of the 5— plus the angle that none of them takes.
  5. Concept — creates the entry: brief, keywords, status, target date.
Available

A brief based on the actual SERP, not on a model's recollections. No one opened a single tab.

03The articlewas reviewed before publication

ConceptSkillimagegenWordPressChrome≈ 9 min
What you type:
Claude
Write the article for the “X” concept brief using the expert-writing skill,
generate the visuals for the specified locations, publish as a draft,
then open the preview in Chrome and check how it looks.
What Claude does on his own:
  1. Concept — reviews the approved brief and its constraints.
  2. Expert Writing Skill — Stick to your method: research before writing, one piece of information per paragraph, and mandatory internal linking.
  3. imagegen — generates visuals for the locations specified in the brief.
  4. WordPress API — Publish as a draft, with a title, excerpt, and media.
  5. Chrome DevTools — opens the preview, checks that the images are loading and that no blocks are broken, and takes a screenshot.
Available

A draft that’s been proofread by a machine before you proofread it. Step 5 is the one everyone skips—it’s precisely the step that prevents you from discovering a broken block a week after it goes live.

04TheAI Visibility Score

PerplexityRedditSearch ConsoleNotion≈ 5 min
What you type:
Claude
Submit my 20 target search queries to Perplexity, identify which sites are cited,
compare them to my Google rankings for the same queries,
and log everything in Notion.
What Claude does on his own:
  1. Perplexity — queries the 20 search terms and collects the results along with their cited sources.
  2. Claude — counts citations by field and calculates your share of the voice.
  3. Reddit —identifies the threads that feed these responses—AI engines rely heavily on them.
  4. Search Console — shows you your actual Google ranking for the same search queries.
  5. Concept — records the statement for month-over-month comparison.
Available

A table like“3rd on Google, invisible on Perplexity.” The gap between the two columns is your GEO roadmap.

05TheMonthly Report That Writes Itself

Search ConsoleGoogle AnalyticsPostHogNotion≈ 3 min
What you type:
Claude
Put together the monthly report: Search Console vs. M-1 trends,
GA4 organic conversions, PostHog drop-off points,
and write it up in Notion.
What Claude does on his own:
  1. Search Console — impressions, clicks, and rankings (M vs. M-1); identifies the winners and losers.
  2. Google Analytics — Organic Sessions and Conversions by Landing Page.
  3. PostHog — where organic visitors drop off along the journey.
  4. Claude — check all three — not “traffic is increasing,” but “traffic is increasing on pages that don’t convert.”
  5. Notion — publishes the report, which is dated and comparable to the previous one.
Available

Reporting that used to take half a day. And most importantly: a report that actually says something instead of just listing charts.

What does it look like in the terminal?

Here’s how ComboNo.1 actually plays out. A sentence is entered; Claude selects his tools, calls them up in order, and produces an output. None of these steps is controlled manually.

claude — live session
> Take my pages ranked 8th through 15th and optimize the top 3.Search Console · 28-day search queries
  └ 1,284 queries analyzed · 47 URLs ranked 8th–15th

⏺ DataForSEO · Live SERP (×3)
  └ Top 3 results retrieved for “SEO audit,” “technical audit,” “website audit”

⏺ Firecrawl · Crawl (×9)
  └ 9 competitor pages · Hn sitemaps extracted

⏺ Analysis
  └ /se-audit/: 6 missing sections (including “how much does it cost,” “timelines”)
  └ /technical-audit/: 4 missing sections
  └ /site-audit/: 3 missing sections

⏺ Copywriting · missing sections only
  └ 13 sections · internal links added to 5 pages

⏺ WordPress · wp_publish.py --id 4812 --status draft
  └ ✅ draft updated · slug unchanged

Done — 3 pages enhanced, waiting for you to review them.
🔑

Here’s the shift: you’re no longer asking for a tool (“open Search Console”), you’re asking for a result (“improve my pages ranked 8–15”). It’s Claude who decides which MCPs to call, in what order, and what to do with their responses.

How this changes things, in hours

The benefit isn't that "Claude writes faster." The benefit is that data collection, cross-checking, and uploading are eliminated. All that's left are the two things that truly require a human brain: deciding what to focus on, and validating the output.

Task By hand Trendy
Find This Month's Quick Wins
GSC export, spreadsheet, filters, manual cross-checking
≈ 2 h 1 prompt · 6 min
Brief: Ranked in the top 5 of the SERP
5 tabs open, reviewing Hn tags one by one
≈ 1 hour 30 minutes 1 prompt · 4 min
Article + visuals + publishing
Writing, image library, copy-and-paste into WP
≈ 4 h 1 prompt · 9 min
Measuring Your Visibility in LLMs
Queries entered one by one, manually recorded
≈ 2 h 1 prompt · 5 min
Monthly Report
GSC + GA4 Exports, Formatting, Comments
≈ 3 h 1 prompt · 3 min
The entire month ≈ 12:30 p.m. ≈ 27 min

These are rough estimates based on our own processes for a site with about 100 pages. Your figures will vary depending on the volume and the number of connected MCPs.

⚠️

This time saved isn't used to publish 10 times as much. It's used to publish better: more research upfront, more proofreading afterward. A machine that churns out a large volume of shallow content simply produces shallow content faster.

Once you're connected, you no longer have to do SEO "by hand"

The infrastructure doesn't "explain" SEO—it runs it on your actual data. Once the MCPs are in place, you can simply ask Claude:

  • "Find my Search Console quick wins (positions 5–20) and sort them by traffic potential"
  • "Write an article about [keyword], with links to my existing pages, and show me a preview before publishing."
  • "Am I mentioned by ChatGPT / Perplexity in my 10 target prompts? If not, why not?"
  • "Check this page's speed and Core Web Vitals, and fix any blocking issues"
  • "Publish this draft in WordPress, including the generated and compressed images"
  • "Generate the monthly report: what's rising, what's stagnating, and where to reinvest"

There are three ways to connect an MCP—you can choose whichever one works best for your stack:

Method How Examples When
claude.ai Connector 1 click in Settings → Connectors Ubersuggest, Notion, Windsor.ai (GSC, GA…) The easiest way, without a terminal
.mcp.json (local) npx declared in the project Chrome DevTools, Firecrawl, imagegen Technical tools, on-site
API / key API key or application password DataForSEO, Ahrefs, WordPress, PostHog Direct access to a service
🔗

To learn more — Décupler guides and offers that are built on this infrastructure:

Frequently Asked Questions

Do you need to know how to code?

No, but being comfortable with a terminal helps. MCPs are connected via copy-and-paste (a file .mcp.json or a few commands), and the claude.ai connectors can be linked with a single click. Claude takes care of the rest.

What exactly is an MCP?

The Model Context Protocol is a standard that connects a model (Claude) to external tools. Each MCP gives Claude a specific capability: opening a browser, viewing Search Console, publishing to WordPress, or generating an image.

Does it work with Ahrefs instead of Ubersuggest?

Yes. The process is the same: you plug in the keyword connector of your choice. Both Ubersuggest and Ahrefs provide access that can be used in MCP.

What if I'm not using WordPress?

Publishing is done through an API: WordPress uses its REST API today, and the same principle applies to other CMSs that provide an API or a dedicated admin panel.

Your competitors are mentioned by the AI.
You, however, are not mentioned.

Take 30 minutes: I'll show you the 10 prompts where you don't appear, and the 3 quick wins to get you in there.

Book my 30-minute session

Free · No obligation

⚔️

Get the full tutorial

Leave your email address: I'll send you the guide and the settings ready to copy.

✅ All set! Enjoy the read.
Back to top