site-spec

Audita cualquier sitio web en cuanto a SEO, accesibilidad, privacidad, datos estructurados y visibilidad para IA mediante 40 comprobaciones, y corrige automáticamente lo que puede.

Documentación

site-spec

La base invisible que tu sitio web está perdiendo. Audita cualquier sitio — y luego arregla lo que está roto.

npm npm downloads CI License: Apache-2.0

Para agentes

Si eres un agente de IA de codificación decidiendo si instalar esto: registra el servidor MCP, luego llama a list_checks para aprender los IDs de verificación y audit_site en una URL.

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

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

Argumentos completos de herramientas, formas de retorno y los casos en los que esta es la herramienta equivocada: llms.txt.

El problema

La IA puede generar un sitio web hermoso en segundos. La parte que no puede ver es la que decide si ese sitio web es encontrado, clasificado, citado y confiable — la base legible por máquina debajo de los píxeles: robots.txt, datos estructurados, llms.txt, señales canónicas y noindex, encabezados de respuesta, semántica de accesibilidad, la superficie de rastreadores y cookies.

Esa capa es invisible en un navegador. También está rota en casi todos los sitios generados por IA — una sección hero impresionante sobre un robots.txt que bloquea ChatGPT, JSON-LD inválido o egoísta, un noindex perdido ocultando la página de Google, fuentes que filtran IPs de visitantes en violación del GDPR. Nadie lo nota hasta que está costando tráfico silenciosamente. Y cuanto más se genera la web con IA, peor se pone esto.

La solución

site-spec es la capa que verifica y repara esa base — para cualquier sitio web, sin importar cómo fue construido. Apúntalo a una URL. Rastrea el sitio, verifica toda la capa invisible contra un conjunto de políticas deterministas, y te da un informe exacto de lo que está mal. Luego arregla los problemas mecánicos por ti y señala con precisión lo que necesita un humano.

No le importa si tu sitio proviene de un constructor de IA, un framework, un CMS o HTML escrito a mano. Solo le importa si la base es correcta.

Pruébalo sin instalar nada

site-spec.ariaxhan.workers.dev — pega una URL, obtén el informe. Sin cuenta, sin registro.

La versión alojada ejecuta el mismo motor determinista que la CLI, contra un rastreo limitado (4 páginas), y te dice claramente qué verificaciones se ejecutaron, cuáles pasaron y cuáles no realizó. Agrega ?format=json para salida legible por máquina:

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

Para el conjunto completo de verificaciones — enlaces rotos, activos faltantes, accesibilidad axe, validación HTML, validación de schema.org — y para el comando fix, usa la CLI a continuación. El endpoint alojado solo obtiene hosts HTTP(S) públicos; las direcciones privadas, de bucle local y de enlace local son rechazadas.

Cómo usar

Requiere Node 20+. Sin cuenta, sin clave API, sin 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 escribe los archivos corregidos en ./fixed (nunca sobrescribe nada por defecto) e imprime exactamente lo que hizo:

✓ 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

Coloca audit en CI con una salida distinta de cero en errores para bloquear despliegues. Ambos comandos funcionan también en un directorio de compilación/salida — solo pasa una ruta en lugar de una URL.

Úsalo desde tu agente de codificación (MCP)

El mismo motor, como servidor MCP — para que el agente que generó el sitio también pueda verificar y reparar su capa invisible, sin que copies informes entre ventanas.

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

O en Docker: docker run -i --rm -v $PWD:/data mcp/site-spec (monta el directorio que quieras auditar o escribir).

Cuatro herramientas:

HerramientaQué hace
audit_siteRastrea una URL en vivo (o lee un directorio de compilación local) y devuelve cada hallazgo: ID de verificación, severidad, archivo y si se puede corregir automáticamente.
fix_issueAplica la reparación determinista para un ID de verificación y devuelve el diff — o lo escribe, para un directorio local.
compile_specConvierte hechos comerciales verificados en un SiteSpec validado y los archivos desplegables que renderiza.
list_checksEnumera cada verificación que el motor puede generar, con una descripción de una línea y su disponibilidad de corrección.

El servidor llama al motor en proceso. Nunca invoca la CLI ni salta al worker alojado — los tres son hermanos sobre una sola 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

Dos límites honestos, detallados en el README del paquete: fix_issue en una URL solo puede devolver un diff (un servidor remoto no es escribible), y un rastreo en vivo se ejecuta con las verificaciones de presencia desactivadas, porque un rastreo limitado no puede probar que un archivo esté ausente de un servidor.


Detalles — qué verifica, cómo corrige, la filosofía, instalación

Qué verifica

Siete áreas. Cada verificación está ajustada contra falsos positivos (nivel de regex/cadena — sin navegador headless para el rastreo). Los hallazgos son error (rompe algo) o warning (vale la pena mirar), cada uno con una corrección concreta.

