# ページ本文を持ち帰る、AIエージェント向けWeb検索ツール

> AIエージェントに、ランキングされた検索結果と、先頭ページをMarkdownで読み取った本文を返すWeb検索ツールを提供します。ツールスキーマ、検索の予算、コスト。KYC不要、暗号資産で支払い。

- URL: https://llmwebsearch.com/ja/use-cases/ai-agents/
- 最終更新: 2026-10-22
- 発行者: LLMWebSearch (https://llmwebsearch.com)

検索はできても読み取れないエージェントは、スニペットから推測するしかありません。検索と読み取りを1つでこなすツールを渡しましょう。ライブのWebを検索し、先頭ページを整形されたMarkdownで番号付きにして返すので、モデルが引用できます。

**クイック回答 — AIエージェントに、ページ本文を返すWeb検索ツールを渡すには？**

Web検索APIを、検索クエリを受け取ってページ本文付きの番号付きソースを返すツールとしてラップします。**LLMWebSearch**はこれを1回の呼び出しで行います。ライブ検索によるランキング結果と、先頭3ページをMarkdownで読み取った本文を、1クレジットで返します。価格は5,000検索で$9.25から始まり、$1.20/1K検索まで下がります。KYC不要。暗号資産で支払い。

## エージェントツールとしてのLLMWebSearch

| 属性 | 値 |
| --- | --- |
| ツール | `POST https://llmwebsearch.com/api/v1/search`を呼び出す`web_search(query, recent)` |
| 戻り値 | 最大20件のランキング結果。先頭3件はページ本文をMarkdownで付属 |
| 長さの制御 | 1ページあたり`max_chars`、ページ数は`read`、リストは`max_results` |
| コスト | 1クレジットで検索1回分です。最大20件のランク付けされた結果を取得でき、上位3ページは本文抽出されてMarkdownで返されます。4〜10ページを読む場合は2クレジットです。エラーで終わった呼び出しは無料です |
| フィルター | 結果の国と言語、期間（過去1日、1週間、1か月、1年）、Webまたはニュースの結果、含める／除外するドメインを選択できます |
| すぐに使える連携 | [MCPサーバー](https://llmwebsearch.com/ja/docs/mcp/)、[OpenAI function calling](https://llmwebsearch.com/ja/docs/openai/)、[LangChainとLlamaIndex](https://llmwebsearch.com/ja/docs/langchain/)、[n8n](https://llmwebsearch.com/ja/docs/n8n/)、[OpenClaw](https://llmwebsearch.com/ja/docs/openclaw/) |

## エージェントがスニペットだけでなくページ本文を必要とするのはなぜですか？

なぜなら、答えがスニペットに載っていることはほとんどないからです。検索結果ページには、検索エンジンが選んだタイトルと1〜2行が表示されるだけです。ユーザーが尋ねた数値、日付、ルールは、ページのさらに下の方にあります。

スニペットしか見えないエージェントには、2つの悪い選択肢しかありません。断片的な情報から答えて誤るリスクを取るか、各ページを取得するために2つ目のツールを呼び出すかです。後者は往復回数とツール定義を倍にします。

LLMWebSearchなら、最初のページはすでに読み込まれた状態で届きます。ナビゲーション、広告、Cookieバナーは除去されるので、モデルはトークンをコンテンツに使えます。残りの結果にはスニペットも付いており、モデルが再検索すべきかを判断する助けになります。

## 検索ツールはどう定義すればよいですか？

スキーマは小さく保ちましょう。必須の`query`が1つと、多くてもスイッチを1〜2個です。モデルはシンプルなツールのほうをより確実に呼び出します。以下の例では、`time_range=month`にマップする`recent`フラグを公開しており、それ以外はすべてコード内で固定されています。

関数はJSONではなくプレーンテキストを返します。各ソースは番号、タイトル、URLで始まり、その後にMarkdownが続きます。このレイアウトにより、[2]のような引用がモデルにとって自然になります。

エージェントにすでに`web_search`という名前のツールが含まれている場合（Claude CodeやOpenClawがそうであるように）、自分のツールには`search_web`など別の名前を付けてください。同じ名前のツールが2つあるとモデルが混乱します。

*Python：OpenAI形式のfunction calling向けweb_searchツール*

```python
import json
import os

import requests

API = "https://llmwebsearch.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}

# Tool definition in the OpenAI function-calling format; most agent frameworks accept the same JSON schema.
WEB_SEARCH_TOOL = {
    "type": "function",
    "function": {
        "name": "web_search",
        "description": "Search the live web. Returns numbered sources; the first ones include the page text in Markdown.",
        "parameters": {
            "type": "object",
            "properties": {
                "query": {"type": "string", "description": "A short search query, 3 to 8 words"},
                "recent": {"type": "boolean", "description": "True to keep only results from the past month"},
            },
            "required": ["query"],
        },
    },
}


def web_search(query, recent=False, read=3, max_chars=4000):
    """Run one search (1 credit with read <= 3) and return compact text the model can cite."""
    body = {"q": query, "max_results": 5, "read": read, "max_chars": max_chars}
    if recent:
        body["time_range"] = "month"
    resp = requests.post(API, headers=HEADERS, json=body, timeout=60)
    resp.raise_for_status()
    lines = []
    for r in resp.json()["results"]:
        lines.append(f"[{r['position']}] {r['title']} — {r['url']}")
        if r.get("content_status") == "ok":
            lines.append(r["content"])
        else:
            lines.append(r.get("snippet", ""))
        lines.append("")
    return "\n".join(lines)


def run_tool_call(call):
    """Execute a tool call returned by the model and give back the text for the tool message."""
    args = json.loads(call["function"]["arguments"])
    return web_search(args["query"], recent=args.get("recent", False))
```

## エージェントはいつ検索すべきで、どのくらいの頻度で検索すべきですか？

答えが変化する事実やモデルが知り得ない事実に依存する場合に検索します。価格、バージョン、法律、スケジュール、最近の出来事が該当します。定義や安定した知識は通常、該当しません。

このルールをシステムプロンプトに書き、予算も加えましょう。次の3つの習慣が役立ちます：

- **検索前に計画する。** まずモデルに検索クエリを書かせましょう。 preciseなクエリ2つは、曖昧なクエリ5つに勝ります。
- **呼び出し回数に上限を設ける。** たとえばユーザーの1ターンあたり検索4回まで許可します。上限を上げるのは調査タスクのみです。
- **ソースが一致したら止める。** 独立した3つのページが同じことを述べていれば、エージェントは回答できます。

## コンテキストウィンドウを制御するにはどうすればよいですか？

3つのパラメータが、モデルに届くテキスト量を決めます。`read`は読み込むページ数を0〜10で設定します。`max_chars`は各ページを500〜50,000文字で上限設定します。`max_results`は一覧表示する結果数を1〜20で設定します。

チャットエージェントの場合、`read=3`と`max_chars=4000`で1回の検索あたり約12,000文字のページ本文が返ります。これにより1つの会話で複数回の検索を行う余裕が生まれます。進めながら要約する調査ジョブでは、より長いページでも問題ありません。

`word_count`フィールドは、切り詰める前の完全なページがどれだけの長さだったかを示します。エージェントはこれを使って、[extractエンドポイント](https://llmwebsearch.com/ja/docs/extract/)でさらに取得すべきかを判断できます。

## ページを読み込めない場合はどうなりますか？

結果はタイトル、URL、スニペット付きで返りますが、本文は含まれません。`content_status`フィールドが理由を示します。

- `blocked_by_robots`：そのサイトのrobots.txtが当社のリーダーを許可していません。
- `blocked_by_site_policy`：robots.txtにContent-Signal: ai-input=noを設定しているサイトは、そのページのコンテンツが結果に含まれません。
- `target_refused`：サイトが拒否応答を返しました。そのステータスは`target_status`にあります。
- `fetch_failed`または`fetch_timeout`：ページが時間内に読み込まれませんでした。

サイトが当社のリーダーを拒否した場合、結果はコンテンツなしで、サイトのステータスとともに返されます。当社がCAPTCHAを解いたり、アカウントにサインインしたり、ブロックやペイウォールを回避したりすることは一切ありません。ページが空で返ってきた場合は、スニペットまたは別のソースを使うようエージェントに指示してください。各ページで何が起きたとしても、検索自体は1クレジットです。

## モデルに組み込まれた検索ツールを使わないのはなぜですか？

組み込みツールは便利ですが、制御の余地が少なくなります。2026年10月22日時点で、OpenAIの`web_search`ツールは1,000回あたり$10に加え、検索コンテンツが入力トークンとして課金されます。AnthropicのClaude web searchも1,000回の検索あたり$10に加えてトークンコストがかかります。Gemini 3 groundingは有料プランで月5,000回の検索が無料で、その後は1,000回あたり$14です。

これらのツールは主に、引用付きの文章による回答を返すもので、生のページは返しません。また、検索が1つのモデルベンダーに縛られます。スタンドアロンのツールはどのモデルでも動作し、各ページの長さを設定できます。[組み込みツールの比較](https://llmwebsearch.com/ja/compare/built-in-web-search-tools/)には完全な表があります。

## LLMWebSearchでエージェントを運用するコストはいくらですか？

`read`が3以下の場合、検索1回につき1クレジットです。チームで使うアシスタントが1日100問にそれぞれ4回の検索で答えると、月に約12,000回の検索になります。$41.25の25,000検索でその月と翌月の大半をまかなえます。

1人の開発者が使うコーディングエージェントは1日20回、つまり月に約600回検索するかもしれません。クレジットは期限切れにならないため、$9.25の5,000検索は数か月持ちます。[コストガイド](https://llmwebsearch.com/ja/guides/ai-agent-web-search-cost/)には、より大規模なワークロードの計算が示されています。

## エージェントにはどのパックが適していますか？

5,000検索でプロトタイプを作り、エージェントが日常的に使われるようになったら25,000検索または100,000検索に移行しましょう。

| プラン | 数量 | 価格 | 単価 |
| --- | --- | --- | --- |
| 試す | 5,000検索 | $9.25 | $1.85/1K検索 |
| 開発者 | 25,000検索 | $41.25 | $1.65/1K検索 |
| Production | 100,000検索 | $145 | $1.45/1K検索 |

全プラン共通: 上位3ページをMarkdownとして読み取り · 国、言語、時間、ドメインのフィルター · 失敗した呼び出しは課金なし · クレジットの有効期限なし

**お支払いの前に**

- 最低チャージ額$25。 暗号資産で一度チャージすれば、残高から任意のプランを購入できます。
- 残高は有効期限がなく、いつでも検索クレジットの購入に使えます。パックの価格が最低入金額を下回る場合、その最低入金額に達するためだけに支払った分は、お支払いから30日以内にご請求いただければ、未使用であることを条件にUSDTまたはUSDCで返金されます。残高のその他の部分は、法律で求められる場合を除き返金されません.
- お支払いがブロックチェーン上で確認され次第、残高に反映されます。 ネットワーク承認の目安時間: BTC 約20分 · USDT TRC-20 約1分 · USDT ERC-20 約5分 · USDC ERC-20 約5分 · ETH 約5分 · SOL 約1分 · LTC 約15分

## AIエージェント：よくある質問

### LLMWebSearchをClaude Desktop、Cursor、Claude Codeに追加できますか？

はい。検索をツールとして公開する小さなMCPサーバーを通じて可能です。[MCPページ](https://llmwebsearch.com/ja/docs/mcp/)にコードとクライアント設定があります。

### このツールはOpenAI以外のモデルでも動作しますか？

はい。上記のスキーマはプレーンなJSON Schemaであり、Anthropic、Google、Mistral、オープンソースのフレームワークが小さな変更で受け入れます。このツールは当社のHTTPSエンドポイントを呼び出すだけです。

### エージェントが検索しすぎるのを止めるにはどうすればよいですか？

ツールラッパーで呼び出し回数を数え、予算を使い切ったら短いメッセージを返します。予算はシステムプロンプトにも書いておき、モデルがそれを計画に組み込めるようにしましょう。

### ページの本文がエージェントに指示を与えることはありますか？

その可能性はあります。ページ本文はデータとして扱いましょう。ソース内に見つかった指示を無視するようシステムプロンプトでモデルに伝え、ソースが単独でアクションをトリガーしないようにしてください。

## 出典

1. [APIの料金（web searchツール）](https://developers.openai.com/api/docs/pricing) — OpenAI (read 2026-10-22)
2. [料金（web searchツール）](https://platform.claude.com/docs/en/about-claude/pricing) — Anthropic (read 2026-10-22)
3. [Gemini Developer APIの価格](https://ai.google.dev/gemini-api/docs/pricing) — Google (read 2026-10-22)

---

LLMWebSearch: LLMWebSearchは、AIエージェント向けのWeb検索APIです。ランキング済みの検索結果を、上位ページの本文をMarkdownに変換した内容とともに返し、暗号資産で支払えます。本人確認書類のアップロードは不要です。プリペイドのクレジットは$1.20/1K検索から購入でき、有効期限はありません。KYC不要 — 身分証も自撮りも書類も不要。暗号資産で支払い。
