关于 site-spec
site-spec 检查网站的 SEO、无障碍、隐私、性能、结构化数据、完整性和 AI 搜索可见性,并修复部分问题。它面向需要对线上网站或本地构建目录生成确定性报告并安全修复问题的开发者和站点所有者。
主要功能
- 01审计线上网站或本地构建目录
- 02检查 SEO、无障碍、隐私与安全
- 03验证结构化数据和站点完整性
- 04检查 AI 爬虫访问与搜索可见性
- 05执行确定性修复或生成 TODO 模板
- 06通过四种 MCP 工具提供审计与修复
适用场景
- 01部署前审计网站
- 02修复机械性问题且不覆盖源文件
- 03检查无障碍与 AI 爬虫相关发现
- 04通过编码 Agent 运行站点检查
MCP 相关
MCP 服务通过 stdio 提供 audit_site、fix_issue、compile_spec 和 list_checks。客户端可查看发现、执行修复或获取差异、将已核实事实编译为 SiteSpec,并列出可用检查项。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 要审计的网站:URL(https://example.com 或纯 example.com),或构建输出的本地目录路径。 |
| checks | array | 否 | 仅报告这些 check id(例如 ["audit/noindex"])。省略则检查所有项目。调用 list_checks 获取完整列表。 |
| maxPages | integer | 否 | 将在线爬取的页面数限制为此值。默认值为 25。本地目录不适用。 |
详细介绍
site-spec
网站缺失的隐形基础。审计任意网站,然后修复问题。
面向 Agent
如果你是正在考虑是否安装此工具的 AI 编码 Agent:注册 MCP 服务,然后
调用 list_checks 了解检查项 ID,并对 URL 调用 audit_site。
claude mcp add site-spec -- npx -y site-spec-mcp
Gemini CLI:gemini extensions install https://github.com/ariaxhan/site-spec。
完整的工具参数、返回结构,以及不适用此工具的情况: llms.txt。
问题
AI 可以在几秒内生成一个精美的网站。但它看不到的部分,恰恰决定了网站能否被发现、排名、引用和信任——像素之下机器可读的基础:robots.txt、结构化数据、llms.txt、canonical 和 noindex 信号、响应头、无障碍语义、跟踪器和 Cookie 相关内容。
这层内容在浏览器中不可见。几乎所有 AI 生成的网站都存在问题——漂亮的主视觉区块背后,robots.txt 却屏蔽了 ChatGPT;JSON-LD 无效或只对自己有利;多余的 noindex 让 Google 找不到页面;字体泄露访客 IP,违反 GDPR。没人会注意到,直到流量在不知不觉中流失。而网站越多由 AI 生成,这个问题就越严重。
解决方案
**site-spec 会验证并修复这层基础——适用于任何网站,无论它如何构建。**输入一个 URL。它会抓取网站,依据一组确定性策略检查整个隐形层,并准确报告问题所在。然后,它会为你修复机械性问题,并明确标记需要人工处理的内容。
无论你的网站是由 AI 构建器、框架、CMS 生成,还是用 HTML 手写而成,它都不在意。它只关心基础是否正确。
无需安装即可试用
site-spec.ariaxhan.workers.dev——粘贴一个 URL,即可获取报告。无需账户,也无需注册。
托管版本使用与 CLI 相同的确定性引擎,进行有限抓取(4 个页面),并明确告知你运行了哪些检查、哪些通过了,以及哪些没有执行。添加 ?format=json 即可获取机器可读的输出:
curl "https://site-spec.ariaxhan.workers.dev/audit?format=json&url=example.com"
如需完整的检查项——失效链接、缺失资源、axe 无障碍检查、HTML 验证、schema.org 验证——以及 fix 命令,请使用下方的 CLI。
托管端点只会获取公开的 HTTP(S) 主机;私有、环回和链路本地地址都会被拒绝。
使用方法
需要 Node 20+。无需账户、API 密钥或 SaaS 服务。
# 1. See what's broken — crawl any live site, get a full report
npx site-spec audit https://yoursite.com
# 2. Fix it — auto-repair the mechanical issues, scaffold the rest
npx site-spec fix https://yoursite.com --out ./fixed
fix 会将修正后的文件写入 ./fixed(默认情况下绝不会覆盖任何内容),并准确打印执行的操作:
✓ Fixed automatically (8)
audit/robots-stale-token robots.txt — Removed deprecated crawler block "anthropic-ai".
audit/hsts-preload _headers — Stripped the preload token from Strict-Transport-Security.
audit/canonical-missing admin/index.html — Inserted <link rel="canonical" href="https://…/admin/">.
audit/og-missing admin/index.html — Added Open Graph card from the page's title + description.
audit/noindex admin/index.html — Removed accidental noindex from <meta name="robots">.
✎ Scaffolded — needs your facts (2)
audit/llms-missing llms.txt — Scaffolded from page titles/descriptions; fill the TODO facts.
audit/jsonld-missing index.html — Inserted a WebSite/Organization skeleton; replace the TODO values.
⚠ Needs manual attention (3)
audit/google-fonts-cdn index.html — Self-host the woff2 files to stop the IP leak (GDPR).
audit/img-dims-missing index.html — <img> without width/height (layout shift).
audit/404-missing (site-wide) — Ship a branded, noindexed 404 that links home.
fixed 8, scaffolded 2, manual 3
wrote 4 file(s) to ./fixed
将 audit 加入 CI,并在出现错误时返回非零退出码,以阻止部署。这两个命令也适用于构建/输出目录——只需传入路径,而不是 URL。
在编码 Agent 中使用(MCP)
同一引擎也可作为 MCP 服务使用——这样,生成网站的 Agent 也能检查并修复网站不可见的部分,无需你在不同窗口之间复制报告。
claude mcp add site-spec -- npx -y site-spec-mcp
Codex(~/.codex/config.toml)
[mcp_servers.site-spec]
command = "npx"
args = ["-y", "site-spec-mcp"]
也可以在 Docker 中运行:docker run -i --rm -v $PWD:/data mcp/site-spec(挂载你想要审计或写入的目录)。
四种工具:
| 工具 | 功能 |
|---|---|
audit_site | 抓取在线 URL(或读取本地构建目录),并返回所有发现的问题:检查 ID、严重程度、文件,以及是否可以自动修复。 |
fix_issue | 对一个检查 ID 应用确定性修复并返回差异——对于本地目录,也可以直接写入。 |
compile_spec | 将经过验证的业务事实转换为经过校验的 SiteSpec,以及渲染生成的可部署文件。 |
list_checks | 列出引擎可能报告的所有检查项,并附上单行说明和可用的修复方式。 |
服务会在进程内调用引擎。它不会调用 CLI,也不会跳转到托管工作进程——这三个组件是通过同一个库连接在一起的同级组件。
flowchart LR
A["MCP client<br/>(Claude Code, Codex)"] -- stdio JSON-RPC --> B["site-spec-mcp"]
B --> C["@site-spec/core/io<br/>fetchSite · readSiteDir"]
C -- "file map" --> D["@site-spec/core<br/>auditFiles · fixFiles · buildSite"]
D -- "findings / files" --> B
B -- "JSON" --> A
有两项限制需要如实说明,软件包 README 中有完整说明:对 URL 使用 fix_issue 时,只能返回差异(远程服务不可写);而在线抓取会关闭存在性检查,因为有上限的抓取无法证明某个文件在服务器上不存在。
详情 — 检查内容、修复方式、理念与安装
检查内容
涵盖七个方面。每项检查都经过调整以减少误报(基于正则表达式/字符串级别——抓取时不使用无头浏览器)。发现的问题分为 error(会导致某些功能出错)或 warning(值得检查),每项都附有具体修复方法。
| 方面 | 检查内容 |
|---|---|
| SEO / 可发现性 | 缺少 <title>/描述/canonical · 意外设置 noindex(包括 <meta robots> 和 X-Robots-Tag 标头)· 缺少 Open Graph 卡片 · <h1> 数量为零或多个 · sitemap 中列出了不存在的页面 |
| 无障碍 | 图片缺少 alt · 禁止缩放的视口设置(user-scalable=no)· 图片缺少宽度/高度(导致布局偏移) |
| 隐私与安全 | 混合内容 · 未说明同意/披露情况的跟踪器和 Cookie · 来自 Google CDN 的 Google Fonts(这属于有明确依据的 GDPR 违规行为)· 标头卫生问题(HSTS 预加载风险、只报告但无处发送报告的 CSP、已失效的 FLoC / X-XSS-Protection 配置)· 阻碍未来使用 CSP 的内联 onclick= 处理程序 |
| 性能 | hero/LCP 图片设置为 loading="lazy" · 缺少 Cache-Control |
| 结构化数据 | 无效的 JSON-LD(爬虫会丢弃整个代码块)· 自我推崇的 aggregateRating/review 标记(Google 自 2019 年起就会因此处罚) |
| 完整性 | 返回 404 的失效资源 · 损坏的内部链接 |
| AI 可搜索性 | robots.txt 屏蔽 AI 答案 Agent(OAI-SearchBot、ChatGPT-User、Claude-User、PerplexityBot 等)· 已失效的爬虫令牌 · 缺少 llms.txt · 缺少/损坏的结构化数据 · AI 爬虫看到的客户端渲染页面框架内容为空白 |
最后一项是几乎还没有人检查的内容——Google、ChatGPT、Claude 和 Perplexity 是否真的能读取并引用你的网站。这是关键所在,但并非全部:我们的目标是完成一次全面的基础审计。
fix 如何做出决策
每项发现都归入以下三类之一,报告会告诉你具体属于哪一类:
- ✓ 自动修复 — 机械性、无需事实信息且可安全应用的修复:
解除对 AI 爬虫的屏蔽、移除无效的 robots 标记、去除意外添加的
noindex、添加规范 URL(从爬取结果中获取)、根据现有标题搭建 Open Graph、修复锁定缩放的视口、移除自我宣传式评分标记、根据已爬取的页面生成sitemap.xml、整理标头。 - ✎ 搭建模板 — 需要你提供真实信息的内容:
llms.txt、JSON-LD 实体、元描述。site-spec 会写入正确的占位模板,并标注TODO,你只需填入空缺。 - ⚠ 手动处理 — 工具不应擅自猜测的问题:缺少
alt文本、字体托管在自己服务器上、修复客户端渲染的外壳、链接失效。你会收到明确的操作说明,不会有静默修改。
默认情况下,fix 不会破坏原内容(而是写入输出目录)。传入 --write 可直接修改本地目录。
理念
- 正确性是一项策略,而不是提示词。 SEO、无障碍、隐私和 结构化数据规则都通过工具强制执行的明确检查来表达, 绝不会把它们当作让大模型遵守的模糊要求。
- 确定性。 审计引擎是纯函数:相同输入 → 得到完全相同的报告,
字节级一致。实时爬取会先排序发现的页面,再按上限截取,因此每次运行时,
对同一网站使用相同的
--max都会审计相同的页面集。引擎内部不进行网络访问, 也不涉及随机性。 - 修复,而非说教。 可以安全修复的问题会直接修复。需要人工处理的问题会明确说明 人员必须采取的操作。
- 与来源无关。 它审计的是输出,而非工具链。AI、框架、CMS、手写代码—— 对它而言都一样。
site-spec 最初是一个确定性的编译器,用于从构建之初就生成基础正确的网站(
build命令和docs/仍涵盖这一用途)。 后来证明,其持久价值恰恰在于相反的方向:不是生成整个网站,而是 审计并修复已有网站的基础。
完整 CLI
site-spec audit <dir|url> [--max N] [--json] [--report report.md]
site-spec fix <dir|url> [--out dir] [--write] [--max N] [--json]
site-spec build <site.config.mjs> --out <dir> [--target cloudflare|netlify|vercel|static]
--max N— 实时爬取的页面上限(默认值为 25);截断情况会在报告中说明,绝不会 默默忽略。--report report.md— 将审计结果写入可分享的 Markdown 文档。--json— 输出完整的结构化报告,供脚本/CI 使用。
安装 / 开发
git clone https://github.com/ariaxhan/site-spec.git
cd site-spec
npm install
npm test # unit + golden tests
npm run verify # html-validate + JSON-LD + axe over the demo output
包
| 包名 | 职责 |
|---|---|
site-spec(npm) | 已发布的 CLI — audit · fix · build。独立运行;npx site-spec 运行的就是它。 |
@site-spec/core | 引擎(审计检查、修复器、检查目录、策略定义、旧版编译器)。主入口是纯函数;@site-spec/core/io 是唯一会爬取 URL 或读取目录的边界。打包进 CLI 和 MCP 服务;目前尚未单独发布。 |
@site-spec/worker | 托管式审计器,位于 site-spec.ariaxhan.workers.dev — 用 Cloudflare Worker 封装同一引擎。新增 URL 准入防护、设有上限的爬虫和速率限制。使用 npm run deploy -w @site-spec/worker 部署。 |
site-spec-mcp(npm) | MCP 服务 — 通过 stdio 提供 audit_site · fix_issue · compile_spec · list_checks。独立运行;npx site-spec-mcp 运行的就是它。 |
参与贡献
欢迎贡献,尤其是新增检查和修复器。请参阅
CONTRIBUTING.md。核心规则:持续调整检查以避免误报,确保引擎保持纯函数和确定性,修复器绝不擅自猜测本应由人工决定的事项。
许可证
Apache License 2.0。© 2026 Aria Han。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。