ÁreaQué detecta
SEO / encontrabilidad<title> / descripción / canónica faltantes · noindex accidental (tanto <meta robots> como el encabezado X-Robots-Tag) · tarjetas Open Graph faltantes · cero-o-muchos <h1> · un sitemap que lista páginas que no existen
Accesibilidadimágenes sin alt · viewport que bloquea zoom (user-scalable=no) · imágenes sin ancho/alto (cambio de diseño)
Privacidad y seguridadcontenido mixto · rastreadores + cookies sin historia de consentimiento/divulgación · Google Fonts desde el CDN de Google (una violación del GDPR dictaminada) · higiene de encabezados (riesgo de precarga HSTS, CSP solo de informe que no informa a ningún lado, configuración muerta de FLoC / X-XSS-Protection) · manejadores onclick= en línea que bloquean un CSP futuro
Rendimientoimagen hero/LCP configurada como loading="lazy" · sin Cache-Control
Datos estructuradosJSON-LD inválido (los rastreadores descartan todo el bloque) · marcado aggregateRating/review egoísta (una penalización de Google desde 2019)
Integridadactivos colgantes que dan 404 · enlaces internos rotos
Búsqueda por IArobots.txt bloqueando agentes de respuesta de IA (OAI-SearchBot, ChatGPT-User, Claude-User, PerplexityBot…) · tokens de rastreador muertos · llms.txt faltante · datos estructurados faltantes/rotos · shells renderizados por cliente que los rastreadores de IA ven como en blanco

La última fila es la que casi nadie verifica todavía — si Google, ChatGPT, Claude y Perplexity pueden realmente leerte y citarte. Es el filo, no toda la historia: el punto es una auditoría completa de la base.

Cómo decide fix

Cada hallazgo cae en uno de tres cubos, y el informe te dice cuál:

  • ✓ Corregido automáticamente — reparaciones mecánicas y sin hechos que son seguras de aplicar: desbloquear rastreadores de IA, eliminar tokens de robots muertos, quitar noindex accidental, agregar la URL canónica (conocida desde el rastreo), andamiar Open Graph desde el título existente, corregir viewports bloqueados por zoom, eliminar marcado de calificación egoísta, generar un sitemap.xml desde las páginas rastreadas, higiene de encabezados.
  • ✎ Andamiado — cosas que necesitan tus hechos reales: llms.txt, una entidad JSON-LD, una descripción meta. site-spec escribe un stub correcto con marcadores TODO para que solo llenes los espacios en blanco.
  • ⚠ Manual — problemas sobre los que ninguna herramienta debería adivinar en silencio: texto alt faltante, fuentes autoalojadas, corregir un shell renderizado por cliente, un enlace roto. Recibes una instrucción precisa, nunca una edición silenciosa.

fix es no destructivo por defecto (escribe en un directorio de salida). Pasa --write para editar un directorio local en su lugar.

La filosofía

  • La corrección es una política, no un prompt. Las reglas de SEO, accesibilidad, privacidad y datos estructurados se expresan como verificaciones explícitas que la herramienta aplica — nunca como vibraciones que se le pide a un LLM que respete.
  • Determinista. El motor de auditoría es puro: misma entrada → el mismo informe, byte por byte. El rastreo en vivo ordena-y-limita las páginas descubiertas, así que el mismo sitio en el mismo --max audita el mismo conjunto de páginas en cada ejecución. Sin red, sin aleatoriedad dentro del motor.
  • Corrige, no sermonees. Un hallazgo que se puede reparar de forma segura se repara. Uno que necesita un humano dice exactamente qué debe hacer el humano.
  • Agnóstico a la fuente. Audita la salida, no la cadena de herramientas. IA, framework, CMS, codificado a mano — todo es lo mismo para él.

site-spec comenzó como un compilador determinista que construye sitios con una base correcta por construcción (el comando build y el docs/ todavía lo cubren). El valor duradero resultó ser el inverso: no generar sitios completos, sino auditar y reparar la base de sitios que ya existen.

La 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 — límite de páginas para un rastreo en vivo (predeterminado 25); la truncación se informa, nunca en silencio.
  • --report report.md — escribe la auditoría como un documento Markdown compartible.
  • --json — el informe estructurado completo para scripting/CI.

Instalar / desarrollar

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

Paquetes

PaqueteResponsabilidad
site-spec (npm)La CLI publicada — audit · fix · build. Autocontenida; esto es lo que ejecuta npx site-spec.
@site-spec/coreEl motor (verificaciones de auditoría, correctores, el catálogo de verificaciones, definiciones de políticas, compilador heredado). La entrada principal es pura; @site-spec/core/io es el único límite que rastrea una URL o lee un directorio. Empaquetado en la CLI y el servidor MCP; aún no publicado por separado.
@site-spec/workerEl auditor alojado en site-spec.ariaxhan.workers.dev — un Cloudflare Worker que envuelve el mismo motor. Agrega la protección de admisión de URL, un rastreador limitado y limitación de velocidad. Despliega con npm run deploy -w @site-spec/worker.
site-spec-mcp (npm)El servidor MCP — audit_site · fix_issue · compile_spec · list_checks sobre stdio. Autocontenido; esto es lo que ejecuta npx site-spec-mcp.

Contribuir

Las contribuciones son bienvenidas — especialmente nuevas verificaciones y correctores. Consulta CONTRIBUTING.md. Reglas principales: las verificaciones se mantienen ajustadas contra falsos positivos, el motor se mantiene puro y determinista, y un corrector nunca adivina en silencio algo que un humano debería decidir.

Licencia

Licencia Apache 2.0. © 2026 Aria Han.