Línea de comandos

La referencia completa de node src/cli.mjs - cada opción con su valor por defecto, las salidas (NDJSON, CSV, informe HTML), comparación, segmentos, reanudación, sitemap y extracción.

Uso

node src/cli.mjs <url> [options]
node src/cli.mjs --list urls.txt [options]

La CLI muestra la puntuación y los problemas en tu idioma, guarda el rastreo en NDJSON gzip (que la interfaz abre con Importar o desde el historial), y con --csv exporta pages.csv e issues.csv, y con --report escribe un informe de auditoría HTML con tu marca que puedes imprimir en PDF. JSON, CSV e informe se escriben cada uno en flujo y de forma independiente: el fallo de uno no bloquea a los demás, y el código de salida es 1 si alguno falló.

Ejemplos

node src/cli.mjs https://www.example.com --max 2000 --csv --report --lang es
node src/cli.mjs https://www.example.com --render --ua googlebotMobile --report --client "ACME" --author "Tu nombre"
node src/cli.mjs --list urls.txt --lang de --csv
node src/cli.mjs --sitemap https://www.example.com/sitemap.xml --extract "price=.price" --extract "sku=xpath://meta[@itemprop='sku']/@content" --csv
node src/cli.mjs https://www.example.com --report --compare crawls/previous.jsonl.gz
node src/cli.mjs --resume crawls/.en-cours/www.example.com_2026-10-21T09-00-00.ndjson --csv
node src/cli.mjs https://www.example.com --max 20000 --segments segments.json --csv --report
node src/cli.mjs https://www.example.com --ga4-key ga4-key.json --ga4-property 123456789 --csv
node src/cli.mjs https://staging.example.com --auth user:pass --rate 2 --robots report --path-limit "/blog/=200" --extract "price=.price" --remove-params "utm_*,gclid"
node src/cli.mjs --help

Opciones

Generadas desde node src/cli.mjs --help en el repositorio (3.21.0); los valores por defecto vienen del código.

