Free SEO audit tool · MCP server · 22 SEO tools

Free SEO and AEO audit tool
for vibe coders

Rank on Google. Get cited by ChatGPT, Claude and Perplexity. Pass Core Web Vitals. Fix the slow images, the missing schema and the broken meta — all from inside Claude Code, Cursor, Windsurf or ChatGPT Desktop, in minutes, without learning SEO. One install. 22 tools. Free.

Works with Claude Code Claude Desktop Cursor Windsurf ChatGPT Desktop Claude.ai web

SEO changes every quarter. We track it so you don't have to.

If you've shipped a Next.js, Astro, Lovable, v0, or Bolt.new site this year without ever opening Google Search Console — this is for you. New rules drop monthly. Penalties get triggered quietly. Most vibe-coded sites are missing 70% of the signals AI search engines look for.

01

You shipped a site. It's invisible.

Beautiful UI, Lighthouse green, zero organic traffic. ChatGPT, Claude, and Perplexity never mention your page — because it has no FAQPage schema, no llms.txt, no author byline, and the H2 headings aren't phrased as questions. Your site is technically online but invisible to the engines that decide who gets cited.

→ audit_aeo finds all 8 missing signals in 5 seconds
02

You haven't tracked the updates. Nobody has.

Google's Helpful Content update demotes AI-only content. llms.txt became a real standard in 2025. Google-Extended opts you in or out of AI Overviews. Backlink rules changed (again). None of this was a thing when you learned web dev — and yes, three of those changed last quarter too.

→ explain_seo_terms translates every word in an audit
03

Penalties happen quietly. You'd never know.

Doorway pages, cloaking, paid backlinks, scaled AI content — sites get demoted overnight by Google's spam systems. Most owners never check Search Console until traffic vanishes. Knowing the jargon is the first defense. Your AI applies the fixes once it knows what to look for.

→ seo_starter_kit ships the 4 baseline files most sites lack

22 tools. One job: rank you.

From "I just shipped my site" to ranking on Google and getting cited by AI search — without you ever opening a 40-page audit PDF. Each tool returns exactly what your agent needs to fix the issue and move on.

15 free 7 with API key all open source

Discovery — what should I do next?

3 tools · free

seo_starter_kit(domain)

You shipped a site. We hand back the exact robots.txt, sitemap.xml, llms.txt and JSON-LD templates — plus deploy order. Your agent writes the files into your repo.

find_topic_ideas(url)

You don't know what to blog about. We sniff your niche and tell your agent how to generate 15 topics across informational, commercial and transactional intent — with prioritization.

find_keyword_gap(url, competitors[])

You suspect competitors are taking your keywords. We return the gap-analysis methodology — your agent walks the user through it.

Diagnose — what's broken right now?

3 tools · free

audit_aeo(url)

The 8 signals ChatGPT, Claude, Perplexity and Google AI Overviews use to pick citations. Each failing check ships with a copy-pasteable fix recipe.

audit_seo(url)

On-page SEO scorecard. Ten checks scored 0–100 — title length, meta description, H1, canonical, viewport, HTTPS, OG, alt coverage, internal links, JSON-LD.

audit_hidden_pages(urls[])

Classifies every URL as robots-disallow, noindex, keep or unsure — catches admin pages, search results and checkouts that shouldn't be in Google.

Speed & images — this is the part nothing else does

3 tools · free

audit_speed(url, strategy)

Real Lighthouse scores and Core Web Vitals via Google PageSpeed Insights. Returns LCP / CLS / INP, image opportunities with bytes saved per file, render-blocking JS / CSS, failing on-page SEO audits.

audit_core_web_vitals(url)

One paragraph per metric — with the literal fix recipe. “LCP element is hero.png at 2.4 MB, convert to WebP saves 1.8 MB → -1.1s LCP.” Picks the LCP element URL so the agent knows which file to optimize.

optimize_images(images[])

For each image: target format (AVIF + WebP), responsive 1×/2× widths, alt suggestion, the literal sharp-cli / cwebp / avifenc command, and a ready-to-paste <picture> block with srcset. Your agent converts the files locally and rewrites the markup.

Generate — give me the file to deploy

3 tools · free

generate_sitemap_xml(urls[])

Pass your URL list, get back a deploy-ready sitemap with current lastmod. Submit to Google Search Console immediately.

generate_llms_txt(...)

The emerging llms.txt standard for telling LLMs what your site is about and how to cite you. Single highest-signal AEO file most sites are missing.

generate_robots_txt(...)

Build a robots.txt that explicitly allows GPTBot, ClaudeBot, PerplexityBot, Google-Extended. Default: allow — you want the citation traffic.

