Không cần KYC — không ID, không selfie, không giấy tờ. Thanh toán bằng crypto: BTC, USDT, USDC, ETH, SOL, LTC
Ngôn ngữ: Tiếng Việt
Lấy khóa API

Tài liệu · curl

Trang web sang Markdown với curl và jq

Mọi thứ API làm được đều gói gọn trong một dòng lệnh shell. Các công thức này dùng curl để gọi API và jq để lấy các field ra khỏi JSON, kèm một phiên bản PowerShell cho Windows ở cuối.

Cập nhật lần cuối: · 4 phút đọc

Câu trả lời nhanh

Làm sao để chuyển một trang web sang Markdown từ dòng lệnh?

Chạy curl -sG https://webreaderapi.com/api/v1/read --data-urlencode "url=…" với khóa API của bạn trong một header Authorization: Bearer, rồi pipe câu trả lời tới jq -r .markdown. WebReaderAPI trả về nội dung chính của trang dưới dạng Markdown kèm metadata. Một trang thông thường dùng 1 credit, từ 0,07 US$/1K trang tính đến tháng 10 năm 2026. Không cần KYC; thanh toán bằng crypto.

Làm thế nào để thiết lập terminal?

Cài curl và jq, hầu hết hệ thống Linux và macOS đều đã có sẵn, rồi export khóa của bạn một lần mỗi phiên. Mọi công thức bên dưới đều đọc khóa từ $WEBREADER_API_KEY, nên khóa không bao giờ xuất hiện trong lịch sử shell của bạn như một phần của lệnh.

Dùng -G với --data-urlencode cho các request GET: curl sau đó sẽ tự mã hóa địa chỉ trang cho bạn, điều này quan trọng vì địa chỉ có chứa ?, & và = của riêng chúng.

Đặt khóa và lưu một trang thành file .md
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

Làm thế nào để xem một lệnh gọi đã trả về gì và tốn bao nhiêu?

Hỏi jq lấy metadata thay vì nội dung. final_url cho biết các chuyển hướng đã dẫn đến đâu, rendered cho bạn biết có dùng trình duyệt hay không, và credits_used là chi phí của lệnh gọi. Nếu kết quả là lỗi, cùng bộ lọc đó sẽ in ra các trường null; in .error để đọc mã và thông báo.

Chỉ metadata, hoặc lỗi nếu có
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}'

Làm thế nào để liệt kê các liên kết của một trang?

Thêm include_links=true và chuyển danh sách links thành các dòng phân tách bằng tab. Như vậy bạn có một bản đồ nhanh các liên kết đi ra của một trang, có thể sắp xếp, lọc bằng grep hoặc đưa vào một batch job.

Liên kết dưới dạng text và URL, mỗi dòng một cái
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

Làm thế nào để đọc một trang JavaScript hoặc một file PDF?

Thêm -d render=true cho một trang dựng nội dung bằng JavaScript; khi đó tốn 2 credit. Một file PDF không cần gì đặc biệt: gửi URL của nó và văn bản sẽ trả về trong markdown. Tệp PDF tối đa 20 MB và 100 trang được chuyển sang Markdown, với 1 credit cho mỗi khối 10 trang bắt đầu.

Một trang đã render, rồi một file PDF
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

Làm thế nào để chạy một batch job từ shell?

Post một JSON body chứa các URL của bạn đến /batch, giữ lại job_id, rồi đọc job. Một vòng lặp nhỏ sẽ chờ cho đến khi job done và in ra tiêu đề hoặc mã lỗi của từng trang. Với các job dài, hãy theo dõi next_cursor như được chỉ ra trên trang batch và crawl.

Batch gồm ba URL, rồi chờ kết quả
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)"'

Làm thế nào để kiểm tra credit của tôi?

Gọi /credits; lệnh này miễn phí. Nó trả về credits_remaining, credits_used_today và concurrency_limit của bạn. Credit trả trước không bao giờ hết hạn: số trang chưa dùng vẫn ở trong tài khoản của bạn cho đến khi bạn dùng.

Credit còn lại
curl -s "https://webreaderapi.com/api/v1/credits" -H "Authorization: Bearer $WEBREADER_API_KEY" | jq '.credits_remaining'

Phiên bản PowerShell trên Windows thì sao?

Invoke-RestMethod tự phân tích JSON cho bạn, nên không cần jq. Xây truy vấn bằng [uri]::EscapeDataString để mã hóa địa chỉ trang, và truyền khóa trong một bảng headers.

PowerShell: lưu một trang
$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: các câu hỏi thường gặp

Tại sao URL của tôi có chứa & lại bị lỗi?

Vì shell hoặc curl đã tách nó ra. Hãy đặt toàn bộ đối số url=… trong dấu nháy và truyền nó bằng --data-urlencode, như trong các công thức trên; khi đó curl sẽ mã hóa &, ? và = bên trong địa chỉ trang.

Làm thế nào để xem HTTP status của một lỗi?

Thêm -w '\n%{http_code}\n' để in nó sau body, hoặc -i để xem tất cả headers. Trường error.code trong body là giá trị ổn định để kiểm tra trong script.

Một lệnh gọi thất bại có bị tính phí không?

Không. 1 credit = đọc 1 trang không cần trình duyệt; 2 credit khi trang cần trình duyệt để render JavaScript. Yêu cầu thất bại, hoặc bị robots.txt của trang web từ chối, không bị tính phí.

Từ 0,07 US$/1K trang · không cần KYC

Lấy khóa API