Ejecuta Thunderbit desde la terminal — destila páginas a Markdown, extrae datos estructurados, sugiere campos y procesa hasta 100 URLs por lotes. La CLI funciona de forma autónoma o como toolkit de skills que los agentes de IA de codificación pueden descubrir.
Destila, extrae, sugiere campos y ejecuta trabajos por lotes directamente desde la terminal.
Antes de usar la CLI, necesitas autenticarte con tu API key de Thunderbit. Consigue una key en app.thunderbit.com/console. Formato: tb_ seguido de 32 caracteres hex.
Para gateways de Thunderbit self-hosted, sobreescribe 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
Opciones disponibles:
Opción
Por defecto
Descripción
--render-mode <mode>
none
none, basic o full
--timeout <ms>
30000
Timeout de petición por página en ms
--country-code <CC>
US
Código ISO de 2 letras, mayúsculas
--sync
false
Modo sync en lugar del async submit + poll por defecto
Extrae datos estructurados de una página. El schema es un mapa plano de fieldName → instrucción en lenguaje natural — cada valor es una pista que la IA usa para encontrar el campo en la página.
Nota: el ejemplo de la spec OpenAPI upstream muestra JSON Schema ({type:"object",properties:…}). En el momento de escribir esto el servidor en producción espera el mapa plano de instrucciones que se muestra debajo; estamos alineando la spec.
# Schema inline — mapa plano de campo → instrucciónthunderbit extract https://example.com/product \ --schema '{"name":"product name","price":"the listed price as a number","currency":"3-letter currency code"}'# Schema desde archivothunderbit extract https://example.com/product --schema ./schema.json# Guardar el JSON extraídothunderbit extract https://example.com/product --schema ./schema.json --format json -o data.json
La respuesta siempre devuelve data.data como un array, un elemento por región de página que coincida con tu 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
Deja que la IA proponga campos extraíbles antes de escribir un 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
El editor interactivo permite alternar campos por número (1 3 5), add, rm 2, edit 4, y luego done para confirmar. suggest-fields devuelve [{name, type, instruction}, …]; cuando lo conectas a extract, transfórmalo primero en un mapa plano:
Envía hasta 100 URLs en un solo trabajo por lotes. Por defecto: enviar + polling hasta 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
Las páginas ya completadas conservan sus resultados. Las páginas pendientes se descartan y dejas de pagar por ellas. El estado cambia a CANCELLED en cuanto el servidor lo confirma.
Éxito. El resultado está en stdout en el formato elegido por --format.
1
Cualquier fallo — falta de API key, error de auth, HTTP 4xx/5xx, error de red, archivo de schema faltante, argumento obligatorio faltante.
Todo el texto de error se escribe en stderr. Ante un fallo, stdout queda vacío (sí, incluso con --format json). Eso significa que un pipeline jq nunca recibe un envelope a medias — comprueba el código de salida (o set -e) antes de parsear.
El progreso del polling (por ejemplo Processing... (3) desde async submit + poll) también se escribe en stderr. Con 2>/dev/null lo silencias. Las llamadas síncronas de página única (--sync) no emiten progreso.
Error: API key is required. Exporta THUNDERBIT_API_KEY o pasa --api-key.
Errores de red detrás de un proxy corporativo. Define HTTPS_PROXY y HTTP_PROXY — tanto los clientes Node como Python los respetan.
Polling de batch lento. Sube --timeout para el presupuesto por página. La cadencia de polling en sí está fijada en unos pocos segundos y no es configurable hoy desde la CLI.