Content & install

3 tools · free

propose_titles_metas(urls[])

For each page, 5 title + meta-description candidates across 5 angles (descriptive, benefit-led, question, specific, keyword-first). User picks, agent applies. Length-validated.

explain_seo_terms(category?)

Reference glossary of 40+ SEO + AEO terms — what every word in an audit means. Categories: basics, AEO, technical, analytics, penalties.

install_skill(agent?)

The exact install commands for the Ranki SEO Skill across Claude Code, Claude Desktop, Cursor, Windsurf, Claude.ai web Projects, or generic AGENTS.md.

Your Ranki.io account — real ranking data, inside your IDE

7 tools · API key
Key

get_account()

Whoami for your API key. Returns name, email, plan, daily/monthly limits, current usage. Best first call after pasting a key.

Key

list_projects()

List the projects in your Ranki.io account — pulls your content pipeline into the same Claude or Cursor conversation.

Key

list_articles(project_id)

Paginated article index for one project — nano_id, title, status, language, focus keywords, TOC outline, word count, SEO score. Pick one, then call get_article.

Key

get_article(article_id)

Fetch a single Ranki.io article — title, HTML, focus keywords, TOC, embedded image URLs, SEO score.

Key

list_rank_tracking(project_id)

The 28-day Google Search Console summary for one project: totals, top 20 keywords by clicks, top 20 opportunity keywords (position > 10 with impressions — the easy wins).

Key

list_gsc_keywords(project_id)

Full paginated GSC keyword list. Sortable by clicks / impressions / position / CTR with impression floors. Use when the summary isn't enough.

Key

ai_visibility(project_id)

Recorded AI-citation snapshots — which of your tracked topics appeared in ChatGPT, Claude, Perplexity and Google AI Overview SERPs at capture time. Decides what to upgrade for AEO.

Install in 30 seconds

One CLI command auto-detects your editor and writes the right config. Or paste the JSON snippet for your client below. The 15 free tools work without a key (5 calls per IP per day). A paid Ranki.io key lifts that to 500 calls/day and unlocks the 7 bridge tools that read your GSC keywords, rank tracking, AI citations and article library.

One command, every editor
npx @ranki.io/cli install
# later, to refresh the Skill file:
npx @ranki.io/cli update
# diagnose your setup:
RANKI_API_KEY=rk_live_... npx @ranki.io/cli check

Detects Claude Code, Claude Desktop, Cursor, Windsurf and ChatGPT Desktop, then writes the MCP config and downloads the Skill into the right path. Source: github.com/1fancy/seo-aeo-audit-mcp-ranki/tree/main/cli.

Two open-source reference implementations

Both expose the same 22 tools with the same JSON output, the same SSRF guard and the same rate limits. Pick whichever fits your stack.

PHP 8.4  ·  production deployment behind mcp.ranki.io, hosted by us, zero deps. View source →
Node / TypeScript  ·  live on npm as @ranki.io/seo-aeo-mcp. Install with npx -y @ranki.io/seo-aeo-mcp (stdio) or add --serve for a self-hosted HTTP server. View source →

Or paste the right snippet manually:

Stdio · Claude Desktop · Code · ChatGPT Desktop

~/.claude/claude_desktop_config.json

{
  "mcpServers": {
    "ranki": {
      "command": "npx",
      "args": ["-y", "@ranki.io/mcp"],
      "env": { "RANKI_API_KEY": "YOUR_KEY" }
    }
  }
}
HTTP · Cursor · Windsurf

.cursor/mcp.json (or .windsurf/mcp.json)

{
  "mcpServers": {
    "ranki": {
      "url": "https://mcp.ranki.io",
      "headers": {
        "X-API-Key": "YOUR_KEY"
      }
    }
  }
}
Claude.ai web · Custom Connector

claude.ai → Settings → Connectors → Add custom connector

Name:           Ranki
URL:            https://mcp.ranki.io
Authentication: Header
Header name:    X-API-Key
Header value:   YOUR_KEY

Requires Claude.ai Pro, Team, or Enterprise. After saving, open a new chat — Ranki appears under the connector picker (🔌 icon).

Terminal · one-liner installers

Claude Code CLI

claude mcp add ranki \
  -e RANKI_API_KEY=YOUR_KEY \
  -- npx -y @ranki.io/mcp

Cursor / Windsurf · write the config file

mkdir -p .cursor
cat > .cursor/mcp.json <<'EOF'
{
  "mcpServers": {
    "ranki": {
      "url": "https://mcp.ranki.io",
      "headers": { "X-API-Key": "YOUR_KEY" }
    }
  }
}
EOF

