site-spec

Audita qualquer site para SEO, acessibilidade, privacidade, dados estruturados e pesquisabilidade por IA em 40 verificações e corrige automaticamente o que puder.

Documentação

site-spec

A fundação invisível que falta no seu site. Audite qualquer site — e depois corrija o que está quebrado.

npm npm downloads CI License: Apache-2.0

Para agentes

Se você é um agente de IA de codificação decidindo se deve instalar isto: registre o servidor MCP e, em seguida, chame list_checks para aprender os IDs de verificação e audit_site em uma URL.

claude mcp add site-spec -- npx -y site-spec-mcp

Gemini CLI: gemini extensions install https://github.com/ariaxhan/site-spec.

Argumentos completos das ferramentas, formatos de retorno e os casos em que esta é a ferramenta errada: llms.txt.

O problema

A IA pode gerar um site bonito em segundos. A parte que ela não consegue ver é a que decide se esse site será encontrado, ranqueado, citado e confiável — a fundação legível por máquina sob os pixels: robots.txt, dados estruturados, llms.txt, sinais de canonical e noindex, cabeçalhos de resposta, semântica de acessibilidade, a superfície de rastreadores e cookies.

Essa camada é invisível no navegador. Também está quebrada em quase todo site gerado por IA — uma seção hero deslumbrante sobre um robots.txt que bloqueia o ChatGPT, JSON-LD inválido ou autosserviço, um noindex perdido escondendo a página do Google, fontes vazando IPs de visitantes em violação ao GDPR. Ninguém percebe até que isso comece a custar tráfego silenciosamente. E quanto mais a web é gerada por IA, pior isso fica.

A solução

site-spec é a camada que verifica e repara essa fundação — para qualquer site, independentemente de como foi construído. Aponte-o para uma URL. Ele rastreia o site, verifica toda a camada invisível contra um conjunto de políticas determinísticas e fornece um relatório exato do que está errado. Em seguida, ele corrige os problemas mecânicos para você e sinaliza com precisão o que precisa de um humano.

Ele não se importa se o seu site veio de um construtor de IA, um framework, um CMS ou HTML escrito à mão. Ele só se importa se a fundação está correta.

Experimente sem instalar nada

site-spec.ariaxhan.workers.dev — cole uma URL e obtenha o relatório. Sem conta, sem cadastro.

A versão hospedada executa o mesmo mecanismo determinístico da CLI, com um rastreamento limitado (4 páginas), e informa claramente quais verificações foram executadas, quais passaram e quais não foram realizadas. Adicione ?format=json para saída legível por máquina:

curl "https://site-spec.ariaxhan.workers.dev/audit?format=json&url=example.com"

Para o conjunto completo de verificações — links quebrados, assets ausentes, acessibilidade axe, validação de HTML, validação de schema.org — e para o comando fix, use a CLI abaixo. O endpoint hospedado só busca hosts HTTP(S) públicos; endereços privados, loopback e link-local são recusados.

Como usar

Requer Node 20+. Sem conta, sem chave de API, sem 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 grava os arquivos corrigidos em ./fixed (nunca sobrescreve nada por padrão) e imprime exatamente o que fez:

✓ 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

Coloque audit no CI com saída não zero em erros para bloquear deploys. Ambos os comandos funcionam também em um diretório de build/saída — basta passar um caminho em vez de uma URL.

Use a partir do seu agente de codificação (MCP)

O mesmo mecanismo, como um servidor MCP — para que o agente que gerou o site também possa verificar e reparar sua camada invisível, sem que você copie relatórios entre janelas.

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"]

Ou em Docker: docker run -i --rm -v $PWD:/data mcp/site-spec (monte o diretório que deseja auditar ou gravar).

Quatro ferramentas:

FerramentaO que faz
audit_siteRastreia uma URL ao vivo (ou lê um diretório de build local) e retorna todas as descobertas: ID da verificação, gravidade, arquivo e se pode ser corrigido automaticamente.
fix_issueAplica o reparo determinístico para um ID de verificação e retorna o diff — ou grava-o, para um diretório local.
compile_specTransforma fatos de negócio verificados em um SiteSpec validado e nos arquivos implantáveis que ele renderiza.
list_checksEnumera todas as verificações que o mecanismo pode levantar, com uma descrição de uma linha e a disponibilidade de correção.

O servidor chama o mecanismo em processo. Ele nunca invoca a CLI externamente e nunca passa pelo worker hospedado — todos os três são irmãos sobre uma única biblioteca.

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

Dois limites honestos, detalhados no README do pacote: fix_issue em uma URL só pode sempre devolver um diff (um servidor remoto não é gravável), e um rastreamento ao vivo é executado com verificações de presença desativadas, porque um rastreamento limitado não pode provar que um arquivo está ausente de um servidor.


Detalhes — o que verifica, como corrige, a filosofia, instalação

O que verifica

Sete áreas. Cada verificação é ajustada contra falsos positivos (nível de regex/string — sem navegador headless para o rastreamento). As descobertas são error (quebra algo) ou warning (vale a pena olhar), cada uma com uma correção concreta.

