Esegui Thunderbit dal terminale — distilla pagine in Markdown, estrai dati strutturati, suggerisci campi ed elabora in batch fino a 100 URL. La CLI funziona da sola o come toolkit di skills che gli agenti AI di coding possono scoprire.
Distilla, estrai, suggerisci campi ed esegui job in batch direttamente dal terminale.
Prima di usare la CLI, devi autenticarti con la tua chiave API Thunderbit. Ottieni una chiave dalla Thunderbit Dashboard. Formato: tb_ seguito da 32 caratteri esadecimali.
Per gateway Thunderbit self-hosted, sovrascrivi 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
Opzioni disponibili:
Opzione
Default
Descrizione
--render-mode <mode>
none
none, basic o full
--timeout <ms>
30000
Timeout della richiesta per pagina in ms
--country-code <CC>
US
Codice ISO a 2 lettere, maiuscolo
--sync
false
Usa la modalità sync invece di async submit + poll
Estrai dati strutturati da una pagina. Lo schema è una mappa piatta di fieldName → istruzione in linguaggio naturale — ogni valore è un suggerimento che l'AI usa per trovare il campo nella pagina.
Nota: l'esempio della spec OpenAPI a monte mostra JSON Schema ({type:"object",properties:…}). Al momento della scrittura il server in produzione si aspetta la mappa piatta di istruzioni mostrata sotto; stiamo allineando la spec.
# Schema inline — mappa piatta campo → istruzionethunderbit extract https://example.com/product \ --schema '{"name":"product name","price":"the listed price as a number","currency":"3-letter currency code"}'# Schema da filethunderbit extract https://example.com/product --schema ./schema.json# Salva il JSON estrattothunderbit extract https://example.com/product --schema ./schema.json --format json -o data.json
La risposta restituisce sempre data.data come array, un elemento per regione di pagina che corrisponde al tuo schema:
# 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
Lascia che l'AI proponga i campi estraibili prima che tu scriva uno schema.
# 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'editor interattivo ti permette di attivare/disattivare i campi tramite numero (1 3 5), add, rm 2, edit 4, e poi done per confermare. suggest-fields restituisce [{name, type, instruction}, …]; quando lo passi a extract, trasformalo prima in una mappa piatta:
Invia fino a 100 URL in un unico job in batch. Per default invia + esegue il polling fino a 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
Le pagine già completate mantengono i loro risultati. Le pagine in attesa vengono scartate e non vengono più addebitate. Lo stato passa a CANCELLED non appena il server conferma.
Successo. Il risultato è su stdout nel formato scelto da --format.
1
Qualsiasi errore — API key mancante, errore di auth, HTTP 4xx/5xx, errore di rete, file di schema mancante, argomento obbligatorio mancante.
Tutto il testo di errore viene scritto su stderr. In caso di errore, stdout resta vuoto (sì, anche con --format json). Significa che una pipeline jq non riceve mai un envelope a metà — controlla il codice di uscita (o set -e) prima di fare il parsing.
Anche il progresso del polling (es. Processing... (3) da async submit + poll) viene scritto su stderr. Pipa 2>/dev/null per silenziarlo. Le chiamate sincrone su singola pagina (--sync) non emettono progresso.
Error: API key is required. Esporta THUNDERBIT_API_KEY o passa --api-key.
Errori di rete dietro un proxy aziendale. Imposta HTTPS_PROXY e HTTP_PROXY — sia i client Node che Python li rispettano.
Polling dei batch lento. Aumenta --timeout per il budget per pagina. La cadenza di polling è fissata a pochi secondi e oggi non è configurabile dalla CLI.
La Thunderbit CLI è rilasciata con licenza MIT ed è open source su GitHub: GitHub repository (lo stesso repository ospita anche il server MCP e il plugin Claude Code). Distribuita su npm come @thunderbit/thunderbit-cli.