Crawler SEO local et gratuit

SpiderHead crawle un site à partir d'une URL de départ sur votre propre machine, suit les liens du même hôte, respecte robots.txt et audite le résultat avec les mêmes contrôles que ceux qu'il applique aux exports Screaming Frog.

Ce qu'elle fait

Crawler sans projet

Dans l'application de bureau, saisissez une URL et lancez le scan ; vous pourrez enregistrer le résultat comme projet plus tard. Dans le terminal, crawl-site suit les liens depuis l'URL de départ et écrit un seul scan SQLite natif que vous pouvez rouvrir, exporter et réanalyser hors ligne. Le même crawl est accessible à un agent IA via le serveur MCP local, sous le nom seo_crawl_site.

  • Même hôte par défaut ; les sous-domaines sont une option à activer (scope.internal)
  • robots.txt est respecté par défaut
  • Gratuit et local : ni compte hébergé ni licence Screaming Frog

Les contrôles impossibles à exécuter le signalent

Un crawl natif ne collecte pas tous les types de données. Un contrôle qui a besoin de données que le crawl n'a pas collectées est signalé comme ignoré, avec une raison, et jamais comme faussement propre. Chaque contrôle aboutit à l'un de ces états : constat, exécuté sans constat, ignoré ou en échec.

  • Quatre issues possibles par contrôle, pour qu'un manque ne soit jamais caché
  • Les contrôles de liens qui exigent un crawl complet sont retenus sur un crawl partiel

Trois étapes, un seul scan enregistré

  1. Partir d'une URL

    Saisissez une URL de départ dans l'application de bureau, ou lancez crawl-site dans le terminal. Le crawl suit les liens du même hôte et écrit un seul scan SQLite que vous pouvez rouvrir.

  2. Rester poli par défaut

    Environ deux requêtes par seconde et par hôte, avec des délais adaptatifs. Vous fixez le plafond d'URL ; la valeur par défaut est de 200 URL.

  3. Auditer les mêmes preuves

    Le crawl est contrôlé avec le même registre que les exports Screaming Frog. Un contrôle qui exige des données qu'un crawl natif ne peut pas collecter est marqué comme ignoré, avec une raison, et jamais comme propre.

Contrôles de cette fonctionnalité

ContrôleSignificationGravitéPreuve
BROKEN_PAGE_4XXLa page crawlée renvoie une réponse 4xxCriticalURL et code de statut de la réponse
SERVER_ERROR_5XXLa page crawlée renvoie une réponse 5xxCriticalURL et code de statut de la réponse
NO_RESPONSEAucune réponse : délai dépassé, échec DNS ou de connexionCriticalURL et raison de l'échec
BROKEN_INTERNAL_LINKUn lien interne pointe vers une URL en 4xxCriticalPage source et position du lien
REDIRECT_LOOPLa chaîne de redirections revient à une URL déjà visitéeCriticalChemin de la boucle
REDIRECT_CHAINDeux redirections ou plus avant l'URL finaleImportantChaque saut avec son statut
BLOCKED_BY_ROBOTSrobots.txt bloque l'URL, donc le crawl ne l'a pas récupéréeImportantURL et règle robots.txt correspondante

Une seule commande

bash
seohead crawl-site --url https://example.com --max-urls 500 --scan-out ./scans/audit.sqlite

Commencez par installer : guide d'installation. Chaque commande fonctionne aussi comme outil MCP pour les agents IA.

Ce qu'il vous faut

  • Une URL de départ (ou une liste d'URL avec --urls ou --urls-file)
  • Un chemin pour le fichier de scan (--scan-out), ou un dossier de projet
  • Facultatif : un fichier de configuration du crawler (JSON) ; crawl-site --config-help liste tous les réglages

Limites

  • Le crawl de base lit le HTML statique ; le rendu JavaScript est une option supplémentaire
  • Il s'arrête à 200 URL par défaut ; augmentez --max-urls en connaissance de cause (jusqu'à 1 000 000)
  • Ce n'est pas un remplaçant complet de Screaming Frog : certains contrôles sont ignorés
  • Il suit les liens d'un seul hôte, sauf si vous élargissez le périmètre

Questions

Ai-je besoin d'une licence Screaming Frog ?
Non. Le crawl natif tourne en local et ne demande ni compte hébergé ni licence Screaming Frog. Vous pouvez tout de même importer des exports Screaming Frog si vous en avez déjà.
S'agit-il d'un remplaçant complet de Screaming Frog ?
Non, et il ne prétend pas à la parité. Les contrôles qui exigent des éléments qu'un crawl natif n'a pas collectés sont signalés comme ignorés, et summary.check_coverage indique quelle part du registre a été exécutée.
Respecte-t-il robots.txt ?
Oui, par défaut. Si robots.txt ne peut pas du tout être récupéré, le crawl s'arrête au lieu de supposer l'accès (robots.unavailable_means_stop, activé par défaut). Utilisez --robots report_only pour crawler malgré tout et lister ce qui serait bloqué.
Combien d'URL va-t-il crawler ?
Le plafond par défaut est de 200 URL. Fixez --max-urls jusqu'à 1 000 000, ou 0 pour aucune limite d'URL, toujours bornée par les autres garde-fous de ressources. Les crawls au-delà des budgets du projet demandent --approve-large-crawl.
Peut-il rendre les pages JavaScript ?
Pas dans le crawl par défaut. Le rendu est optionnel : installez l'extra render et un navigateur Playwright, puis réglez rendering.mode sur js dans la configuration du crawl. Le crawl de base fonctionne sans navigateur.