OpciónDescripciónPor defecto
--max NNúmero máximo de URL500
--depth NProfundidad máxima20
--concurrency NPeticiones simultáneas5
--delay MSPausa entre dos peticiones por worker, en ms0
--ua NAMEUser-agent: arachnide | googlebot | googlebotMobile | chromearachnide
--renderRenderizado JavaScript con Chrome / Edge (navegador instalado)
--list FILEModo lista: rastrear solo las URL de un archivo de texto (una por línea)
--externalComprobar los enlaces externos
--imagesComprobar el peso y el estado de las imágenes
--rate NURL por segundo como máximo (límite global)
--robots MODErespect | report (ignorar pero informar) | ignorerespect
--custom-robots FUsar este archivo robots.txt en lugar del del sitio
--per-depth NURL máximas por nivel de profundidad
--folder-depth NProfundidad de carpetas máxima
--max-params NNúmero máximo de parámetros de URL
--max-redirects NRedirecciones seguidas como máximo10
--path-limit P=NLímite por ruta de URL, p. ej. "/blog/=200" (repetible)
--remove-params LEliminar parámetros de URL, p. ej. "utm_*,gclid"
--auth USER:PASSAutenticación HTTP (sitios de preproducción)
--header "K: V"Cabecera HTTP personalizada (repetible)
--extract N=SELExtracción personalizada (repetible): N=SEL (CSS, texto), N=/regex/, N=xpath:EXPR, N=attr:href:SEL, N=html:SEL, N=count:SEL; una columna por regla en pages.csv
--sitemap URLModo lista desde un sitemap o un índice de sitemaps: rastrear exactamente las URL listadas
--keep-paramsConservar los parámetros de URL tal cual (por defecto: ordenados, parámetros de seguimiento utm_*/gclid/fbclid… eliminados)
--robots-unavailable allow|disallowrobots.txt en 5xx o inaccesible: prohibirlo todo (RFC 9309, por defecto) o permitirlo tododisallow
--psi NPageSpeed Insights + Core Web Vitals (CrUX) para las N páginas más importantes
--psi-key KEYClave de API de Google (o variable ARACHNIDE_PSI_KEY) · --psi-strategy mobile|desktop
--gsc-key FILESearch Console: archivo de clave JSON de la cuenta de servicio
--gsc-property PPropiedad de Search Console (sc-domain:example.com), detectada automáticamente si se omite
--gsc-days NPeriodo de Search Console en días90
--gsc-csv FILEImportar una exportación CSV «Páginas» de Search Console en lugar de la API
--ga4-key FILEGoogle Analytics 4: archivo de clave JSON de la cuenta de servicio (la de Search Console sirve si tiene acceso)
--ga4-property IDID de propiedad GA4 (123456789), detectado desde el dominio si se omite
--ga4-days NPeriodo de GA4 en días90
--ga4-csv FILEImportar una exportación CSV de GA4 «Páginas y pantallas» (o «Página de destino») en lugar de la API
--alert-email A,BEnviar una alerta por correo electrónico si el rastreo ha empeorado respecto al anterior (para cron)
--alert-score-drop NUmbral de alerta en puntos de puntuación5
--ignore-robotsIgnorar el robots.txt (equivale a --robots ignore)
--subdomainsRastrear también los subdominios
--no-sitemapNo leer los sitemaps XML
--include REGEXRastrear solo las URL que coinciden con la regex (repetible: una regex por opción)
--exclude REGEXIgnorar las URL que coinciden con la regex (repetible)
--stay-in-folderNo salir de la carpeta de la URL de inicio (https://x.com/blog/ → solo /blog/…)
--search TEXTBúsqueda personalizada en el código fuente (se admite /regex/)
--segments FILESegmentos (JSON exportado desde la aplicación, o [{ "name", "match", "rules": [{ "field", "op", "value" }] }]): puntuación, errores y medias por sección, columna de segmento en el CSV, sección en el informe
--segment-foldersUn segmento por directorio de primer nivel (automático)
--segment IDInforme y CSV solo de este segmento (p. ej. --segment blog)
--lang CODEen | fr | de | es | it | pt (etiquetas, CSV, informe)
--csvExportar también pages.csv e issues.csv
--reportGenerar también un informe de auditoría HTML profesional (para imprimir en PDF) · --report-title, --client, --author, --company, --contact, --website, --color "#5b8c1e"
--compare FILERastreo anterior para mostrar la evolución en el informe
--out DIRCarpeta de salida./crawls
--resume FILERetomar un rastreo interrumpido desde su diario (<out>/.en-cours/*.ndjson)
--no-journalNo escribir el diario de reanudación durante el rastreo

Reglas de extracción

--extract NOMBRE=REGLA, repetible, una columna por regla en pages.csv:

ReglaSignificado
price=.priceSelector CSS, contenido de texto
author=attr:content:meta[name=author]Selector CSS, valor de un atributo
menu=html:nav.mainSelector CSS, HTML interno
links=count:a[href]Selector CSS, número de coincidencias
sku=xpath://meta[@itemprop='sku']/@contentXPath (Chrome en modo renderizado, jsdom en caso contrario)
phone=/\+34 \d{3} \d{3} \d{3}/Expresión regular (tiempo límite de 2 segundos por página)

Salidas

Los archivos se escriben en --out (por defecto ./crawls), con el nombre <host>_<fecha>:

  • <host>_<fecha>.jsonl.gz: el rastreo completo (NDJSON, un objeto JSON por línea, gzip);
  • <host>_<fecha>_pages.csv y _issues.csv con --csv (separados por punto y coma, UTF-8 con BOM, una columna por extracción, una columna Segmento cuando hay segmentos definidos);
  • <host>_<fecha>_report_<idioma>.html con --report;
  • crawls/.en-cours/<host>_<fecha>.ndjson: el diario de reanudación mientras se ejecuta un rastreo (se conserva tras Ctrl+C, se elimina al terminar).

Pulsa Ctrl+C para detener un rastreo limpiamente; la CLI muestra entonces el comando --resume para retomarlo más tarde.

Cron y alertas

--alert-email you@example.com --alert-score-drop 5 compara el rastreo con el rastreo anterior del mismo host en la carpeta de salida y te envía un correo solo cuando algo ha empeorado (ajustes SMTP de la aplicación, o ARACHNIDE_SMTP_URL). Consulta Datos de Google, rastreos programados y alertas.

Otros comandos

ComandoFunción
npm startLa interfaz web en http://localhost:4000 (PORT y HOST para cambiarlos; ARACHNIDE_NO_SCHEDULER=1 desactiva los rastreos programados)
npm run mcpEl servidor MCP por stdio (también arachnide-mcp como binario)
npm run schedulerLos rastreos programados sin la interfaz
npm run bench -- --pages 200000El benchmark sobre el sitio sintético
npm testLa suite de pruebas (Node 18, 20 y 22)
Versión 3.21.0 Las tablas de referencia y el historial de versiones se generan desde el repositorio de Arachnide (commit f287355). Editar esta página en GitHub