テスト
10,000ページ
$3.75
$0.38/1Kページ
- 実際のURLで試す
- 最大のパックと同じAPI
- クレジットの有効期限なし
ユースケース · 検索拡張生成
検索はインデックスに入れたものに基づいて機能します。見出し、メタデータ、ソースURLを備えたクリーンなMarkdownは、より良いチャンク、無駄の少ないトークン、ページを引用できる回答をもたらします。
概要
WebページをRAGパイプラインに取り込むにはどうすればよいですか?
各ページをメインコンテンツのMarkdownとして読み取り、見出しに沿って分割し、すべてのチャンクにソースURLとタイトルを付与してから、埋め込みを行い保存します。WebReaderAPIが読み取りを担当します:ページごとに1リクエスト、または最大10,000ページのサイト全体に対して1つのクロールジョブで、2026年10月時点で$0.07/1Kページから1ページ1クレジットです。robots.txtを尊重します。KYC不要、暗号資産で支払い。
| サイト全体 | POST https://webreaderapi.com/api/v1/crawl:1ジョブにつき1つのWebサイトを、最大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ページあたり$14.25、クレジットは失効しません |
ボイラープレートで構成されたチャンクは検索精度が低下します。メニュー、Cookieのテキスト、フッターが残ったままページを分割すると、多くのチャンクに同じナビゲーション用の単語が含まれ、無関係な質問に対してもベクトル検索がそれらを返してしまいます。メインコンテンツの抽出は、埋め込み前にそのノイズを取り除きます。
見出しも同じくらい重要です。## Refund policyで始まるチャンクはトピックを引き継ぐため、埋め込みと後で読むモデルの両方がその内容を把握できます。プレーンテキストはそのシグナルを失い、生のHTMLはマークアップの下に隠してしまいます。
ベクターストアが何であっても、手順は5つです:
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ページにつき1クレジット、ブラウザが必要なページは2クレジットです。更新は再読み取りしたページ分だけかかります。2026年10月時点の価格で3つの例を示します:
埋め込みとストレージはご自身のプロバイダーで課金され、含まれません。
WebReaderAPIではできません。robots.txtで当社のクローラーに対して、またはすべてのロボットに対して禁止されているページはスキップされ、課金されません。Content-Signal: ai-input=noを宣言しているサイトは読み取られません。ロボットをブロックしているご自身のサイトやパートナーサイトについては、オーナーにrobots.txtでWebReaderAPIを許可してもらってください。追加すべき行はクローラーページに記載しています。
これはユーザーにとっても重要です。ソースを引用するRAGアシスタントは、そのソースが読み取られることに同意している場合により有用になります。
インデックスを構築するページ数を数え、毎月の更新分を加え、数か月分をカバーするパックを選んでください。クレジットは失効しません。
10,000ページ
$3.75
$0.38/1Kページ
50,000ページ
$14.25
$0.28/1Kページ
100,000ページ
$21.75
$0.22/1Kページ
500,000ページ
$50
$0.10/1Kページ
すべてのプランに含まれるもの: 本文抽出 · 必要な場合はJavaScriptをレンダリング · 失敗・拒否されたページは課金なし · クレジットの有効期限なし
まず見出しで分割し、その後500〜1,000トークン程度より長いセクションは少しのオーバーラップを付けて切り詰めます。見出しベースのチャンクは1つにつき1トピックを保つため、通常はページ全体に対する固定サイズのウィンドウよりも検索精度が良くなります。
いいえ。WebReaderAPIはページを読み取り、メタデータ付きのMarkdownを返します。埋め込みは任意のモデルで行い、ご自身のベクターデータベースに保存します。LangChainとLlamaIndexのページで両方を紹介しています。
変更されたページだけを再読み取りします。ほとんどのsitemapはURLごとにlastmod日付を持っているので、最後に読み取った日付と比較し、変更されたURLをバッチで送信します。エラーになったページはインデックスから削除してください。
はい。クロールは同じドメイン上のPDFリンクを、同じrobots.txtチェックで読み取ります。20 MB・100ページまでのPDFファイルをMarkdownに変換します。10ページ単位の開始ブロックごとに1クレジットです。
$0.07/1Kページから · KYC不要
APIキーを取得