Saltar al contenido
crawlforgeEnglish

Línea de comandos · Todo lo de esta página existe en la build actual

Qué hace hoy, y qué te ahorra

Agrupado por lo que necesitas conseguir, no por cómo está organizado el código. Donde una afirmación lleva un número, el número enlaza a cómo se midió.

diffs

Saber qué rompió un despliegue

Volver a rastrear sobre el mismo fichero aparta el rastreo anterior automáticamente, y el diff entre los dos te dice qué se resolvió y qué apareció. Un rastreo es una foto; el diff es lo que lo convierte en rutina.

En integración continua sale con código distinto de cero si entra algo grave: --fail-on acepta una severidad, o el ID de la regla en la que no te puedes permitir recaer.

Cómo funcionan los diffs, en el manual →

crawlforge crawl https://cliente.com/
# … el despliegue ocurre …
crawlforge crawl https://cliente.com/   # el anterior pasa a .prev.sqlite
crawlforge diff crawl-cliente-com.prev.sqlite \
                crawl-cliente-com.sqlite --fail-on high
cartera

La cartera entera en un panel

Apúntalo a una carpeta de ficheros de rastreo: qué cambió desde el rastreo anterior de cada sitio, qué reglas fallan en toda la cartera, y una línea por sitio, el peor primero. Una regla que dispara en la mayoría de los sitios rara vez es contenido: suele ser una plantilla o un plugin compartido, un arreglo que sirve para todos.

El recuento es honesto por diseño. Un rastreo truncado nunca evaluó las reglas que necesitan el grafo de enlaces completo, así que el panel separa dispara, no dispara y no se pudo evaluar — y avisa cuando los ficheros se rastrearon con catálogos de reglas distintos.

crawlforge portfolio ./crawls

── Failing across the portfolio ─────────────
  medium    CANON-CROSS-DOMAIN      3 of 5 sites
  critical  HTTP-NO-HTTPS           2 of 5 sites
  medium    INDEX-DEEP-PAGE         1 of 5 sites (2 inconclusive)
antes de publicar

Auditar antes de publicar

Tres modos: un sitio en vivo por HTTP, una carpeta compilada sin tocar la red — un dist/ de Astro en CI — y una lista exacta de URLs. Un rastreo interrumpido se reanuda donde se quedó, con la configuración guardada en el propio fichero.

Lo recurrente vive en un YAML por sitio, y los flags ganan al fichero. Los patrones de inclusión y exclusión recortan el rastreo, y lo excluido queda registrado como excluido: no desaparece sin dejar rastro. Un staging con autenticación básica se rastrea con una credencial que nunca viaja a otro host ni se escribe en el fichero.

# En CI, sobre la carpeta compilada y sin red
crawlforge audit ./dist --base https://cliente.com/ --out nuevo.sqlite
crawlforge diff referencia.sqlite nuevo.sqlite --fail-on high || exit 1
las reglas

Hallazgos de los que fiarse

63 reglas de auditoría, cada una con su fixture HTML y su test — hay un test que falla si una regla llega sin ellos. Y cuando un rastreo está truncado, las reglas que necesitan el grafo completo callan en vez de adivinar; el informe dice cuáles no se pudieron evaluar.

El mismo defecto repetido por una plantilla cuenta como un solo hallazgo con su número de páginas al lado, y una regla que afecta al 40% o más del sitio dice su cuota: una lista de páginas que arreglar una a una no es el mismo problema que una causa sistémica.

Los enlaces salientes se comprueban por defecto: solo el estado, una petición en vuelo por host, y solo un 404 o un 410 cuentan como roto. Un muro anti-bots que responde 403 a una sonda mientras la página abre bien en el navegador no es un enlace roto, y no se reporta como tal.

Ver las 63 reglas →

medium  META-TITLE-TOO-LONG  173,654  (80% of the site)

high    ASSET-IMG-EMPTY-ALT-LINK  13 template issues (567 pages)
        e.g. https://example.com/a · https://example.com/b
el fichero de rastreo

Un fichero que te puedes llevar

Un rastreo es un fichero SQLite. Cópialo, envíalo, ábrelo meses después sin volver a rastrear: report, export y diff trabajan sobre el fichero, no sobre la red.

Léelo en la terminal, expórtalo a CSV o XLSX — trece hojas, verificado que abre limpio en Excel — o genera un informe en Markdown o HTML para pegar en un ticket. inspect responde la pregunta más frecuente de una auditoría sobre cualquier URL: quién enlaza aquí, con qué texto de anclaje, desde qué parte de la página.

Cualquier pregunta que el informe no responda, la responde SQL: el formato es SQLite normal, con vistas preparadas para las preguntas habituales.

crawlforge export crawl.sqlite --format xlsx --out auditoria.xlsx
crawlforge inspect crawl.sqlite '/esa-pagina/'   # ¿quién enlaza aquí?
sqlite3 crawl.sqlite \
  "SELECT url, status_code FROM urls WHERE status_code >= 400;"

Los números, con sus condiciones

Si vas a auditar con esto, comprueba primero cómo se mide. El método está al lado de cada cifra.

487,621

URLs en un solo rastreo, con la memoria plana

Un medio con quince años de archivo. La memoria sigue a la cola de pendientes, no al tamaño del sitio.

el método, en la bitácora →
0 / 1,800

diferencias de extracción frente a un rastreador consolidado

Las mismas 300 URLs a las dos herramientas. Estado, título, meta description, H1, canonical e indexabilidad.

el método, en la bitácora →
63

reglas de auditoría, cada una con su caso de prueba

Las reglas son el producto: si una se equivoca, dejas de fiarte del informe entero.

ver las 63 reglas →

Lo que hoy no hace

Dicho por delante, igual que lo dice el manual:

  • No renderiza JavaScript. Un sitio cuyo contenido se monta en el navegador saldrá vacío. Está previsto.
  • No hay interfaz gráfica. La herramienta es la línea de comandos; las apps nativas son una idea en estudio, sin fechas prometidas.
  • No programa rastreos. El panel lee los ficheros que tu cron ya produce.
  • No sigue sitios ajenos. Los enlaces salientes se comprueban por su estado; de otro dominio no se parsea, guarda ni rastrea nada.

La lista completa vive en el manual y se mueve con cada versión.

El código ya está fuera. Cada dos semanas para lo demás.

El trabajo sigue a la vista: qué se mide, qué se rompe y cómo se hace una auditoría de verdad, con los comandos y los números, sobre sitios que existen. No hace falta descargar nada para leerlo.