Exécutez Thunderbit depuis le terminal — distillez des pages en Markdown, extrayez des données structurées, suggérez des champs et traitez en lot jusqu'à 100 URL. La CLI fonctionne en autonome ou comme une boîte à outils de skills que les agents IA de coding peuvent découvrir.
Distillez, extrayez, suggérez des champs et exécutez des tâches en lot directement depuis le terminal.
Avant d'utiliser la CLI, vous devez vous authentifier avec votre clé API Thunderbit. Récupérez une clé sur Thunderbit Dashboard. Format : tb_ suivi de 32 caractères hexadécimaux.
Pour les passerelles Thunderbit auto-hébergées, remplacez la base URL :
# Per callthunderbit --base-url https://api.your-domain.com distill https://example.com# Or set via environment variableexport THUNDERBIT_API_BASE_URL=https://api.your-domain.comthunderbit distill https://example.com
# Use the basic JS renderer (covers most modern sites)thunderbit distill https://example.com --render-mode basic# Use the full headless browser (slowest, highest fidelity)thunderbit distill https://example.com --render-mode full# Geo-target for region-aware sitesthunderbit distill https://example.com --country-code DE# Bump per-page timeoutthunderbit distill https://example.com --timeout 60000# Use sync /distill instead of the default async submit + pollthunderbit distill https://example.com --sync
Options disponibles :
Option
Par défaut
Description
--render-mode <mode>
none
none, basic ou full
--timeout <ms>
30000
Timeout de requête par page en ms
--country-code <CC>
US
Code ISO à 2 lettres, en majuscules
--sync
false
Utiliser le mode synchrone au lieu de l'async submit + poll
Extrait des données structurées d'une page. Le schema est une map plate de fieldName → instruction en langage naturel — chaque valeur est une indication que l'IA utilise pour trouver le champ sur la page.
Note : l'exemple de la spec OpenAPI en amont montre un JSON Schema ({type:"object",properties:…}). Au moment où ces lignes sont écrites, le serveur en production attend la map plate d'instructions présentée ci-dessous ; nous alignons la spec.
# Schéma inline — map plate champ → instructionthunderbit extract https://example.com/product \ --schema '{"name":"product name","price":"the listed price as a number","currency":"3-letter currency code"}'# Schéma depuis un fichierthunderbit extract https://example.com/product --schema ./schema.json# Sauvegarder le JSON extraitthunderbit extract https://example.com/product --schema ./schema.json --format json -o data.json
La réponse renvoie toujours data.data sous forme de tableau, un élément par région de page correspondant à votre schéma :
# AI proposes fields, you toggle/edit, then extraction runs with the curated schemathunderbit extract https://example.com/product --interactive# Steer the suggestion with a promptthunderbit extract https://example.com/product -i --prompt "focus on pricing and availability"# Persist the schema for reusethunderbit extract https://example.com/product -i --save-schema ./product-schema.json
Laissez l'AI proposer des champs extractibles avant que vous n'écriviez un schéma.
# Basicthunderbit suggest-fields https://example.com/product# Steer with a promptthunderbit suggest-fields https://example.com/listings --prompt "extract job postings only"# Region-awarethunderbit suggest-fields https://example.com --country-code DE
L'éditeur interactif vous permet de basculer les champs par numéro (1 3 5), add, rm 2, edit 4, puis done pour confirmer. suggest-fields renvoie [{name, type, instruction}, …] ; lorsque vous l'injectez dans extract, transformez-le d'abord en map plate :
Soumettez jusqu'à 100 URL dans une seule tâche batch. Par défaut : submit + poll jusqu'à COMPLETED / FAILED / CANCELLED.
# URLs as positional argsthunderbit batch distill https://a.com https://b.com https://c.com# Or read URLs from a file (one per line)thunderbit batch distill --file urls.txt# Submit only — print the job ID and exit (use webhook or poll later)thunderbit batch distill --file urls.txt --no-poll
Les pages déjà terminées conservent leurs résultats. Les pages en attente sont abandonnées et vous n'êtes plus facturé pour celles-ci. Le statut bascule en CANCELLED dès que le serveur l'acquitte.
Même sémantique que cancel-distill — les lignes terminées sont conservées, les lignes en attente sont abandonnées, la facturation s'arrête pour le reste.
Succès. Le résultat est sur stdout dans le format choisi par --format.
1
Tout échec — clé API manquante, erreur d'auth, HTTP 4xx/5xx, erreur réseau, fichier de schéma manquant, argument requis manquant.
Tout le texte d'erreur est écrit sur stderr. En cas d'échec, stdout reste vide (oui, même avec --format json). Cela signifie qu'un pipeline jq ne reçoit jamais d'enveloppe à moitié cuite — vérifiez le code de sortie (ou set -e) avant de parser.
La progression du polling (par exemple Processing... (3) depuis async submit + poll) est aussi écrite sur stderr. Pipez 2>/dev/null pour la museler. Les appels synchrones sur une seule page (--sync) n'émettent pas de progression.
Error: API key is required. Exportez THUNDERBIT_API_KEY ou passez --api-key.
Erreurs réseau derrière un proxy d'entreprise. Définissez HTTPS_PROXY et HTTP_PROXY — les clients Node et Python les respectent tous les deux.
Polling de batch lent. Augmentez --timeout pour le budget par page. La cadence de polling elle-même est fixée à quelques secondes et n'est pas configurable depuis la CLI aujourd'hui.
La CLI Thunderbit est sous licence MIT et open source sur GitHub : GitHub repository (le même dépôt fournit aussi le serveur MCP et le plugin Claude Code). Distribuée sur npm sous le nom @thunderbit/thunderbit-cli.