Kommandozeile

Die vollständige Referenz zu node src/cli.mjs - jede Option mit ihrem Standardwert, Ausgaben (NDJSON, CSV, HTML-Bericht), Vergleich, Segmente, Fortsetzen, Sitemap und Extraktion.

Verwendung

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

Die CLI gibt den Score und die Probleme in Ihrer Sprache aus, speichert den Crawl als gezipptes NDJSON (das die Oberfläche über Importieren oder aus dem Verlauf öffnet), exportiert mit --csv pages.csv und issues.csv und schreibt mit --report einen HTML-Auditbericht in Ihrem Branding, den Sie als PDF drucken können. JSON, CSV und Bericht werden jeweils als Stream und unabhängig voneinander geschrieben: Ein Fehlschlag blockiert die anderen nicht, und der Exit-Code ist 1, wenn einer fehlgeschlagen ist.

Beispiele

node src/cli.mjs https://www.example.com --max 2000 --csv --report --lang de
node src/cli.mjs https://www.example.com --render --ua googlebotMobile --report --client "ACME" --author "Ihr Name"
node src/cli.mjs --list urls.txt --lang de --csv
node src/cli.mjs --sitemap https://www.example.com/sitemap.xml --extract "preis=.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 "preis=.price" --remove-params "utm_*,gclid"
node src/cli.mjs --help

Optionen

Erzeugt aus node src/cli.mjs --help im Repository (3.21.0); die Standardwerte stammen aus dem Code.

