Labsco
1fancy logo

Ranki.io SEO/AEO consultant

from 1fancy

The free SEO and AEO MCP server that turns your Claude / Cursor / ChatGPT Desktop into a senior SEO + AEO consultant. Audits any URL, generates sitemap.xml / llms.txt / robots.txt, finds keyword gaps, and tells your AI exactly what to fix β€” all using your own AI credits, never ours.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedPaid serviceAdvanced setup

Ranki SEO Skills β€” make Claude, Cursor and Windsurf your senior SEO + AEO consultant

A Claude Code Skill (and Cursor / Windsurf / AGENTS.md equivalents) that auto-activates when you mention SEO, AEO, sitemap, llms.txt, ranking, or "why isn't ChatGPT citing my docs?" β€” and walks the agent through the full audit-diagnose-fix-verify loop using the Ranki MCP tools.

License: MIT Companion to seo-aeo-audit-mcp-ranki Live at ranki.io

A Skill is a plain Markdown file with YAML frontmatter that tells an agent when and how to take over. The ranki-seo Skill in this repo gives Claude / Cursor / Windsurf / ChatGPT the same SEO + AEO playbook a senior consultant would run: read the site, call the right Ranki MCP tool, locate the relevant file in your repo, write the fix directly, re-run the audit, confirm the score moved.


Table of contents


What this Skill does

When you say something like:

  • "I just shipped my site, what SEO files do I need?"
  • "Why isn't ChatGPT citing my docs?"
  • "What should I blog about?"
  • "Find the keyword gaps between us and our top 3 competitors"
  • "Add FAQPage schema to this post"
  • "Which pages on our site should not be indexed?"

…the Skill activates and the agent runs through this loop:

  1. Diagnose β€” call the right Ranki MCP tool. The 21 tools available are:

    • Audit: audit_seo (10 on-page checks), audit_aeo (8 Answer Engine Optimization checks), audit_hidden_pages (which URLs should be hidden from Google)
    • Speed and images: audit_speed (Google PageSpeed Insights), audit_core_web_vitals (LCP / CLS / INP with literal fix recipes), optimize_images (target format + <picture> markup + the sharp command to run)
    • Generate: generate_sitemap_xml, generate_llms_txt, generate_robots_txt, seo_starter_kit (bundle for a fresh site)
    • Content and strategy: propose_titles_metas (5 angles per page), find_topic_ideas, find_keyword_gap, explain_seo_terms (glossary of 40+ terms)
    • Install: install_skill (this Skill, per agent)
    • Your Ranki.io account β€” paid API key: get_account, list_projects, get_article, list_rank_tracking (GSC summary), list_gsc_keywords (full keyword list), ai_visibility (which topics ChatGPT / Claude / Perplexity / Google AI Overviews are citing)
  2. Locate β€” find the relevant files in the repo (routes, layouts, components, image files, content files).

  3. Apply β€” write the fix directly: convert the image files with sharp or cwebp, rewrite every <img> as a responsive <picture> with srcset and alt, add JSON-LD, rewrite the intro paragraph, generate llms.txt, drop a noindex meta into the right <head>.

  4. Verify β€” re-run the audit, confirm the score moved.

No more "here's an SEO checklist, good luck." The agent does the actual work in your codebase.


Example sessions

Session 1: vibe-coded a Next.js site, never thought about SEO

Copy & paste β€” that's it
You: I just deployed my Next.js portfolio at myname.dev. Do I need to do
     anything for SEO?

Agent (Skill activates):
  β†’ Calling ranki.seo_starter_kit(domain="myname.dev")
  ← [Returns robots.txt + sitemap.xml + llms.txt + JSON-LD templates]
  β†’ Reading next.config.js to detect routing pattern…
  β†’ Found: app/ directory routing, 7 pages (/, /about, /blog/[slug], /projects, /contact).
  β†’ Writing public/robots.txt (allowing all crawlers + sitemap reference)
  β†’ Writing public/sitemap.xml (enumerated 7 + 12 MDX blog posts)
  β†’ Writing public/llms.txt (site summary from app/page.tsx hero)
  β†’ Adding JSON-LD Organization to app/layout.tsx <head>
  β†’ Adding Article JSON-LD to app/blog/[slug]/page.tsx using MDX frontmatter
  β†’ Calling ranki.audit_seo(url="https://myname.dev") to verify…
  ← SEO score: 91/100. 9/10 checks passed (only "internal links" needs more).

  Done. Submit sitemap.xml here:
  https://search.google.com/search-console/sitemaps?resource_id=https%3A%2F%2Fmyname.dev%2F