After installing, your AI's first tool call should be get_account — it confirms your key works and shows your plan + limits. If the key is wrong, you'll get a precise error with a fix link.

And the Skill — a written playbook for your AI

Tools give your AI new capabilities. The Skill gives it a runbook — when to call which tool, in what order, how to interpret the output, where in your codebase the fix typically lives.

One Markdown file. Auto-activates on SEO/AEO prompts.

Drop the SKILL.md into ~/.claude/skills/ranki-seo/ for Claude Code, or use the matching .cursorrules / .windsurfrules / AGENTS.md for other agents.

  • Auto-activates when you mention SEO, AEO, sitemap, llms.txt, ranking, "ChatGPT isn't citing my docs," and 20+ other vibe-coder phrases
  • Five pre-built activation patterns: starter-kit flow, AEO-citation flow, topic-discovery, keyword-gap, perf
  • Hard constraints baked in — never recommend the forbidden word "outrank," never push the upgrade on trivial fixes
  • MIT licensed, customizable per project
# Installs MCP + Skill for whichever editor you have
npx @ranki.io/cli install
# User-level Skill (works in every project)
mkdir -p ~/.claude/skills/ranki-seo
curl -fsSL https://raw.githubusercontent.com/1fancy/ranki-seo-skills/main/skills/ranki-seo/SKILL.md \
  -o ~/.claude/skills/ranki-seo/SKILL.md

# Then restart Claude Code.
# Same file path as Claude Code — user-level Skill
mkdir -p ~/.claude/skills/ranki-seo
curl -fsSL https://raw.githubusercontent.com/1fancy/ranki-seo-skills/main/skills/ranki-seo/SKILL.md \
  -o ~/.claude/skills/ranki-seo/SKILL.md

# Restart Claude Desktop.
# Project-level rule file (run in your repo root)
curl -fsSL https://raw.githubusercontent.com/1fancy/ranki-seo-skills/main/skills/ranki-seo/.cursorrules \
  -o .cursorrules

# Cursor picks it up automatically — no restart needed.
# Project-level rule file (run in your repo root)
curl -fsSL https://raw.githubusercontent.com/1fancy/ranki-seo-skills/main/skills/ranki-seo/.windsurfrules \
  -o .windsurfrules
# No file install — uses Claude.ai Projects
# 1. claude.ai → Projects → New project
# 2. Custom instructions:
#    paste the body of SKILL.md (skip the YAML frontmatter)
# 3. Every chat in the Project auto-loads it.

# Get the body here:
# https://raw.githubusercontent.com/1fancy/ranki-seo-skills/main/skills/ranki-seo/SKILL.md
# Generic agent file (Continue.dev, Zed AI, OpenAI Codex, custom MCP)
curl -fsSL https://raw.githubusercontent.com/1fancy/ranki-seo-skills/main/skills/ranki-seo/AGENTS.md \
  -o AGENTS.md
# Run the MCP server directly via npm — stdio mode (subprocess install)
# Paste into your MCP client config (Claude Desktop / Code / ChatGPT Desktop):
{
  "mcpServers": {
    "ranki": {
      "command": "npx",
      "args": ["-y", "@ranki.io/seo-aeo-mcp"],
      "env": { "RANKI_API_KEY": "rk_live_..." }
    }
  }
}

# Or run as an HTTP server for Cursor / Windsurf / self-host:
npx @ranki.io/seo-aeo-mcp --serve --port 8787

# Package page: https://www.npmjs.com/package/@ranki.io/seo-aeo-mcp

Other SEO tools send you a 40-page PDF. We ship the fix.

You ask. The agent diagnoses, fixes your code, and proves the score moved — in one conversation. Lighthouse goes from 42 to 96. AEO goes from 38 to 96. Slow pages get fast. ChatGPT and Claude start citing you within weeks.

STEP 1 · YOU ASK

“Audit my site and fix what’s broken.” Plain English. No SEO knowledge required. Works on any URL.

STEP 2 · AGENT DIAGNOSES

Finds the real problems. The slow images. The missing schema. The pages Google hates. The H2s that ChatGPT can’t cite.

STEP 3 · AGENT FIXES

Writes the changes into your code. Compresses your images. Adds the missing meta. Generates the files. Commits.

STEP 4 · YOU RANK

Lighthouse green. AEO 96/100. Deploy and ChatGPT, Claude, Perplexity and Google start citing you within weeks.

Same answer, every time.Audits return identical results for the same site — no AI guessing, no hallucinated “you should probably”.

