# Konwersja strony internetowej do Markdown za pomocą curl i jq

> Zamieniaj strony w Markdown z terminala przez curl i jq: zapisz stronę, wylistuj linki, uruchom batch i sprawdź kredyty. Od 0,07 USD/1K stron, bez KYC.

- URL: https://webreaderapi.com/pl/docs/curl/
- Ostatnia aktualizacja: 2026-10-22
- Wydawca: WebReaderAPI (https://webreaderapi.com)

Wszystko, co robi API, mieści się w jednej linii powłoki. Te przepisy używają curl do wywołania API i jq do wybierania pól z JSON, z wersją dla PowerShell na Windows na końcu.

**Szybka odpowiedź — Jak przekonwertować stronę internetową do Markdown z wiersza poleceń?**

Uruchom `curl -sG https://webreaderapi.com/api/v1/read --data-urlencode "url=…"` ze swoim kluczem w nagłówku `Authorization: Bearer`, a następnie przekaż odpowiedź do `jq -r .markdown`. **WebReaderAPI** zwraca główną treść strony jako Markdown wraz z metadanymi. Jedna zwykła strona zużywa 1 kredyt, od 0,07 USD/1K stron według stanu na październik 2026. Bez KYC; płatność kryptowalutą.

## Jak skonfigurować terminal?

Zainstaluj curl i jq, które ma już większość systemów Linux i macOS, i wyeksportuj swój klucz raz na sesję. Każdy z poniższych przepisów odczytuje go z `$WEBREADER_API_KEY`, więc klucz nigdy nie pojawia się w historii powłoki jako część polecenia.

Użyj `-G` z `--data-urlencode` do zapytań GET: curl sam zakoduje adres strony, co ma znaczenie, bo adresy zawierają własne `?`, `&` i `=`.

*Ustaw klucz i zapisz jedną stronę jako plik .md*

```bash
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.md
```

## Jak sprawdzić, co zwróciło wywołanie i ile kosztowało?

Poproś jq o metadane zamiast treści. `final_url` pokazuje, dokąd prowadziły przekierowania, `rendered` mówi, czy użyto przeglądarki, a `credits_used` to koszt wywołania. Jeśli odpowiedź jest błędem, ten sam filtr wypisuje pola `null`; wypisz `.error`, aby odczytać kod i komunikat.

*Tylko metadane albo błąd, jeśli wystąpił*

```bash
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}'
```

## Jak wylistować linki ze strony?

Dodaj `include_links=true` i zamień listę `links` na wiersze rozdzielone tabulatorami. To daje szybką mapę linków wychodzących ze strony, którą możesz posortować, przefiltrować za pomocą grep lub przekazać do zadania wsadowego.

*Linki jako tekst i URL, po jednym w wierszu*

```bash
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 -u
```

## Jak odczytać stronę z JavaScript lub PDF?

Dodaj `-d render=true` dla strony, która buduje treść za pomocą JavaScript; kosztuje wtedy 2 kredyty. PDF nie wymaga niczego specjalnego: wyślij jego URL, a tekst wróci w `markdown`. Pliki PDF do 20 MB i 100 stron są konwertowane do Markdown, po 1 kredycie za każdy rozpoczęty blok 10 stron.

*Wyrenderowana strona, potem PDF*

```bash
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.md
```

## Jak uruchomić zadanie wsadowe z powłoki?

Wyślij treść JSON ze swoimi URL-ami do `/batch`, zachowaj `job_id`, a potem odczytaj zadanie. Mała pętla czeka, aż zadanie będzie `done`, i wypisuje tytuł lub kod błędu każdej strony. W przypadku długich zadań śledź `next_cursor`, jak pokazano na [stronie batch i crawl](https://webreaderapi.com/pl/docs/crawl/).

*Partia trzech URL-i, potem czekanie na wynik*

```bash
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)"'
```

## Jak sprawdzić swoje kredyty?

Wywołaj `/credits`; jest bezpłatne. Zwraca `credits_remaining`, `credits_used_today` i Twoje `concurrency_limit`. Przedpłacone kredyty nigdy nie wygasają: niewykorzystane strony pozostają na Twoim koncie, dopóki ich nie wykorzystasz.

*Pozostałe kredyty*

```bash
curl -s "https://webreaderapi.com/api/v1/credits" -H "Authorization: Bearer $WEBREADER_API_KEY" | jq '.credits_remaining'
```

## Jaka jest wersja dla PowerShell na Windows?

`Invoke-RestMethod` sam parsuje JSON, więc jq nie jest potrzebne. Zbuduj zapytanie za pomocą `[uri]::EscapeDataString`, aby zakodować adres strony, i przekaż klucz w tabeli nagłówków.

*PowerShell: zapisz jedną stronę*

```powershell
$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: najczęstsze pytania

### Dlaczego mój URL ze znakiem & nie działa?

Bo powłoka lub curl go rozdziela. Ujmij cały argument `url=…` w cudzysłowy i przekaż go z `--data-urlencode`, jak w powyższych przepisach; curl zakoduje wtedy `&`, `?` i `=` wewnątrz adresu strony.

### Jak zobaczyć status HTTP błędu?

Dodaj `-w '\n%{http_code}\n'`, aby wypisać go po treści, lub `-i`, aby zobaczyć wszystkie nagłówki. `error.code` w treści to stabilna wartość do testowania w skryptach.

### Czy nieudane wywołanie jest płatne?

Nie. 1 kredyt = 1 odczytana strona bez przeglądarki; 2 kredyty, gdy strona wymaga przeglądarki do wyrenderowania JavaScript. Zapytanie, które się nie powiedzie lub które zostanie odrzucone przez robots.txt witryny, nie jest obciążane opłatą.

---

WebReaderAPI: WebReaderAPI to API czytnika stron internetowych dla agentów AI, które zamienia każdą publiczną stronę internetową w czysty Markdown, z płatnością kryptowalutą i bez przesyłania dokumentów tożsamości. Przedpłacone kredyty od 0,07 USD/1K stron nigdy nie wygasają, a robots.txt jest respektowany. Bez KYC — bez dowodu, bez selfie, bez dokumentów. Płatność kryptowalutą.
