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.
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.
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 secondsYou 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 auditPenalties 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 lack22 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.
Discovery — what should I do next?
3 tools · freeseo_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 · freeaudit_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 · freeaudit_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 · freegenerate_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 · freepropose_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 keyget_account()
Whoami for your API key. Returns name, email, plan, daily/monthly limits, current usage. Best first call after pasting a key.
list_projects()
List the projects in your Ranki.io account — pulls your content pipeline into the same Claude or Cursor conversation.
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.
get_article(article_id)
Fetch a single Ranki.io article — title, HTML, focus keywords, TOC, embedded image URLs, SEO score.
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).
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.
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.
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.
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.
Or paste the right snippet manually:
~/.claude/claude_desktop_config.json
{ "mcpServers": { "ranki": { "command": "npx", "args": ["-y", "@ranki.io/mcp"], "env": { "RANKI_API_KEY": "YOUR_KEY" } } } }
.cursor/mcp.json (or .windsurf/mcp.json)
{ "mcpServers": { "ranki": { "url": "https://mcp.ranki.io", "headers": { "X-API-Key": "YOUR_KEY" } } } }
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).
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.
“Audit my site and fix what’s broken.” Plain English. No SEO knowledge required. Works on any URL.
Finds the real problems. The slow images. The missing schema. The pages Google hates. The H2s that ChatGPT can’t cite.
Writes the changes into your code. Compresses your images. Adds the missing meta. Generates the files. Commits.
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.
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.