{
  "markdown": "# @automatelab/ai-seo-mcp\n\n> AI Citation Toolkit for the Model Context Protocol\n\n[![npm version](https://img.shields.io/npm/v/@automatelab/ai-seo-mcp.svg)](https://www.npmjs.com/package/@automatelab/ai-seo-mcp)\n[![license](https://img.shields.io/npm/l/@automatelab/ai-seo-mcp.svg)](./LICENSE)\n[![node](https://img.shields.io/node/v/@automatelab/ai-seo-mcp.svg)](https://nodejs.org)\n\n**Audit why AI systems do or do not cite your pages.** MCP server. No API keys.\n\nWorks inside Claude, Cursor, Windsurf, Codex, and any MCP client that speaks stdio.\n\n---\n\n## What it checks\n\n- **AI crawler access** - GPTBot, OAI-SearchBot, ClaudeBot, and PerplexityBot allowed or blocked in `robots.txt`\n- **`llms.txt`** - present, spec-compliant, links alive\n- **Structured answer extraction** - FAQ headings, BLUF paragraphs, answer-ready blocks\n- **[[schema]] completeness** - FAQPage, Article, Organization, Person; flags deprecated patterns\n- **Entity clarity** - named entity density and `sameAs` coverage that help AI systems identify the subject\n- **Citation formatting** - canonical URL hygiene, `og:url`, `hreflang`, noindex traps\n- **Sitemap freshness** - `lastmod` signals that tell crawlers the page is current\n\n---\n\n## Run an audit. Get a list of citation-blockers, ranked.\n\n> **You:** Run an AI-SEO audit on `https://automatelab.tech/launching-the-ai-seo-mcp/`.\n\nResult (truncated):\n\n```json\n{\n  \"url\": \"https://automatelab.tech/launching-the-ai-seo-mcp/\",\n  \"score\": 61,\n  \"grade\": \"C\",\n  \"dimension_scores\": {\n    \"schema\": 45, \"technical\": 80, \"structure\": 40,\n    \"robots\": 90, \"freshness\": 85, \"authority\": 40,\n    \"entity_density\": 21, \"sitemap\": 100\n  },\n  \"findings\": [\n    {\n      \"severity\": \"critical\",\n      \"category\": \"structure\",\n      \"message\": \"No FAQ structure found (no FAQPage schema or H3 question headings).\",\n      \"fix\": \"Add FAQ H3 headings ending in '?' with answer paragraphs, and a FAQPage JSON-LD block.\",\n      \"estimated_impact\": \"high\"\n    },\n    {\n      \"severity\": \"warning\",\n      \"category\": \"authority\",\n      \"message\": \"Low authority signals - missing Organization or author Person schema.\",\n      \"fix\": \"Add Organization JSON-LD and Article.author as a Person node with sameAs links.\",\n      \"estimated_impact\": \"high\"\n    }\n  ]\n}\n```\n\nEach finding names the exact fix. No opaque scores, no guesswork.\n\n---\n\n## Install\n\n```bash\nnpx -y @automatelab/ai-seo-mcp\n```\n\nRequires Node 20 or later.\n\n### Claude Desktop\n\nAdd to `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows) or `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"ai-seo\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@automatelab/ai-seo-mcp\"]\n    }\n  }\n}\n```\n\nRestart Claude Desktop. Any MCP client that supports stdio transport works - same `command` / `args` pattern.\n\n### Optional: headless rendering for SPAs\n\nBy default `audit_page` reads raw HTML — fast, but misses content on React/Vue/Angular SPAs. Pass `render: \"headless\"` to spin up Chromium and audit the rendered DOM (adds 3-10s per audit).\n\nOne-time install:\n\n```bash\nnpm install playwright-core\nnpx playwright install chromium\n```\n\nThen call `audit_page` with `render: \"headless\"`. Use static for everything else — most marketing sites and docs render fine without it.\n\n---\n\n## Run it in CI (GitHub Action)\n\nThis repo doubles as a GitHub Action. Drop it in a workflow to fail a PR when any page regresses below an AI-citation score - the same audit engine, gated on every change.\n\n```yaml\n- uses: actions/checkout@v4\n- name: AI-SEO audit\n  uses: AutomateLab-tech/ai-seo-mcp@v0.5.0\n  with:\n    urls: \"https://example.com,https://example.com/pricing\"\n    min-score: \"70\"            # fail if any URL scores below this\n    respect-robots: \"true\"     # set false for staging / sites you own\n    report-path: \"ai-seo-report.md\"   # optional Markdown report artifact\n    fail-on-regression: \"true\"\n```\n\nThe Action builds the auditor from the pinned ref, runs `audit_page` on each URL, writes a scorecard to the job summary, and exits non-zero if any URL falls below `min-score` (when `fail-on-regression` is true). Outputs: `min_score_observed`, `urls_audited`, `report_path`. Full example: [`examples/github-action-usage.yml`](./examples/github-action-usage.yml).\n\n---\n\n## Further reading\n\n- [automatelab.tech](https://automatelab.tech/products/mcp/ai-seo/) - teardowns and case studies\n\n---\n\n<details>\n<summary>MCP tool surface (19 tools)</summary>\n\n| Tool | Purpose |\n|------|---------|\n| `audit_page` | Composite AI-SEO audit with 8-dimension scoring (schema, technical, structure, robots, freshness, authority, entity density, sitemap). |\n| `audit_schema` | Validate JSON-LD against Schema.org rules and AI-citation best practice. Flags deprecated patterns. |\n| `audit_canonical` | Canonical link integrity, trailing-slash hygiene, `og:url` consistency. |\n| `audit_site` | Single-call site sweep: `audit_page` + `check_robots` + `check_sitemap` + `audit_schema` with overall grade and top-5 fixes. |\n| `audit_sitemap` | Site-wide content audit: stride-sample N URLs from the sitemap, run `audit_page` on each, return distribution + worst pages + top findings. |\n| `check_robots` | Parse `robots.txt` and report per-crawler allow/disallow for all known AI crawlers. Surfaces the GPTBot-blocked-but-OAI-SearchBot-allowed trap. |\n| `check_sitemap` | Validate XML sitemaps: presence, URL count, `lastmod` freshness, image/video extensions. |\n| `check_technical` | HEAD tag audit: canonical, OpenGraph, Twitter Card, hreflang, HTTPS, noindex, title hygiene. |\n| `score_ai_overview_eligibility` | Score a page's probability of appearing in Google AI Overviews using current correlation factors. |\n| `score_citation_worthiness` | Score how citable a page or text block is for Perplexity, ChatGPT, Google AI Overviews, and Claude. Includes per-section `chunk_analysis` / `extractability_score`: how cleanly an LLM can lift a standalone answer from each heading. |\n| `score_agentic_browsing` | Score a page against the Lighthouse \"Agentic Browsing\" category (May 2026): llms.txt, WebMCP, accessibility-tree integrity, and layout stability. |\n| `score_test_citation` | Simulate \"would an AI engine cite this for this query?\" via MCP sampling, with deterministic heuristic fallback. |\n| `llms_txt_generate` | Generate `llms.txt` and optionally `llms-full.txt` from a domain's sitemap. |\n| `llms_txt_validate` | Lint an existing `llms.txt` for spec compliance and broken links. |\n| `rewrite_aeo` | Rewrite content for Answer Engine Optimization (BLUF structure, FAQ format, schema additions). |\n| `rewrite_geo` | Rewrite content for Generative Engine Optimization (entity definitions, comparison tables, synthesis-ready structure). |\n| `extract_entities` | Extract named entities, `sameAs` links, and citation-density score from a page's content and structured data. |\n| `diff_pages` | Compare two URLs for AI citation-worthiness: side-by-side dimension scores, gap analysis, and prioritized fix recommendations for url_a. |\n| `report_save` | Render an `audit_page` / `audit_site` result as a Markdown report and write it to disk under `MCP_WORKSPACE_ROOT`. |\n\n> **v0.4.0** renamed tools from flat `snake_case` to dot-notation (`audit_page`, `check_robots`, …) for a navigable hierarchy. Update any saved invocations.\n\nEnvironment variables: see [ENV.md](./ENV.md).\n\n</details>\n\n---\n\n## Contributing\n\nBug reports, feature ideas, and PRs welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## Security\n\nTo report a vulnerability, see [SECURITY.md](./SECURITY.md).\n\n## License\n\nMIT - see [LICENSE](./LICENSE).\n\nBuilt by [automatelab.tech](https://automatelab.tech)\n",
  "bytes": 7681,
  "sha": "b24cdf1f410434bfdb2a46d744f90cad54e9ef11d1b9f732b87b2e5e8959d7c4",
  "repo_slug": "automatelab-tech/ai-seo",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_automatelab_tech_ai_seo_e1759561/readme"
}