테스트
10,000페이지
US$3.75
US$0.38/1K 페이지
- 실제 URL로 사용해 보기
- 가장 큰 팩과 동일한 API
- 크레딧은 만료되지 않음
활용 사례 · 검색 증강 생성(retrieval-augmented generation)
검색은 색인에 넣은 것에 따라 결과가 달라집니다. 제목, 메타데이터, 출처 URL이 붙은 깔끔한 Markdown은 더 좋은 청크를 만들고, 토큰 낭비를 줄이며, 출처 페이지를 인용할 수 있는 답변을 줍니다.
빠른 답변
웹페이지를 RAG 파이프라인에 어떻게 넣나요?
각 페이지를 본문 Markdown으로 읽고, 제목 기준으로 나누고, 모든 청크에 출처 URL과 제목을 붙인 뒤 임베딩해서 저장하세요. WebReaderAPI이 읽기 작업을 처리합니다. 페이지마다 요청 하나, 또는 최대 10,000페이지짜리 사이트 전체를 크롤링 작업 하나로 처리하며, 2026년 10월 기준 US$0.07/1K 페이지부터 페이지당 1크레딧입니다. robots.txt를 준수합니다. KYC 없이, 암호화폐로 결제하세요.
| 사이트 전체 | POST https://webreaderapi.com/api/v1/crawl: 작업당 웹사이트 하나를 크롤링하며, 최대 10,000페이지까지 사이트맵, robots.txt 및 Crawl-delay를 따릅니다 |
|---|---|
| URL 목록 | POST https://webreaderapi.com/api/v1/batch: 배치 작업당 최대 100개의 URL |
| 페이지당 | 본문 Markdown, 제목, 작성자, 날짜, 언어, 단어 수 |
| 최대 20 MB, 100페이지까지의 PDF 파일이 Markdown으로 변환되며, 시작된 10페이지 블록당 1 크레딧입니다 | |
| 과금 | 1 크레딧 = 브라우저 없이 페이지 1회 읽기, 페이지가 JavaScript를 렌더링하는 데 브라우저가 필요하면 2 크레딧. 실패한 요청이나 사이트의 robots.txt가 거부한 요청은 과금되지 않습니다 |
| 가격 | 50,000페이지에 US$14.25; 크레딧은 만료되지 않습니다 |
보일러플레이트로 만든 청크는 검색이 잘 안 됩니다. 페이지를 나눌 때 메뉴, 쿠키 문구, 푸터가 그대로 남아 있으면 많은 청크가 똑같은 내비게이션 단어를 담게 되고, 벡터 검색은 관련 없는 질문에도 이런 청크를 돌려줍니다. 본문 추출은 임베딩하기 전에 그 노이즈를 걷어냅니다.
제목도 똑같이 중요합니다. ## Refund policy으로 시작하는 청크는 주제를 함께 지니고 있어서, 임베딩할 때와 나중에 읽는 모델 모두 이 청크가 무엇에 관한 것인지 알 수 있습니다. 순수 텍스트는 이 신호를 잃고, 원본 HTML은 마크업에 가려 숨깁니다.
어떤 벡터 스토어를 쓰든 다섯 단계입니다:
main_content=true을 유지하고, 목록 페이지에는 false을 사용합니다.#, ##, ###를 기준으로 나누고, 긴 섹션은 크기 제한에 맞게 약간의 오버랩을 두고 자릅니다.url, title, published_at과 헤딩 경로를 저장해, 답변이 출처를 인용할 수 있게 합니다.lastmod이 바뀐 페이지만 다시 읽고, 이제 에러를 반환하는 페이지의 청크는 삭제합니다.import os
import re
import requests
API = "https://webreaderapi.com/api/v1/read"
HEADERS = {"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]}
URLS = [
"https://docs.example.com/getting-started",
"https://docs.example.com/billing",
]
def chunks_for(url, max_len=2000):
page = requests.get(API, headers=HEADERS, params={"url": url}, timeout=90).json()
if "markdown" not in page:
return []
out = []
for section in re.split(r"\n(?=#{1,3} )", page["markdown"]):
section = section.strip()
heading = section.splitlines()[0] if section else ""
for start in range(0, len(section), max_len):
out.append({
"text": section[start:start + max_len],
"url": page.get("final_url", url),
"title": page.get("title"),
"heading": heading,
})
return out
all_chunks = [c for u in URLS for c in chunks_for(u)]
print(len(all_chunks), "chunks ready to embed")
구축은 페이지당 1크레딧, 브라우저가 필요한 페이지는 2크레딧입니다. 새로고침은 다시 읽는 페이지만 과금됩니다. 2026년 10월 가격 기준 세 가지 예시입니다:
임베딩과 스토리지는 사용하시는 자체 제공업체에서 과금되며 포함되지 않습니다.
WebReaderAPI으로는 불가능합니다. robots.txt에서 우리 크롤러 또는 모든 로봇에 대해 금지된 페이지는 건너뛰며 과금되지 않습니다. Content-Signal: ai-input=no을 선언한 사이트는 읽어드리지 않습니다. 로봇을 차단하는 자체 사이트나 파트너 사이트의 경우, 소유자에게 robots.txt에서 WebReaderAPI을 허용해 달라고 요청하세요. 크롤러 페이지에 추가할 줄이 나와 있습니다.
이 점은 사용자에게도 중요합니다. 출처를 인용하는 RAG 어시스턴트는 그 출처가 읽히는 데 동의했을 때 더 유용합니다.
인덱스 구축에 필요한 페이지 수를 세고, 월별 새로고침을 더한 뒤, 몇 달치를 커버하는 팩을 고르세요. 크레딧은 만료되지 않습니다.
10,000페이지
US$3.75
US$0.38/1K 페이지
50,000페이지
US$14.25
US$0.28/1K 페이지
100,000페이지
US$21.75
US$0.22/1K 페이지
500,000페이지
US$50
US$0.10/1K 페이지
모든 플랜에 포함: 본문 추출 · 필요 시 JavaScript 렌더링 · 실패 및 거부된 페이지는 과금되지 않음 · 크레딧은 만료되지 않음
먼저 헤딩 기준으로 나누고, 약 500~1,000 토큰보다 긴 섹션은 약간의 오버랩을 두고 자르세요. 헤딩 기반 청크는 주제 하나씩을 담아서, 보통 페이지 전체를 고정 크기로 나눈 것보다 검색 품질이 좋습니다.
아니요. WebReaderAPI은 페이지를 읽고 메타데이터가 포함된 Markdown을 반환합니다. 임베딩은 원하는 모델로 직접 하고, 자체 벡터 데이터베이스에 저장하세요. LangChain 및 LlamaIndex 페이지에서 두 가지 방법을 모두 보여줍니다.
변경된 페이지만 다시 읽으세요. 대부분의 sitemap은 URL마다 lastmod 날짜를 담고 있으니, 마지막으로 읽은 날짜와 비교해서 변경된 URL을 배치로 보내세요. 이제 실패하는 페이지는 인덱스에서 제거해야 합니다.
네. 크롤링은 같은 도메인의 PDF 링크를 동일한 robots.txt 검사와 함께 읽습니다. 최대 20 MB, 100페이지까지의 PDF 파일이 Markdown으로 변환되며, 시작된 10페이지 블록당 1 크레딧입니다.
US$0.07/1K 페이지부터 · KYC 없이
API 키 발급받기