# Halaman web ke Markdown dengan curl dan jq

> Ubah halaman web jadi Markdown dari terminal pakai curl dan jq: simpan halaman, daftar tautan, jalankan batch, cek kredit. Dari US$0,07/1K halaman, tanpa KYC.

- URL: https://webreaderapi.com/id/docs/curl/
- Terakhir diperbarui: 2026-10-22
- Penerbit: WebReaderAPI (https://webreaderapi.com)

Semua yang dilakukan API muat dalam one-liner shell. Resep ini memakai curl untuk memanggil API dan jq untuk mengambil field dari JSON, dengan versi PowerShell untuk Windows di bagian akhir.

**Jawaban singkat — Bagaimana cara mengubah halaman web menjadi Markdown dari command line?**

Jalankan `curl -sG https://webreaderapi.com/api/v1/read --data-urlencode "url=…"` dengan API key Anda di header `Authorization: Bearer`, lalu pipe jawabannya ke `jq -r .markdown`. **WebReaderAPI** mengembalikan konten utama halaman sebagai Markdown beserta metadatanya. Satu halaman biasa menggunakan 1 kredit, dari US$0,07/1K halaman per Oktober 2026. Tanpa KYC; bayar dengan kripto.

## Bagaimana cara menyiapkan terminal?

Instal curl dan jq, yang biasanya sudah tersedia di sebagian besar sistem Linux dan macOS, lalu ekspor API key Anda sekali per sesi. Setiap resep di bawah membacanya dari `$WEBREADER_API_KEY`, jadi API key tidak pernah muncul di riwayat shell Anda sebagai bagian dari sebuah perintah.

Gunakan `-G` dengan `--data-urlencode` untuk permintaan GET: curl lalu mengodekan alamat halaman untuk Anda, yang penting karena alamat berisi `?`, `&` dan `=` miliknya sendiri.

*Setel API key dan simpan satu halaman sebagai file .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
```

## Bagaimana cara melihat apa yang dikembalikan sebuah panggilan dan berapa biayanya?

Minta metadata ke jq, bukan kontennya. `final_url` menunjukkan ke mana redirect mengarah, `rendered` memberi tahu apakah browser digunakan, dan `credits_used` adalah biaya panggilan tersebut. Jika jawabannya berupa error, filter yang sama mencetak field `null`; cetak `.error` untuk membaca kode dan pesannya.

*Hanya metadata, atau error jika ada*

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

## Bagaimana cara menampilkan daftar tautan sebuah halaman?

Tambahkan `include_links=true` dan ubah daftar `links` menjadi baris yang dipisahkan tab. Itu memberi Anda peta cepat tautan keluar sebuah halaman, yang bisa Anda urutkan, filter dengan grep, atau umpankan ke job batch.

*Tautan sebagai teks dan URL, satu per baris*

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

## Bagaimana cara membaca halaman JavaScript atau PDF?

Tambahkan `-d render=true` untuk halaman yang membangun kontennya dengan JavaScript; harganya lalu 2 kredit. PDF tidak butuh apa-apa yang khusus: kirim URL-nya dan teksnya kembali dalam `markdown`. File PDF hingga 20 MB dan 100 halaman dikonversi menjadi Markdown, dengan 1 kredit per blok 10 halaman yang dimulai.

*Halaman yang dirender, lalu 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
```

## Bagaimana cara menjalankan job batch dari shell?

Kirim body JSON berisi URL Anda ke `/batch`, simpan `job_id`, lalu baca job tersebut. Sebuah loop kecil menunggu sampai job berstatus `done` dan mencetak judul atau kode error tiap halaman. Untuk job yang panjang, ikuti `next_cursor` seperti yang ditunjukkan di [halaman batch dan crawl](https://webreaderapi.com/id/docs/crawl/).

*Batch berisi tiga URL, lalu tunggu hasilnya*

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

## Bagaimana cara mengecek kredit saya?

Panggil `/credits`; ini gratis. Hasilnya `credits_remaining`, `credits_used_today` dan `concurrency_limit` Anda. Kredit prabayar tidak pernah kedaluwarsa: halaman yang belum digunakan tetap ada di akun Anda sampai Anda memakainya.

*Kredit tersisa*

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

## Apa versi PowerShell di Windows?

`Invoke-RestMethod` mem-parse JSON untuk Anda, jadi tidak perlu jq. Bangun kueri dengan `[uri]::EscapeDataString` untuk mengodekan alamat halaman, dan kirimkan API key dalam tabel headers.

*PowerShell: simpan satu halaman*

```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: pertanyaan umum

### Mengapa URL saya yang berisi & gagal?

Karena shell atau curl memecahnya. Beri tanda kutip pada seluruh argumen `url=…` dan kirimkan dengan `--data-urlencode`, seperti pada resep di atas; curl lalu mengodekan `&`, `?` dan `=` di dalam alamat halaman.

### Bagaimana cara melihat status HTTP dari sebuah error?

Tambahkan `-w '\n%{http_code}\n'` untuk mencetaknya setelah body, atau `-i` untuk melihat semua headers. `error.code` pada body adalah nilai stabil untuk diuji dalam skrip.

### Apakah panggilan yang gagal ditagih?

Tidak. 1 kredit = 1 halaman dibaca tanpa browser; 2 kredit jika halaman memerlukan browser untuk merender JavaScript. Permintaan yang gagal, atau yang ditolak oleh robots.txt suatu situs, tidak dikenai biaya.

---

WebReaderAPI: WebReaderAPI adalah API pembaca web untuk AI agent yang mengubah halaman web publik apa pun menjadi Markdown bersih, dibayar dengan kripto tanpa unggah identitas. Kredit prabayar mulai dari US$0,07/1K halaman tidak pernah kedaluwarsa, dan robots.txt dihormati. Tanpa KYC — tanpa identitas, tanpa selfie, tanpa dokumen. Bayar dengan kripto.
