# curl과 jq로 웹페이지를 Markdown으로 변환

> curl과 jq로 터미널에서 웹페이지를 Markdown으로 변환하세요: 페이지 저장, 링크 목록 조회, 배치 실행, 크레딧 확인. US$0.07/1K 페이지에서 KYC 없이 시작합니다.

- URL: https://webreaderapi.com/ko/docs/curl/
- 마지막 업데이트: 2026-10-22
- 발행자: WebReaderAPI (https://webreaderapi.com)

API가 하는 모든 일은 셸 한 줄로 처리할 수 있습니다. 이 레시피는 curl로 API를 호출하고 jq로 JSON에서 필드를 추출하며, 마지막에 Windows용 PowerShell 버전이 있습니다.

**빠른 답변 — 명령줄에서 웹페이지를 Markdown으로 변환하려면 어떻게 하나요?**

`Authorization: Bearer` 헤더에 키를 넣고 `curl -sG https://webreaderapi.com/api/v1/read --data-urlencode "url=…"`을 실행한 다음, 응답을 `jq -r .markdown`로 파이프하세요. **WebReaderAPI**은 페이지의 본문 추출 결과를 메타데이터와 함께 Markdown으로 반환합니다. 일반 페이지 하나에 1 크레딧이 들며, 2026년 10월 기준 US$0.07/1K 페이지부터 이용할 수 있습니다. KYC 없이 암호화폐로 결제하세요.

## 터미널은 어떻게 설정하나요?

대부분의 Linux와 macOS 시스템에 이미 설치되어 있는 curl과 jq를 설치하고, 세션마다 한 번씩 키를 export하세요. 아래의 모든 레시피는 `$WEBREADER_API_KEY`에서 키를 읽으므로, 키가 명령의 일부로 셸 히스토리에 남는 일은 없습니다.

GET 요청에는 `-G`과 함께 `--data-urlencode`를 사용하세요: 그러면 curl이 페이지 주소를 대신 인코딩해 주는데, 주소 자체에 `?`, `&`, `=`가 들어 있기 때문에 이 점이 중요합니다.

*키를 설정하고 한 페이지를 .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
```

## 호출이 무엇을 반환했고 얼마가 들었는지 어떻게 보나요?

콘텐츠 대신 jq로 메타데이터를 요청하세요. `final_url`는 리다이렉트가 어디로 이어졌는지 보여 주고, `rendered`는 브라우저가 사용되었는지 알려 주며, `credits_used`는 호출에 든 비용입니다. 응답이 오류라면 같은 필터가 `null` 필드를 출력합니다. 코드와 메시지를 읽으려면 `.error`를 출력하세요.

*메타데이터만, 또는 오류가 있으면 오류만*

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

## 페이지의 링크를 어떻게 나열하나요?

`include_links=true`를 추가하고 `links` 목록을 탭으로 구분된 줄로 바꾸세요. 그러면 페이지의 외부 링크를 한눈에 볼 수 있어, 정렬하거나 grep으로 필터링하거나 배치 작업에 넘길 수 있습니다.

*링크를 텍스트와 URL로, 한 줄에 하나씩*

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

## JavaScript 페이지나 PDF는 어떻게 읽나요?

JavaScript로 콘텐츠를 만드는 페이지에는 `-d render=true`를 추가하세요. 그러면 2 크레딧이 듭니다. PDF는 특별히 할 일이 없습니다: URL을 보내면 텍스트가 `markdown`로 돌아옵니다. 최대 20 MB, 100페이지까지의 PDF 파일이 Markdown으로 변환되며, 시작된 10페이지 블록당 1 크레딧입니다.

*렌더링된 페이지, 그다음 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
```

## 셸에서 배치 작업을 어떻게 실행하나요?

URL이 담긴 JSON 본문을 `/batch`에 POST하고 `job_id`를 저장한 다음, 작업을 읽으세요. 작은 루프가 작업이 `done`이 될 때까지 기다렸다가 각 페이지의 제목이나 오류 코드를 출력합니다. 오래 걸리는 작업이라면 [배치 및 크롤링 페이지](https://webreaderapi.com/ko/docs/crawl/)에 나온 대로 `next_cursor`를 따르세요.

*URL 세 개 배치, 그다음 결과 대기*

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

## 크레딧은 어떻게 확인하나요?

`/credits`를 호출하세요. 무료입니다. `credits_remaining`, `credits_used_today`, 그리고 회원님의 `concurrency_limit`를 반환합니다. 선불 크레딧은 만료되지 않습니다. 사용하지 않은 페이지는 사용할 때까지 계정에 남아 있습니다.

*남은 크레딧*

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

## Windows의 PowerShell 버전은 무엇인가요?

`Invoke-RestMethod`가 JSON을 대신 파싱하므로 jq가 필요 없습니다. `[uri]::EscapeDataString`로 쿼리를 만들어 페이지 주소를 인코딩하고, 키는 headers 테이블로 전달하세요.

*PowerShell: 한 페이지 저장*

```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: 자주 묻는 질문

### &가 들어간 URL이 실패하는 이유는 무엇인가요?

셸이나 curl이 주소를 쪼개기 때문입니다. `url=…` 인자 전체를 따옴표로 감싸고 위 레시피들처럼 `--data-urlencode`과 함께 전달하세요. 그러면 curl이 페이지 주소 안의 `&`, `?`, `=`를 인코딩합니다.

### 오류의 HTTP 상태를 어떻게 보나요?

`-w '\n%{http_code}\n'`를 추가하면 본문 뒤에 출력되고, `-i`를 추가하면 모든 헤더를 볼 수 있습니다. 본문의 `error.code`는 스크립트에서 검사하기에 안정적인 값입니다.

### 실패한 호출에도 요금이 청구되나요?

아니요. 1 크레딧 = 브라우저 없이 페이지 1회 읽기, 페이지가 JavaScript를 렌더링하는 데 브라우저가 필요하면 2 크레딧. 실패한 요청이나 사이트의 robots.txt가 거부한 요청은 과금되지 않습니다.

---

WebReaderAPI: WebReaderAPI는 AI 에이전트를 위한 웹 리더 API로, 모든 공개 웹페이지를 깔끔한 Markdown으로 변환하며 신분증 업로드 없이 암호화폐로 결제합니다. US$0.07/1K 페이지부터 시작하는 선불 크레딧은 만료되지 않으며, robots.txt를 준수합니다. KYC 없음 — 신분증도, 셀피도, 서류도 없습니다. 암호화폐로 결제하세요.