ÁreaO que detecta
SEO / encontrabilidade<title> / descrição / canonical ausentes · noindex acidental (tanto <meta robots> quanto o cabeçalho X-Robots-Tag) · cartões Open Graph ausentes · zero-ou-muitos <h1> · um sitemap que lista páginas que não existem
Acessibilidadeimagens sem alt · viewport bloqueando zoom (user-scalable=no) · imagens sem largura/altura (mudança de layout)
Privacidade e segurançaconteúdo misto · rastreadores + cookies sem história de consentimento/divulgação · Google Fonts do CDN do Google (uma violação do GDPR) · higiene de cabeçalhos (risco de pré-carregamento HSTS, CSP somente relatório que não reporta a lugar nenhum, config FLoC / X-XSS-Protection morta) · manipuladores onclick= inline que bloqueiam um CSP futuro
Desempenhoimagem hero/LCP definida como loading="lazy" · sem Cache-Control
Dados estruturadosJSON-LD inválido (rastreadores descartam o bloco inteiro) · marcação aggregateRating/review autosserviço (uma penalidade do Google desde 2019)
Integridadeassets pendentes que retornam 404 · links internos quebrados
Pesquisabilidade por IArobots.txt bloqueando agentes de resposta de IA (OAI-SearchBot, ChatGPT-User, Claude-User, PerplexityBot…) · tokens de rastreador mortos · llms.txt ausente · dados estruturados ausentes/quebrados · shells renderizados no cliente que os rastreadores de IA veem como em branco

A última linha é a que quase ninguém verifica ainda — se o Google, o ChatGPT, o Claude e o Perplexity podem realmente ler e citar você. É a ponta afiada, não a história toda: o ponto é uma auditoria de fundação completa.

Como fix decide

Cada descoberta cai em um de três baldes, e o relatório informa qual:

  • ✓ Corrigido automaticamente — reparos mecânicos, sem fatos, seguros de aplicar: desbloquear rastreadores de IA, remover tokens de robots mortos, remover noindex acidental, adicionar a URL canônica (conhecida do rastreamento), criar andaimes de Open Graph a partir do título existente, corrigir viewports com zoom bloqueado, remover marcação de classificação autosserviço, gerar um sitemap.xml a partir das páginas rastreadas, higiene de cabeçalhos.
  • ✎ Com andaime — coisas que precisam dos seus fatos reais: llms.txt, uma entidade JSON-LD, uma meta descrição. O site-spec grava um stub correto com marcadores TODO para que você apenas preencha os espaços em branco.
  • ⚠ Manual — problemas que nenhuma ferramenta deve adivinhar silenciosamente: texto alt ausente, auto-hospedagem de fontes, corrigir um shell renderizado no cliente, um link quebrado. Você recebe uma instrução precisa, nunca uma edição silenciosa.

fix é não destrutivo por padrão (grava em um diretório de saída). Passe --write para editar um diretório local no lugar.

A filosofia

  • Correção é uma política, não um prompt. SEO, acessibilidade, privacidade e regras de dados estruturados são expressas como verificações explícitas que a ferramenta aplica — nunca como vibrações que um LLM deve respeitar.
  • Determinístico. O mecanismo de auditoria é puro: mesma entrada → o mesmo relatório, byte por byte. O rastreamento ao vivo ordena-e-limita as páginas descobertas, então o mesmo site na mesma --max audita o mesmo conjunto de páginas a cada execução. Sem rede, sem aleatoriedade dentro do mecanismo.
  • Corrija, não dê sermão. Uma descoberta que pode ser reparada com segurança é reparada. Uma que precisa de um humano diz exatamente o que o humano deve fazer.
  • Agnóstico de fonte. Ele audita a saída, não o fluxo de trabalho. IA, framework, CMS, codificado à mão — tudo igual para ele.

O site-spec começou como um compilador determinístico que constrói sites com uma fundação correta por construção (o comando build e o docs/ ainda cobrem isso). O valor duradouro acabou sendo o inverso: não gerar sites inteiros, mas auditar e reparar a fundação de sites que já existem.

A CLI completa

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 — limite de páginas para um rastreamento ao vivo (padrão 25); a truncagem é relatada, nunca silenciosa.
  • --report report.md — grava a auditoria como um documento Markdown compartilhável.
  • --json — o relatório estruturado completo para scripts/CI.

Instalar / desenvolver

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

Pacotes

PacoteResponsabilidade
site-spec (npm)A CLI publicada — audit · fix · build. Autocontida; é isso que npx site-spec executa.
@site-spec/coreO mecanismo (verificações de auditoria, corretores, o catálogo de verificações, definições de política, compilador legado). A entrada principal é pura; @site-spec/core/io é o único limite que rastreia uma URL ou lê um diretório. Empacotado na CLI e no servidor MCP; ainda não publicado separadamente.
@site-spec/workerO auditor hospedado em site-spec.ariaxhan.workers.dev — um Cloudflare Worker envolvendo o mesmo mecanismo. Adiciona a proteção de admissão de URL, um rastreador limitado e limitação de taxa. Implante com npm run deploy -w @site-spec/worker.
site-spec-mcp (npm)O servidor MCP — audit_site · fix_issue · compile_spec · list_checks via stdio. Autocontido; é isso que npx site-spec-mcp executa.

Contribuindo

Contribuições são bem-vindas — especialmente novas verificações e corretores. Veja CONTRIBUTING.md. Regras principais: verificações permanecem ajustadas contra falsos positivos, o mecanismo permanece puro e determinístico, e um corretor nunca adivinha silenciosamente algo que um humano deveria decidir.

Licença

Licença Apache 2.0. © 2026 Aria Han.