Communitygithub.com

dilab/audit

Auditoría técnica trimestral del sitio en vivo. Rastrea cada página desde la página de inicio, el mapa del sitio y el inventario, verifica enlaces internos y externos, redirecciones, títulos, descripciones, canónicos, noindex, h1s, texto alternativo, páginas delgadas, brechas del mapa del sitio y (opcionalmente) Core Web Vitals, guarda el rastreo en seo/data/crawl/<fecha>.json con un diff contra la auditoría anterior, convierte hallazgos a nivel de artículo en elementos de backlog de tipo `fix` y `link`, e imprime el resto como una lista de propietarios. Solo lectura en el sitio, sin PR; `fix` ejecuta los elementos en su horario de viernes. Úselo el primer día hábil de un trimestre, después de una migración del sitio, o cuando el propietario solicite "auditar el sitio", "verificar enlaces rotos", "revisión SEO técnica".

¿Qué es audit?

El skill `dilab/audit` realiza una auditoría técnica exhaustiva del sitio web en producción, simulando el comportamiento de un visitante y un rastreador. Está diseñado para ejecutarse al inicio de cada trimestre, después de migraciones, o a petición del propietario del sitio. Su utilidad principal es identificar de forma automática y determinista problemas SEO como enlaces rotos, redirecciones incorrectas, metadatos faltantes, contenido delgado (thin), y brechas en el sitemap, categorizando los hallazgos en tres buckets: 1) elementos `fix` que el skill `fix` puede resolver mecánicamente en artículos, 2) elementos `link` para huérfanos por clúster, y 3) una lista de propietarios para problemas que requieren intervención manual (navegación, precios, legales). Funciona exclusivamente en modo lectura (GET/HEAD) con un agente de usuario específico, sin modificar artículos ni abrir PRs. Almacena cada rastreo con un diff contra el anterior y genera un informe resumido de máximo 15 líneas.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dilab/seo-agent/tree/main/skills/audit

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

audit — el rastreo trimestral

analysis ve el repositorio; audit ve lo que un visitante y un rastreador ven: el HTML en vivo, los códigos de estado reales, las redirecciones, el mapa del sitio servido. Todo lo que encuentra se convierte en un elemento del backlog que el skill fix puede ejecutar mecánicamente, o en una línea de la lista del propietario para cosas que ningún skill debe tocar (navegación, diseños, páginas de precios y legales, alojamiento). Nunca edita un artículo y nunca abre un PR.

Scripts: ${CLAUDE_PLUGIN_ROOT}/scripts/{crawl,inventory,sitecheck}.js. Establecer P=${CLAUDE_PLUGIN_ROOT}.