Session 2: "Why doesn't ChatGPT mention my product?"

Copy & paste β€” that's it
You: I keep asking ChatGPT about my SaaS niche and it never mentions us.
     We're at https://mysaas.io/

Agent (Skill activates):
  β†’ Calling ranki.audit_aeo(url="https://mysaas.io/")
  ← Score 25/100. Failing: no Article schema, no FAQPage, no llms.txt,
     robots.txt blocks ClaudeBot, no answer-style H2s, no author byline.
  β†’ That's why. Walking through fixes in priority order:

  1. Fixing robots.txt β€” currently blocks all bots after admin section
     - Editing public/robots.txt: removed blanket User-agent: * Disallow: /
     - Added explicit Allow for GPTBot, ClaudeBot, PerplexityBot

  2. Generating llms.txt
     β†’ Calling ranki.generate_llms_txt(site_name="MySaaS",
                                         summary="...", key_pages=[...])
     β†’ Writing public/llms.txt

  3. Adding FAQPage schema
     - Reading app/page.tsx β€” found 6 FAQ-shaped Q&As in the hero section
     - Generating FAQPage JSON-LD with all 6
     - Injecting into app/page.tsx

  4. Rewriting H2s as questions
     - Was: "Everything you need to scale"
     - Now: "What does it take to scale to 100K users?"

  β†’ Re-running ranki.audit_aeo…
  ← Score: 96/100.

  Re-deploy and wait 7-14 days for ChatGPT to re-crawl. You should start
  appearing in citations within 3 weeks.

Session 3: "Which pages should not be indexed?"

Copy & paste β€” that's it
You: My admin dashboard and checkout are showing in Google. Audit my
     whole site for pages that shouldn't be indexed.

