Canlah Skills Radar
Apollo · 搜索运营专员

AI SEO

automatelab-tech/ai-seo-mcp
✓ I/O · 20认领这个员工

AI SEO is a free, open-source MCP server by AutomateLab that audits web pages across 13 dimensions for AI citation eligibility. It evaluates schema validation, robots.txt compliance, llms.txt standards, entity density, and technical metadata to score how likely AI assistants such as ChatGPT, Perplexity, and Claude are to cite a given page. The server requires no API keys or registration and runs fully locally.

真实 I/O · 已连通 ✓

启动 server · tools/list · 20 个工具 · @automatelab/ai-seo-mcp

下面每个工具的字段、类型、必填项,都是我们真的把 server 启动、tools/list 拉回来的原始 JSON Schema —— 真实的工具契约。注意:下方「示例调用」是按 schema 自动生成的演示,不是真实调用的返回。

audit_page

Full AI-SEO audit of a single URL: returns categorized findings (info/warning/error) with severity, fix instructions, and a 0-100 composite score plus per-dimension subscores. Read-only. Fetches the URL once and runs every sub-audit (schema, robots, technical, sitemap, AI-Overview eligibility) against the response. No writes, no third-party APIs, no auth required, no rate limits beyond polite per

Input(真实 schema)
urlstringrequired
Public URL to audit. Must be a fully-qualified http(s) URL that returns HTTP 200 (redirects are followed). The tool fetches this URL once and runs every sub-audit (schema, robots, technical, sitemap, AI-Overview eligibility) against the res
include_raw_htmlboolean
If true, return the full raw HTML in the response under `raw_html`. Default false. Set true only when you need to inspect markup that wasn't captured by the structured findings; the payload can be large.
respect_robotsboolean
If true (default), the tool checks robots.txt before fetching and skips disallowed paths, returning a robots_blocked finding instead. Set to false ONLY for auditing your own site where you've intentionally blocked crawlers and need the audi
generate_reportboolean
If true, return a standalone HTML scorecard in the `report_html` field. The HTML is self-contained (no external dependencies) and can be saved as a .html file or pasted to Gist/CodePen. Default false to keep audits cheap.
renderstring
Rendering mode. `static` (default) fetches raw HTML via HTTP — fast (<1s) but misses JS-rendered content typical of SPAs (React/Vue/Angular landing pages). `headless` spins up Playwright Chromium, waits for networkidle, and audits the rende
示例调用
{
  "tool": "audit_page",
  "arguments": {
    "url": "…"
  }
}
audit_schema

Validate JSON-LD structured data against Schema.org rules and AI-citation best practices. Accepts either a URL (fetched) or a raw JSON string (parsed directly). Read-only when given `url` (one HTTP GET). Zero network when given `schema_json`. No writes. Deterministic, rule-based; no LLM. Validates required/recommended properties, @context correctness, sameAs links, and AI-search-friendly pattern

Input(真实 schema)
urlstring
Public URL to fetch and audit. Either this OR `schema_json` is required. Read-only HTTP GET.
schema_jsonstring
Raw JSON-LD as a string (the contents of a `<script type="application/ld+json">` block). Use this to validate a schema block offline without fetching a URL. Either this OR `url` is required.
respect_robotsboolean
If true (default), respect robots.txt before fetching `url`. Ignored when `schema_json` is used.
示例调用
{
  "tool": "audit_schema",
  "arguments": {
    "url": "…",
    "schema_json": "…",
    "respect_robots": true
  }
}
audit_canonical

Audit a page's canonical link integrity: presence, self-reference, cross-domain mismatches, trailing-slash hygiene, and og:url consistency. Read-only. One HTTP GET to fetch the HEAD section. Deterministic, rule-based; no LLM. When to use: a focused canonical-only audit (e.g. debugging a duplicate-content issue). For a full HEAD audit including OpenGraph, hreflang, noindex, title, use `check_tec