Open source forever.MIT licensed. Self-host the whole thing if you want. Stop using us tomorrow and the fixes still work.

Your real ranking data.Paid Ranki.io accounts plug in your Google Search Console keywords, AI citations and rank tracking — right in your IDE.

Real questions, real answers

What vibe-coders actually search for before installing an MCP server.

What is an MCP server, and why do I need one for SEO?
MCP (Model Context Protocol) is the standard Anthropic introduced in late 2024 for connecting AI agents to external tools. Ranki MCP adds SEO + AEO auditing, sitemap and llms.txt generation, keyword-gap analysis, and topic discovery — so your AI can fix your vibe-coded site without you having to learn SEO terminology.
Does this work with Cursor? Windsurf? Claude.ai web? Lovable? v0? Bolt.new?
Cursor and Windsurf: yes, native HTTP MCP support — point them at https://mcp.ranki.io with an X-API-Key header.

Claude Code, Claude Desktop, ChatGPT Desktop: yes — stdio MCP via npx -y @ranki.io/mcp.

Claude.ai web (Pro / Team / Enterprise): yes — add as a Custom Connector under Settings → Connectors. Same URL + header.

Lovable, v0, Bolt.new: those generate code but don't expose MCP configs in their UI yet. Workaround — install Ranki MCP in your Claude Code or Cursor session, then ask it to refactor the Lovable / v0 / Bolt output. Same result.
How do I know my API key is set up correctly?
Ask your AI to call get_account — it's the whoami of Ranki MCP. If your key works, you get back your name, email, plan, daily and monthly limits, and current usage. If the key is wrong, missing, or revoked, you get a precise error message telling you exactly which line in the MCP config to fix.
Can I use the Skill on Claude.ai web?
Claude.ai web doesn't load SKILL.md files directly the way Claude Code does. But two workarounds: (1) open Claude.ai Projects → create a new Project → paste the body of SKILL.md into the custom instructions — every chat in that Project auto-loads it. (2) The Custom Connector already exposes the Skill's tool selection logic via the tool descriptions themselves, so Claude.ai picks the right tool for the right prompt without the Skill file. Less rich, but works in zero seconds.
Does Ranki MCP use my Claude credits or yours?
Yours. The MCP server returns structured advice (checklists, fix recipes, generated files). Your AI evaluates them against your code using your own credits. We never make LLM calls on your behalf — that's why the advisor tools can run free.
Was Ranki MCP built by actual SEO professionals?
Yes. The product is the developer surface of Ranki.io, an AI SEO + AEO automation platform built by Younes Lamnabhi (in SEO since 2009 — 17 years of on-page work + 3 years of AEO research). The audit logic encodes patterns we use daily for thousands of paying users.
What does AEO mean? Why should I care?
Answer Engine Optimization — the structural signals (FAQPage schema, definitional intros, author bylines, llms.txt, comparison tables) that ChatGPT, Claude, Perplexity, and Google AI Overviews use to pick which sites to cite. In 2026, AEO is the fastest-growing search channel and most sites have zero coverage. Audit yours with audit_aeo in 5 seconds.
Will I need to learn how to read SEO reports?
No. The advisor tools return advice in a format your AI parses — checklists with pass/fail and copy-pasteable fix recipes. Your AI applies the fixes; you read the diff if you want to.
Do I need a Ranki.io account?
No, for the 15 free tools — they work without a key, rate-limited to 5 calls per IP per UTC day. Yes for the 7 paid bridge tools (list_projects, list_articles, get_article, get_account, list_rank_tracking, list_gsc_keywords, ai_visibility) which read your real Google Search Console data, AI citations and article library from your Ranki.io account. Get a key →
Is the source code open?
Yes — MIT license. PHP server and npx shim at github.com/1fancy/seo-aeo-audit-mcp-ranki. The companion Claude / Cursor / Windsurf Skill bundle at github.com/1fancy/ranki-seo-skills.
How is this different from Surfer SEO, Frase, SEMrush, Ahrefs?
Those are SaaS dashboards — you log in, paste a URL, get a report, switch back to your IDE, copy/paste the recommendations into your code. Ranki MCP lives inside your IDE. Your AI calls the tools inline, applies the fixes to your files, re-runs the audit. Different shape, different price (free), different audience (devs vibe-coding, not SEO professionals running campaigns).
Will Google penalize sites optimized this way?
No. Every check Ranki MCP runs is documented in Google's own search docs or the schema.org spec. We don't generate doorway pages, keyword-stuffed content, or anything that violates anti-spam guidelines. We're the opposite of "black-hat" — we make sites more readable to Google + AI.