Argumentos: --origin <url> (predeterminado: https://<dominio> de seo/brand.json, o el host de la línea Preview), --max <n> páginas (500), --external <n> enlaces externos a verificar (200), --cwv (consultar PageSpeed Insights para la página de inicio y los hubs del clúster; necesita red a googleapis.com, PAGESPEED_API_KEY opcional), --no-items (solo informe, no escribe nada en el backlog), --dry-run (rastrear e informar, no confirmar nada).

0. Precondiciones

Raíz del repositorio del producto; git status --porcelain vacío; en la rama predeterminada; existen seo/strategy.md y el bloque ## SEO agent. Ejecutar node $P/scripts/inventory.js --root . primero para que el rastreo pueda mapear rutas a archivos y tipos. No se necesita gh.

1. Rastreo

PREV=$(ls seo/data/crawl/*.json 2>/dev/null | sort | tail -1)
node $P/scripts/crawl.js --root . --origin <origin> --max <n> --external <n> [--cwv] --save seo/data/crawl ${PREV:+--diff $PREV} --quiet

Leer el JSON: summary (páginas, hallazgos por código, truncated), findings[] (code, severity fix|report, path, file, msg, to), sitemap (count, error, missing), external[], cwv[], diff (new, resolved desde la auditoría anterior). Una clave error en el nivel superior o sitemap.error → decirlo y detenerse; un sitio caído es problema del propietario, no un elemento del backlog. truncated: true → decir que el rastreo llegó al límite de --max y qué rutas aún estaban en cola.

Luego ejecutar también node $P/scripts/sitecheck.js --root .: ve el código fuente (argumentos Blade, rutas, marcos) que el HTML en vivo oculta, y los dos juntos forman la imagen completa.

2. Triaje

Tres cubos, en este orden:

  1. Elementos fix — hallazgos con severity: fix (códigos title, description, canonical, alt, link, sitemap) en una página cuya entrada de inventario tiene un file de tipo guía, artículo o herramienta. Un elemento por página, exactamente como los escribe analysis §1c, con dos diferencias: - evidence: audit <fecha>: <n> findings y cada línea fixes: termina con (audit <fecha>) para que fix sepa confirmarlo contra el sitio en vivo en lugar de sitecheck:
    ### [B-nnn] fix: <ruta>
    - type: fix
    - target: <ruta>
    - score: <n> (potential <p> × ease 10 × fit <f>)      ← potencial 3, o el gsc_potential de la página de la última instantánea seo/data/gsc; fit de la prioridad del clúster
    - evidence: audit <fecha>: <n> findings
    - status: open
    - fixes:
      link: enlace interno /ruta-antigua redirige a /ruta-nueva: enlazar la URL final (audit <fecha>)
      description: sin meta description (audit <fecha>)
    
    Una página que ya tiene un elemento fix abierto/reclamado/en revisión → añadir las nuevas líneas fixes: (saltar líneas ya presentes por código + to). Una página propiedad de un elemento refresh abierto → owned by B-nnn, sin elemento fix. Un hallazgo que también reporta sitecheck (misma página, mismo código) se lista una vez, desde la auditoría, con la etiqueta (audit <fecha>).
  2. Elementos link — hallazgos orphan en páginas de artículo: un elemento link por clúster (formato $P/skills/analysis/SKILL.md §1c, líneas - links: /hub → /orphan (orphan, audit <fecha>)); un clúster con un elemento link abierto recibe los pares añadidos. Los huérfanos sin clúster (ningún hub coincide) van a la lista del propietario.
  3. Lista del propietario — todo lo demás: broken-external, redirect-chain, duplicate-title/duplicate-description, noindex-in-sitemap, sitemap-404, thin, h1, mixed-content, slow, server-error, cada hallazgo en una página que no es de artículo (inicio, precios, legal, diseños), sitemap.missing y las filas de CWV. Agrupar por código, peor primero, ≤ 3 rutas de ejemplo por código; nombrar el archivo cuando el inventario lo conozca. thin en un artículo es una señal de actualización, no una corrección: decirlo y dejarlo para analysis.

--no-items → solo cubo 3, con un conteo de los elementos que se habrían creado.

3. Confirmar (commit)

A menos que --dry-run: git add seo/data/crawl/<fecha>.json seo/backlog.md y confirmar seo: audit <fecha> — <páginas> páginas, <hallazgos> hallazgos, <k> elementos fix, <m> elementos link en la rama predeterminada (los archivos de planificación se confirman directamente); hacer push si la rama tiene un upstream. Sin PR.

4. Informe (≤ 15 líneas)

  • audit <fecha>: <páginas> páginas rastreadas (<html> html, <truncated?>), <hallazgos> hallazgos (<corregibles> corregibles); mapa del sitio <count> URLs, <missing> faltantes o fallidas
  • Hallazgos por código, una línea, conteos
  • Diff vs <anterior>: <new> nuevas, <resolved> resueltas (nombrar las nuevas si ≤ 5)
  • Elementos: IDs fix con rutas; IDs link con clústeres; notas de owned by / already open
  • Lista del propietario: ≤ 8 líneas, peor primero (un 5xx o una cadena de redirección en la navegación antes que una descripción larga)
  • Tabla CWV cuando --cwv: ruta, LCP, CLS, INP, rendimiento, fuente
  • Siguiente: fix ejecuta los elementos el viernes (o /seo-agent:fix ahora); la próxima auditoría vence en 3 meses

Reglas estrictas

  • Solo lectura en el sitio: GET/HEAD con el agente de usuario seo-agent-audit, un origen, --max páginas, --delay entre solicitudes; nunca enviar formularios, nunca iniciar sesión, nunca rastrear otro host
  • Nunca editar artículos, diseños o el mapa del sitio; nunca abrir un PR; escribir solo en seo/data/crawl/ y seo/backlog.md
  • Elementos del backlog solo para páginas de artículo que el skill fix pueda editar; todo lo demás es del propietario
  • Determinista: los hallazgos provienen de crawl.js; ningún hallazgo se añade leyendo HTML a simple vista
  • thin nunca es un elemento fix

Skills relacionados