Resposta rápida
Como converto uma página web em Markdown pela linha de comando?
Execute curl -sG https://webreaderapi.com/api/v1/read --data-urlencode "url=…" com sua chave em um cabeçalho Authorization: Bearer e canalize a resposta para jq -r .markdown. WebReaderAPI retorna o conteúdo principal da página como Markdown com seus metadados. Uma página simples usa 1 crédito, a partir de US$ 0,07/1K páginas em outubro de 2026. Sem KYC; pague com cripto.
Como configuro o terminal?
Instale curl e jq, que a maioria dos sistemas Linux e macOS já tem, e exporte sua chave uma vez por sessão. Todas as receitas abaixo leem a chave de $WEBREADER_API_KEY, então ela nunca aparece no seu histórico do shell como parte de um comando.
Use -G com --data-urlencode para requisições GET: o curl então codifica o endereço da página para você, o que importa porque os endereços contêm ?, & e = próprios.
export WEBREADER_API_KEY="your-key"
curl -sG "https://webreaderapi.com/api/v1/read" \
-H "Authorization: Bearer $WEBREADER_API_KEY" \
--data-urlencode "url=https://example.com/guides/compost" \
| jq -r '.markdown' > compost.mdComo vejo o que uma chamada retornou e quanto custou?
Peça ao jq os metadados em vez do conteúdo. final_url mostra para onde os redirecionamentos levaram, rendered informa se um navegador foi usado, e credits_used é quanto a chamada custou. Se a resposta for um erro, o mesmo filtro imprime os campos de null; imprima .error para ler o código e a mensagem.
curl -sG "https://webreaderapi.com/api/v1/read" \
-H "Authorization: Bearer $WEBREADER_API_KEY" \
--data-urlencode "url=https://example.com/guides/compost" \
| jq '.error // {title, final_url, rendered, credits_used, word_count}'Como listo os links de uma página?
Adicione include_links=true e transforme a lista links em linhas separadas por tabulação. Isso te dá um mapa rápido dos links de saída de uma página, que você pode ordenar, filtrar com grep ou alimentar um job em lote.
curl -sG "https://webreaderapi.com/api/v1/read" \
-H "Authorization: Bearer $WEBREADER_API_KEY" \
--data-urlencode "url=https://example.com/docs/" \
-d include_links=true \
| jq -r '.links[] | "\(.text)\t\(.url)"' | sort -uComo leio uma página em JavaScript ou um PDF?
Adicione -d render=true para uma página que monta o conteúdo com JavaScript; ela então custa 2 créditos. Um PDF não precisa de nada especial: envie a URL e o texto volta em markdown. Arquivos PDF de até 20 MB e 100 páginas são convertidos em Markdown, a 1 crédito por bloco iniciado de 10 páginas.
curl -sG "https://webreaderapi.com/api/v1/read" -H "Authorization: Bearer $WEBREADER_API_KEY" \
--data-urlencode "url=https://example.com/app/changelog" -d render=true \
| jq -r '.markdown' > changelog.md
curl -sG "https://webreaderapi.com/api/v1/read" -H "Authorization: Bearer $WEBREADER_API_KEY" \
--data-urlencode "url=https://example.com/files/annual-report.pdf" \
| jq -r '.markdown' > annual-report.mdComo rodo um job em lote a partir do shell?
Envie um corpo JSON com suas URLs para /batch, guarde o job_id e depois leia o job. Um pequeno loop espera até o job ficar done e imprime o título ou o código de erro de cada página. Para jobs longos, acompanhe next_cursor como mostrado na página de lote e rastreamento.
JOB=$(curl -s "https://webreaderapi.com/api/v1/batch" \
-H "Authorization: Bearer $WEBREADER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com/a", "https://example.com/b", "https://example.com/c"]}' \
| jq -r '.job_id')
until [ "$(curl -s "https://webreaderapi.com/api/v1/jobs/$JOB" -H "Authorization: Bearer $WEBREADER_API_KEY" | jq -r '.status')" = "done" ]; do
sleep 5
done
curl -s "https://webreaderapi.com/api/v1/jobs/$JOB" -H "Authorization: Bearer $WEBREADER_API_KEY" \
| jq -r '.results[] | "\(.url)\t\(.title // .error.code)"'Como verifico meus créditos?
Chame /credits; é grátis. Retorna credits_remaining, credits_used_today e seu concurrency_limit. Os créditos pré-pagos nunca expiram: as páginas não usadas ficam na sua conta até você usá-las.
curl -s "https://webreaderapi.com/api/v1/credits" -H "Authorization: Bearer $WEBREADER_API_KEY" | jq '.credits_remaining'Qual é a versão em PowerShell no Windows?
Invoke-RestMethod faz o parse do JSON para você, então não precisa de jq. Monte a consulta com [uri]::EscapeDataString para codificar o endereço da página e passe a chave em uma tabela de headers.
$headers = @{ Authorization = "Bearer $env:WEBREADER_API_KEY" }
$target = [uri]::EscapeDataString('https://example.com/guides/compost')
$page = Invoke-RestMethod -Uri "https://webreaderapi.com/api/v1/read?url=$target" -Headers $headers
$page.markdown | Out-File -Encoding utf8 compost.md
"$($page.title): $($page.word_count) words, $($page.credits_used) credit(s)"curl: perguntas frequentes
Por que minha URL com & falha?
Porque o shell ou o curl a divide. Coloque todo o argumento url=… entre aspas e passe-o com --data-urlencode, como nas receitas acima; o curl então codifica &, ? e = dentro do endereço da página.
Como vejo o status HTTP de um erro?
Adicione -w '\n%{http_code}\n' para imprimi-lo após o corpo, ou -i para ver todos os headers. O error.code do corpo é o valor estável para testar em scripts.
Uma chamada com falha é cobrada?
Não. 1 crédito = 1 página lida sem navegador; 2 créditos quando a página precisa de um navegador para renderizar JavaScript. Uma requisição que falha, ou que o robots.txt de um site recusa, não é cobrada.