Input(真实 schema)
urlstringrequired
Public URL whose canonical link tag and og:url consistency you want to audit. Must be a fully-qualified http(s) URL. The tool fetches the URL (following redirects) and inspects only the <head> section; the body is not parsed.
respect_robotsboolean
If true (default), respect robots.txt before fetching. Set false only for auditing your own site where you've intentionally blocked crawlers.
示例调用
{
  "tool": "audit_canonical",
  "arguments": {
    "url": "…"
  }
}
check_robots

Fetch and parse a domain's robots.txt; report per-crawler allow/disallow posture for every known AI training crawler (GPTBot, CCBot, Anthropic-AI, Google-Extended, etc.), AI search crawlers (ChatGPT-User, PerplexityBot, OAI-SearchBot), and user-triggered fetchers. Read-only. One HTTP GET to /robots.txt. No auth, no rate limits applied. Deterministic, rule-based; no LLM. Returns structured findin

Input(真实 schema)
domainstringrequired
Hostname or origin to inspect. Examples: `example.com`, `https://example.com`, `https://example.com/`. The tool fetches `https://<domain>/robots.txt` and reports per-crawler allow/disallow posture for all known AI training crawlers (GPTBot,
示例调用
{
  "tool": "check_robots",
  "arguments": {
    "domain": "…"
  }
}
check_sitemap

Validate a domain's XML sitemap: presence, accessibility, URL count, lastmod freshness, sitemap-index handling, and image/video sitemap extensions. Read-only. Issues N+1 HTTP GETs: one for robots.txt + sitemap, then up to `max_urls_to_check` HEADs against sampled URLs. Deterministic, rule-based; no LLM. When to use: site-wide indexing audits. Pair with `check_robots` for a full pre-crawl pictur

Input(真实 schema)
domainstringrequired
Hostname or origin to inspect. Examples: `example.com`, `https://example.com`. The tool tries `/sitemap.xml` then the sitemap URL declared in robots.txt; follows sitemap index files one level deep. Read-only HTTP GETs against the domain onl
max_urls_to_checkinteger
Cap on how many URLs from the sitemap to sample for lastmod, image/video extension, and structural checks. Default 100. Increase up to 500 for large sites where you want a more representative sample; each extra URL is one HTTP HEAD.
示例调用
{
  "tool": "check_sitemap",
  "arguments": {
    "domain": "…"
  }
}
check_technical

Audit a page's HEAD section for technical signals relevant to AI crawlers: HTTPS, canonical, OpenGraph, Twitter Card, hreflang, noindex, and title-vs-H1 hygiene. Read-only. One HTTP GET, inspects HEAD only (body is not parsed). Deterministic, rule-based; no LLM. When to use: when you specifically need HEAD-tag audit findings. For the full page including schema and AI-Overview scoring, use `audi

Input(真实 schema)
urlstringrequired
Public URL to audit. The tool fetches the URL once and inspects HEAD-section signals: HTTPS, canonical, OpenGraph, Twitter Card, hreflang, noindex, title length and overlap with H1. Body content is not parsed. Read-only HTTP GET.
respect_robotsboolean
If true (default), respect robots.txt before fetching. Set false only for auditing your own site where you've intentionally blocked crawlers.
示例调用
{
  "tool": "check_technical",
  "arguments": {
    "url": "…"
  }
}
score_ai_overview_eligibility

Score a page's probability of appearing in Google AI Overviews. Returns an overall 0-100 score plus six factor subscores: semantic completeness, structured data, E-E-A-T signals, entity density, freshness, and technical hygiene. Read-only. One HTTP GET. Deterministic, rule-based scoring derived from published 2025-2026 AI-Overview correlation studies. No LLM calls. Same URL returns the same scor

Input(真实 schema)
urlstringrequired
Public URL to score. The tool fetches the URL once and runs deterministic, rule-based scoring across six factors (semantic completeness, structured data, E-E-A-T signals, entity density, freshness, technical hygiene) using published 2025-20
respect_robotsboolean
If true (default), respect robots.txt before fetching. Set false only for auditing your own site where you've intentionally blocked crawlers.
示例调用
{
  "tool": "score_ai_overview_eligibility",
  "arguments": {
    "url": "…"
  }
}
score_agentic_browsing

Score a page against the four signals Google added to the Lighthouse "Agentic Browsing" category in May 2026: presence of an llms.txt, WebMCP integration, accessibility-tree integrity, and layout stability. Returns an overall 0-100 score, a letter grade, and a per-factor breakdown. Read-only. One HTTP GET for the page plus one for /llms.txt (skip with check_llms_txt=false). Pass `html` instead of

Input(真实 schema)
urlstring
Public URL to fetch and score. Either this OR `html` is required.
htmlstring
Raw HTML to score offline without fetching. Either this OR `url` is required. llms.txt is treated as absent in this mode.
respect_robotsboolean
If true (default), respect robots.txt when fetching `url`. Ignored when `html` is used.
renderstring
Rendering mode for `url`. `static` (default) reads raw HTML; `headless` runs Playwright Chromium (adds 3-10s; requires `playwright-core`). Ignored when `html` is used.
check_llms_txtboolean
If true (default), probe /llms.txt for the host to score the llms.txt factor. Set false to skip that extra HTTP GET.
示例调用
{
  "tool": "score_agentic_browsing",
  "arguments": {
    "url": "…",
    "html": "…",
    "respect_robots": true
  }
}
llms_txt_generate

Generate a spec-compliant llms.txt (and optionally llms-full.txt) for a domain by reading its sitemap, sampling up to `max_pages` pages, and synthesizing a grouped, sectioned summary. Read-only. Issues one HTTP GET for the sitemap then one per sampled page. Deterministic; no LLM. Output is the file content as a string - this tool does NOT write to disk or upload anywhere. The caller is responsib

Input(真实 schema)
domainstringrequired
Hostname or origin to generate llms.txt for. Examples: `example.com`, `https://example.com`. The tool reads the domain's sitemap, fetches up to `max_pages` of them, and synthesizes a spec-compliant llms.txt grouped by section. Issues N+1 HT
max_pagesinteger
How many pages to sample from the sitemap when building section groupings. Default 30. Each page is fetched (one HTTP GET per page) - keep this low for large sites or rate-limited hosts.
include_fullboolean
If true, also generate llms-full.txt (the expanded variant containing full page text, not just URLs and titles). Default false. The llms-full.txt output can be large; only enable when you actually plan to host both files.
site_namestring
Override the site name used in the generated llms.txt header. If omitted, inferred from the homepage's <title> tag.
site_descriptionstring
Override the site description used in the generated llms.txt header. If omitted, inferred from the homepage's meta description.
示例调用
{
  "tool": "llms_txt_generate",
  "arguments": {
    "domain": "…"
  }
}
pricing_generate

Generate a machine-readable /pricing.md for AI shopping/agent flows. Finds the site's pricing page (or uses `pricing_url`), extracts named tiers and price lines, and returns the file content as a string. Read-only. Issues a few HTTP GETs probing common pricing paths. Deterministic; no LLM. Does NOT write or upload — the caller hosts the file at `https://<domain>/pricing.md`. When to use: a SaaS/

Input(真实 schema)
domainstringrequired
Hostname or origin to generate pricing.md for, e.g. `example.com`. The tool finds the pricing page (or uses `pricing_url`), extracts tiers and prices, and returns a machine-readable pricing.md string. Read-only.
pricing_urlstring
Explicit pricing page URL. If omitted, the tool probes common paths (/pricing, /plans, /pricing/).
示例调用
{
  "tool": "pricing_generate",
  "arguments": {
    "domain": "…"
  }
}
llms_txt_validate

Validate an existing llms.txt or llms-full.txt against the spec: structure, section ordering, link format, and (optionally) broken-link detection. Read-only. One HTTP GET when given `url`; zero network when given `content`. Optional link-check issues HEAD requests against each link if `check_links` is true. Deterministic; no LLM. When to use: auditing an llms.txt you already have. To generate o

Input(真实 schema)
urlstring
Public URL of an existing llms.txt or llms-full.txt to validate (e.g. `https://example.com/llms.txt`). Either this OR `content` is required.
contentstring
Raw llms.txt content as a string. Use this to validate a file offline without fetching. Either this OR `url` is required.
check_linksboolean
If true (default), HEAD each linked URL to detect broken links. Set false to skip link checks for faster, network-light validation of just the structural rules.
示例调用
{
  "tool": "llms_txt_validate",
  "arguments": {
    "url": "…",
    "content": "…",
    "check_links": true
  }
}
score_citation_worthiness

Score how citable a page or text block is for AI engines (ChatGPT, Claude, Perplexity, Google AI Overviews). Evaluates BLUF (bottom-line-up-front) opening, FAQ patterns, statistic density, entity clarity, and answer-shape fit for the optional `target_query`. Also returns `extractability_score` plus per-section `chunk_analysis`: how cleanly an LLM can lift a self-contained answer from each heading

Input(真实 schema)
urlstring
Public URL to fetch and score. Either this OR `text` is required.
textstring
Raw text/markdown/HTML to score directly without fetching. Either this OR `url` is required.
target_querystring
Optional target search query the content is supposed to answer (e.g. `how to fix CORS errors in Next.js`). When provided, scoring weights answer-shape fit and query-term coverage. Omit if you want a query-agnostic citability score.
respect_robotsboolean
If true (default), respect robots.txt when fetching `url`. Ignored when `text` is used.
示例调用
{
  "tool": "score_citation_worthiness",
  "arguments": {
    "url": "…",
    "text": "…",
    "target_query": "…"
  }
}
rewrite_aeo

Rewrite a content block for Answer Engine Optimization. Adds a BLUF opening, FAQ structure, schema additions, and concise question-shaped headings tuned for ChatGPT / Perplexity / Google AI Overviews. Read-only when given `url` (one HTTP GET). Zero network when given `text`. The tool does NOT write back to the URL - it only returns the rewritten content as a string. No side effects on the source.

Input(真实 schema)
urlstring
Public URL whose content should be fetched and rewritten. Either this OR `text` is required.
textstring
Raw content (markdown or HTML) to rewrite directly. Either this OR `url` is required.
target_querystringrequired
The user query the rewrite should answer (e.g. `what is RAG`, `how to deploy Ghost to Docker`). Required - drives heading shape and BLUF wording.
formatstring
Output shape. `article` for prose-with-headings. `faq` for Q&A list. `howto` for numbered-step procedural content with HowTo schema hints. `comparison` for X-vs-Y tables. Default `article`.
max_wordsinteger
Soft word budget for the rewrite. Default 1500. Range 100-5000. The rewrite tries to stay under this; very small budgets may force truncation.
respect_robotsboolean
If true (default), respect robots.txt when fetching `url`. Ignored when `text` is used.
示例调用
{
  "tool": "rewrite_aeo",
  "arguments": {
    "target_query": "…"
  }
}
rewrite_geo

Rewrite a content block for Generative Engine Optimization: entity-rich, comparison-ready, synthesis-friendly. Tuned for surfaces that summarize across sources (Perplexity, Google AI Mode, Claude search). Read-only on input. Does NOT write back to the source URL - returns the rewritten content as a string. This tool delegates the actual rewrite to the calling LLM via MCP sampling - it does not c

Input(真实 schema)
urlstring
Public URL whose content should be fetched and rewritten. Either this OR `text` is required.
textstring
Raw content to rewrite directly. Either this OR `url` is required.
target_querystringrequired
The user query the rewrite should answer. Required - drives entity selection and comparison framing.
add_comparison_tableboolean
If true, inject an explicit X-vs-Y comparison table into the rewrite (useful for `X vs Y` queries). Default false.
max_wordsinteger
Soft word budget. Default 1500. Range 100-5000.
respect_robotsboolean
If true (default), respect robots.txt when fetching `url`. Ignored when `text` is used.
示例调用
{
  "tool": "rewrite_geo",
  "arguments": {
    "target_query": "…"
  }
}
extract_entities

Extract named entities, linked concepts, and sameAs graph nodes from a page's content and structured data. Combines body-text NER with JSON-LD `@type` / `sameAs` walking. Read-only when given `url` (one HTTP GET). Zero network when given `text`. Primary path: MCP sampling - the host LLM does the NER and returns typed entities with sameAs URIs. Fallback path: deterministic regex-based extractor w

Input(真实 schema)
urlstring
Public URL to fetch and analyze. Either this OR `text` is required.
textstring
Raw text/HTML to analyze directly. Either this OR `url` is required.
respect_robotsboolean
If true (default), respect robots.txt when fetching `url`. Ignored when `text` is used.
renderstring
Rendering mode for `url`. `static` (default) reads raw HTML. `headless` runs Playwright Chromium to capture JS-rendered content (adds 3-10s; requires `playwright-core` + `npx playwright install chromium`). Ignored when `text` is used.
示例调用
{
  "tool": "extract_entities",
  "arguments": {
    "url": "…",
    "text": "…",
    "respect_robots": true
  }
}
score_test_citation

Simulate `would an AI engine cite this page for this query?`. The host LLM role-plays the chosen engine (chatgpt / claude / perplexity / google_ai_overviews / any), reads the page content, and returns a cite/no-cite verdict with the verbatim excerpt it would surface plus ranked improvements. Read-only when given `url` (one HTTP GET). Zero network when given `text`. Primary path uses MCP sampling

Input(真实 schema)
urlstring
Public URL to fetch and test. Either this OR `text` is required.
textstring
Raw text/HTML to test directly. Either this OR `url` is required.
target_querystringrequired
The user query the engine is answering. Required. Example: `how to add JSON-LD to a Next.js app`.
enginestring
Which engine to simulate. `any` (default) uses a generic AI-search persona. Specific engines tune the cite criteria (e.g. perplexity favors statistic-dense excerpts; google_ai_overviews favors schema + freshness).
respect_robotsboolean
If true (default), respect robots.txt when fetching `url`. Ignored when `text` is used.
示例调用
{
  "tool": "score_test_citation",
  "arguments": {
    "target_query": "…"
  }
}
diff_pages

Compare two URLs for AI citation-worthiness and return a structured breakdown of which page is more likely to be cited and why. Typical use: your page (url_a) vs a competitor's page (url_b). Read-only. Runs audit_page on both URLs in parallel (2 HTTP fetches per URL), then diffs dimension_scores and findings. No new fetch logic beyond what audit_page already does. Deterministic, rule-based; no L

Input(真实 schema)
url_astringrequired
First URL to compare - typically your own page. Must be a fully-qualified http(s) URL that returns HTTP 200 (redirects are followed).
url_bstringrequired
Second URL to compare - typically a competitor's page. Must be a fully-qualified http(s) URL that returns HTTP 200 (redirects are followed).
querystring
Optional target search query both pages are competing for (e.g. 'how to connect Zapier to Notion'). When provided, it is surfaced in fix_recommendations_for_a as context. Does not alter the scoring algorithm - scoring is based on audit_page
respect_robotsboolean
If true (default), respect robots.txt before fetching each URL. Set false only when auditing your own sites where you have intentionally blocked crawlers.
示例调用
{
  "tool": "diff_pages",
  "arguments": {
    "url_a": "…",
    "url_b": "…"
  }
}
audit_site

Single-call site sweep: runs audit_page (homepage), check_robots, check_sitemap, and audit_schema in parallel and returns an overall grade (A–F) plus top-5 highest-impact fixes. Read-only. Issues several HTTP GETs against the domain (homepage fetch, robots.txt, sitemap.xml, and up to 50 sitemap URL HEAD checks); no writes, no auth required, no rate limits beyond polite per-host throttling. The ho

Input(真实 schema)
domainstringrequired
Hostname or origin to audit. Examples: `example.com`, `https://example.com`. The tool resolves the homepage and runs audit_page + check_robots + check_sitemap + audit_schema in parallel against it, then returns an overall grade plus top-5 f
respect_robotsboolean
If true (default), respect robots.txt before fetching the homepage. Set false ONLY to audit a site you own that has temporarily blocked crawlers.
示例调用
{
  "tool": "audit_site",
  "arguments": {
    "domain": "…"
  }
}
audit_sitemap

Site-wide content audit: discovers the sitemap, samples N URLs by deterministic uniform stride, runs audit_page on each, and returns score distribution + worst pages + most-common findings. Read-only. One HTTP GET for sitemap discovery, optionally a few more for sitemap-index children, then `sample_size` × audit_page calls (each one HTTP GET + parsing). Polite throttling is enforced per host. De

Input(真实 schema)
domainstringrequired
Hostname or origin to audit. Examples: `example.com`, `https://example.com`. The tool discovers the sitemap, samples N URLs by uniform stride, and runs audit_page on each.
sample_sizeinteger
Number of URLs to sample from the sitemap. Default 10. Max 50 (sampling caps to avoid runaway audits — each sample is one full audit_page call, ~1-3s with polite throttling). Sampling is deterministic uniform-stride: if the sitemap has 1000
respect_robotsboolean
If true (default), respect robots.txt for each sampled URL. Set false only for self-audits where you've intentionally blocked crawlers.
concurrencyinteger
Parallel audit_page calls. Default 2 (gentle). Max 5. The shared politeFetch host-delay is still enforced, so this is per-batch dispatch concurrency, not bypass.
示例调用
{
  "tool": "audit_sitemap",
  "arguments": {
    "domain": "…"
  }
}
report_save

Render an audit_page or audit_site result as a Markdown report and write it to a file under MCP_WORKSPACE_ROOT (defaults to cwd).

Input(真实 schema)
audit_resultany
The return value of `audit_page` or `audit_site`. Pass the structured result verbatim - the tool detects which shape it is and renders the matching Markdown report.
pathstringrequired
Target file path. May be relative to MCP_WORKSPACE_ROOT (or cwd if unset). Paths that escape the workspace root are rejected.
overwriteboolean
If true (default), overwrite an existing file. If false, the write fails when the target already exists.
示例调用
{
  "tool": "report_save",
  "arguments": {
    "path": "…"
  }
}

综合分

Canlah Score35
归属岗位Apollo · 搜索运营专员
岗位分值×1.30
★ Stars2
↓ 下载量1.6k
工具数(实测)20
npm 包@automatelab/ai-seo-mcp
✓ 已连通:字段来自真实的 tools/list(工具清单)。工具本身尚未真实调用。

效果测评卡

进行中 · 待运行
任务成功率
输出质量 (LLM 评审)
延迟
成本 / token
稳定性

真实 I/O 已解决「输入输出是什么」;下一步接 agent 真跑,量化「效果好不好」。

取用 / 安装

npx -y @automatelab/ai-seo-mcp
同岗位其他 skill
DataForSEO
dataforseo/mcp-server-typescript
✓ I/O · 89

The DataForSEO MCP server provides AI assistants with direct access to DataForSEO's SEO and marketing analytics APIs. Built with TypeScript, it exposes tools across four main modules: SERP for search engine results, Keywords Data for keyword research, OnPage for content analysis, and DataForSEO Labs for competitive research and market analysis. The server handles authentication with the DataForSEO API, implements field filtering for focused data retrieval, and follows a modular architecture that makes it easy to extend with additional tools. This implementation is particularly valuable for digital marketers and SEO professionals who need to analyze search rankings, research keywords, evaluate competitors, and optimize content without leaving their AI assistant conversation.

Apollo22327k
69
Lighthouse
danielsogl/lighthouse-mcp-server
✓ I/O · 12

This MCP server integrates Google Lighthouse web performance auditing capabilities, built by Daniel Sogl to provide automated website performance, accessibility, SEO, and best practices analysis through the Lighthouse testing framework. The implementation enables programmatic execution of Lighthouse audits against web pages, returning detailed performance metrics, optimization recommendations, and compliance scores that can be used for continuous monitoring, automated testing pipelines, or bulk website analysis workflows.

Apollo622.8k
53
AutomateLab SEO Performance
automatelab-tech/seo-performance-mcp
✓ I/O · 9

AutomateLab SEO Performance unifies data from Google Search Console, GA4, Matomo, Microsoft Clarity, and AI citation tracking to assess post-publish content performance. Eight tools grouped across posts, cohort, and GSC categories emit per-URL verdicts—refresh, expand, merge, kill, double_down, or hold—with reason codes and confidence scores. The server runs locally via stdio with credentials provided as environment variables and is available as the npm package @automatelab/seo-performance-mcp.

Apollo11.3k
33