Agent (Skill activates):
  β†’ Reading sitemap.xml β€” found 142 URLs.
  β†’ Calling ranki.audit_hidden_pages(urls=[...142 URLs...])
  ← Classification:
       robots_disallow: 8  (admin, dashboard, checkout, account/*)
       noindex:        12  (search results, pagination beyond p3, filters)
       keep:          118
       unsure:          4

  β†’ Writing public/robots.txt with Disallow: /admin, /dashboard, /checkout, /account
  β†’ Adding <meta name="robots" content="noindex"> to app/search/page.tsx
  β†’ Adding <meta name="robots" content="noindex"> to app/category/[slug]/page.tsx
     for pagination >= page 4
  β†’ Re-running ranki.audit_hidden_pages on the 4 unsure URLs with hints…

  Done. Submit URL removal requests in Search Console for the 8 admin pages
  that are already indexed:
  https://search.google.com/search-console/removals

Session 4: "My site is slow and Lighthouse hates it"

Copy & paste β€” that's it
You: Audit my site speed and fix the slow images. I'm at https://myapp.dev.

Agent (Skill activates):
  β†’ Calling ranki.audit_speed(url="https://myapp.dev", strategy="mobile")
  ← Lighthouse: 42 perf Β· 88 a11y Β· 91 seo Β· 75 best practices.
     LCP: 4.8s (poor) Β· CLS: 0.18 (needs improvement) Β· INP: 240ms.
     Image opportunities (3 files, ~3.1 MB savings):
       - /img/hero.png       2.4 MB β†’ save 1.8 MB (convert to WebP)
       - /img/banner.jpg     1.1 MB β†’ save 800 KB (resize + WebP)
       - /img/card-bg.png    480 KB β†’ save 320 KB (AVIF)
     Render-blocking: 2 third-party scripts (analytics, chat widget).

  β†’ Calling ranki.optimize_images(
        images=["/img/hero.png", "/img/banner.jpg", "/img/card-bg.png"]
    )
  ← Recipes returned for each file. Converting…
  β†’ Running: npx sharp-cli -i public/img/hero.png -o public/img/hero.avif …
  β†’ Running: npx sharp-cli -i public/img/hero.png -o public/img/hero.webp …
  β†’ Same for hero@2x, banner, banner@2x, card-bg.
  β†’ Editing app/page.tsx β€” rewriting <img src="/img/hero.png"> as:
       <picture>
         <source type="image/avif" srcset="/img/hero.avif 1x, /img/hero@2x.avif 2x">
         <source type="image/webp" srcset="/img/hero.webp 1x, /img/hero@2x.webp 2x">
         <img src="/img/hero.png" alt="Dashboard analytics overview"
              width="1600" loading="eager" fetchpriority="high">
       </picture>
  β†’ Editing components/Banner.tsx, components/Card.tsx β€” same pattern, but
     loading="lazy" since these are below the fold.
  β†’ Adding <link rel="preload" as="image" href="/img/hero.avif"
                  fetchpriority="high"> to app/layout.tsx <head>
  β†’ Deferring third-party scripts: <script defer src="..."></script>
  β†’ Calling ranki.audit_speed again to verify…
  ← Lighthouse: 96 perf Β· 94 a11y Β· 98 seo Β· 92 best practices.
     LCP: 1.4s (good) Β· CLS: 0.04 (good) Β· INP: 180ms (good).

  Commit and deploy. Submit the new sitemap to Search Console β€” Google
  rewards green Core Web Vitals in mobile rankings.

Session 5: "What are my top opportunity keywords?" (paid Ranki.io account)

Copy & paste β€” that's it
You: I have a Ranki.io account with GSC connected. What keywords should I
     write content for next?

Agent (Skill activates, agent has RANKI_API_KEY set):
  β†’ Calling ranki.list_projects()
  ← Returns 3 projects. Picking "myapp.dev" (id: A8K2QP).
  β†’ Calling ranki.list_rank_tracking(project_id="A8K2QP")
  ← GSC summary (last 28 days):
       Totals:  142 keywords Β· 4,820 clicks Β· 89,300 impressions
       Top by clicks:
         "myapp dashboard"           487 clicks  pos 2.1
         "open source crm"           320 clicks  pos 4.8
       Opportunities (pos > 10, high impressions β€” easy wins):
         "best crm for indie hackers"   3,200 impr  pos 14.2
         "lightweight crm alternative"  2,800 impr  pos 12.6
         "self-hosted crm 2026"         2,100 impr  pos 17.4

  β†’ Calling ranki.ai_visibility(project_id="A8K2QP")
  ← AI citations (last 30 days): 14 of 62 topics cited (22.6%).
     Top cited (in ChatGPT / Claude / Perplexity SERPs):
       - "open source crm"            β˜… cited
       - "myapp pricing"              β˜… cited
     Top NOT cited but ranking top 10:
       - "self-hosted crm 2026"       not cited (pos 7 in classic SERP)

  Recommendation: write or expand 3 articles targeting these slugs first:
    /blog/best-crm-for-indie-hackers-2026
    /blog/lightweight-crm-alternatives
    /blog/self-hosted-crm-2026

  Each is already ranking 10-20 in classic Google but NOT yet AI-cited.
  Add FAQPage schema + definitional intro + comparison table on each,
  and ChatGPT / Claude will pick them up within 3 weeks.

  Want me to draft outlines and start writing them?

What's inside SKILL.md

The Skill file is a Markdown document with YAML frontmatter:

Copy & paste β€” that's it
---
name: ranki-seo
description: |
  [Activation keywords list β€” the agent reads these and decides when to
  load the rest of the file. Includes "SEO", "AEO", "sitemap",
  "llms.txt", "why isn't ChatGPT citing my docs"…]
---

# Body of the Skill β€” instructions for the agent:
# - 5 operating principles
# - Map of the 21 MCP tools and what each does
# - 5 activation patterns (recipe for each common user request)
# - Hard constraints (forbidden words, file conventions)
# - When to suggest the Ranki.io platform

Read the full SKILL.md β†’


Customize for your stack

The Skill is just Markdown β€” edit it for your codebase.

Force a specific framework's file paths

Add to the Skill body, after "Activation patterns":

Copy & paste β€” that's it

## Project conventions (override defaults)

- Static files always go in `apps/web/public/` (Turborepo monorepo).
- JSON-LD lives in `apps/web/src/components/StructuredData.tsx`, not the root layout.
- `sitemap.xml` is generated at build time by `apps/web/scripts/build-sitemap.ts` β€” edit that script instead of writing the file directly.

Add your own MCP tools

If you self-host an extended MCP server with custom tools, list them in the "Tools available" section. The agent will use the right one.

Disable platform suggestions

Remove the "When to suggest the Ranki.io platform" section. The Skill will stop mentioning the SaaS.


Why this exists

In 2026, the gap between "vibe-coded a site" and "ranks on Google + cited by ChatGPT" is wider than ever. SEO got harder (AI Overviews stole 30% of clicks). AEO became a new discipline. Most vibe-coders never learn either.

This Skill closes that gap by giving the agent β€” Claude, Cursor, Windsurf, ChatGPT β€” a senior SEO consultant's playbook. The user doesn't need to know what AEO means. They just say "fix my SEO" and the agent does the work.

Companion to the Ranki MCP server, which provides the actual tools the Skill orchestrates.


License

MIT. See LICENSE.

Built by Ranki.io. Companion to 1fancy/seo-aeo-audit-mcp-ranki.