OptionBeschreibungStandard
--max NMaximale Anzahl URLs500
--depth NMaximale Tiefe20
--concurrency NGleichzeitige Anfragen5
--delay MSPause zwischen zwei Anfragen pro Worker, in ms0
--ua NAMEUser-Agent: arachnide | googlebot | googlebotMobile | chromearachnide
--renderJavaScript-Rendering mit Chrome / Edge (installierter Browser)
--list FILEListenmodus: nur die URLs einer Textdatei crawlen (eine pro Zeile)
--externalExterne Links prüfen
--imagesGröße und Status der Bilder prüfen
--rate NMaximal URLs pro Sekunde (globale Obergrenze)
--robots MODErespect | report (ignorieren, aber melden) | ignorerespect
--custom-robots FDiese robots.txt-Datei anstelle der Datei der Website verwenden
--per-depth NMaximal URLs pro Tiefenebene
--folder-depth NMaximale Ordnertiefe
--max-params NMaximale Anzahl URL-Parameter
--max-redirects NMaximal zu folgende Weiterleitungen10
--path-limit P=NLimit pro URL-Pfad, z. B. "/blog/=200" (wiederholbar)
--remove-params LURL-Parameter entfernen, z. B. "utm_*,gclid"
--auth USER:PASSHTTP-Authentifizierung (Staging-Websites)
--header "K: V"Benutzerdefinierter HTTP-Header (wiederholbar)
--extract N=SELBenutzerdefinierte Extraktion (wiederholbar): N=SEL (CSS, Text), N=/regex/, N=xpath:EXPR, N=attr:href:SEL, N=html:SEL, N=count:SEL; eine Spalte pro Regel in pages.csv
--sitemap URLListenmodus aus einer Sitemap oder einem Sitemap-Index: genau die aufgeführten URLs crawlen
--keep-paramsURL-Parameter unverändert lassen (Standard: sortiert, Tracking-Parameter utm_*/gclid/fbclid… entfernt)
--robots-unavailable allow|disallowrobots.txt mit 5xx oder unerreichbar: alles verbieten (RFC 9309, Standard) oder alles erlaubendisallow
--psi NPageSpeed Insights + Core Web Vitals (CrUX) für die N wichtigsten Seiten
--psi-key KEYGoogle-API-Schlüssel (oder Variable ARACHNIDE_PSI_KEY) · --psi-strategy mobile|desktop
--gsc-key FILESearch Console: JSON-Schlüsseldatei des Dienstkontos
--gsc-property PSearch-Console-Property (sc-domain:example.com), automatisch erkannt, wenn nicht angegeben
--gsc-days NSearch-Console-Zeitraum in Tagen90
--gsc-csv FILECSV-Export „Seiten“ aus der Search Console anstelle der API importieren
--ga4-key FILEGoogle Analytics 4: JSON-Schlüsseldatei des Dienstkontos (die der Search Console funktioniert, wenn sie Zugriff hat)
--ga4-property IDGA4-Property-ID (123456789), aus der Domain erkannt, wenn nicht angegeben
--ga4-days NGA4-Zeitraum in Tagen90
--ga4-csv FILEGA4-CSV-Export „Seiten und Bildschirme“ (oder „Landingpage“) anstelle der API importieren
--alert-email A,BE-Mail-Benachrichtigung senden, wenn sich der Crawl gegenüber dem vorherigen verschlechtert hat (für cron)
--alert-score-drop NAlarmschwelle in Score-Punkten5
--ignore-robotsrobots.txt ignorieren (entspricht --robots ignore)
--subdomainsAuch Subdomains crawlen
--no-sitemapXML-Sitemaps nicht lesen
--include REGEXNur URLs crawlen, die zur Regex passen (wiederholbar: eine Regex pro Option)
--exclude REGEXURLs ignorieren, die zur Regex passen (wiederholbar)
--stay-in-folderDen Ordner der Start-URL nicht verlassen (https://x.com/blog/ → nur /blog/…)
--search TEXTBenutzerdefinierte Suche im Quellcode (/regex/ erlaubt)
--segments FILESegmente (aus der App exportiertes JSON oder [{ "name", "match", "rules": [{ "field", "op", "value" }] }]): Score, Fehler und Mittelwerte je Bereich, Spalte Segment im CSV, Abschnitt im Bericht
--segment-foldersEin Segment pro Verzeichnis der ersten Ebene (automatisch)
--segment IDBericht und CSV nur für dieses Segment (z. B. --segment blog)
--lang CODEen | fr | de | es | it | pt (Beschriftungen, CSV, Bericht)
--csvZusätzlich pages.csv und issues.csv exportieren
--reportZusätzlich einen professionellen HTML-Auditbericht erzeugen (als PDF zu drucken) · --report-title, --client, --author, --company, --contact, --website, --color "#5b8c1e"
--compare FILEVorheriger Crawl, um die Entwicklung im Bericht zu zeigen
--out DIRAusgabeordner./crawls
--resume FILEUnterbrochenen Crawl aus seinem Journal fortsetzen (<out>/.en-cours/*.ndjson)
--no-journalWährend des Crawls kein Fortsetzungsjournal schreiben

Extraktionsregeln

--extract NAME=REGEL, wiederholbar, eine Spalte pro Regel in pages.csv:

RegelBedeutung
preis=.priceCSS-Selektor, Textinhalt
autor=attr:content:meta[name=author]CSS-Selektor, Attributwert
menu=html:nav.mainCSS-Selektor, inneres HTML
links=count:a[href]CSS-Selektor, Anzahl der Treffer
sku=xpath://meta[@itemprop='sku']/@contentXPath (Chrome im Rendering-Modus, sonst jsdom)
telefon=/\+34 \d{3} \d{3} \d{3}/Regulärer Ausdruck (Zeitlimit von 2 Sekunden pro Seite)

Ausgaben

Die Dateien werden in --out geschrieben (Standard ./crawls) und <host>_<date> benannt:

  • <host>_<date>.jsonl.gz: der vollständige Crawl (NDJSON, ein JSON-Objekt pro Zeile, gezippt);
  • <host>_<date>_pages.csv und _issues.csv mit --csv (durch Semikolon getrennt, UTF-8 mit BOM, eine Spalte pro Extraktion, eine Spalte Segment, wenn Segmente definiert sind);
  • <host>_<date>_report_<lang>.html mit --report;
  • crawls/.en-cours/<host>_<date>.ndjson: das Fortsetzungsjournal, während ein Crawl läuft (nach Ctrl+C erhalten, bei Abschluss gelöscht).

Drücken Sie Ctrl+C, um einen Crawl sauber zu stoppen; die CLI gibt dann den --resume-Befehl aus, um ihn später fortzusetzen.

Cron und Benachrichtigungen

--alert-email you@example.com --alert-score-drop 5 vergleicht den Crawl mit dem vorherigen Crawl desselben Hosts im Ausgabeordner und schreibt Ihnen nur, wenn sich etwas verschlechtert hat (SMTP-Einstellungen aus der App oder ARACHNIDE_SMTP_URL). Siehe Google-Daten, geplante Crawls und Benachrichtigungen.

Weitere Befehle

BefehlZweck
npm startDie Weboberfläche auf http://localhost:4000 (PORT und HOST zum Ändern; ARACHNIDE_NO_SCHEDULER=1 deaktiviert geplante Crawls)
npm run mcpDer MCP-Server über stdio (auch arachnide-mcp als Bin)
npm run schedulerGeplante Crawls ohne die Oberfläche
npm run bench -- --pages 200000Der Benchmark auf der synthetischen Site
npm testDie Testsuite (Node 18, 20 und 22)
Version 3.21.0 Die Referenztabellen und das Changelog werden aus dem Arachnide-Repository erzeugt (Commit f287355). Diese Seite auf GitHub bearbeiten