Hermes エージェントにはモデルが呼び出し可能な2つの Web ツールが含まれています: 1) web_search — Web を検索し、ランキング付けされた結果を返します。2) web_extract — 1つまたはそれ以上の URL から読み取り可能なコンテンツを取得して抽出します。
Hermes エージェント☤ 入門 : 機能 – メディア & Web : Web 検索 & 抽出
作成 : Masashi Okumura (@classcat.com)
作成日時 : 09/11/2026
バージョン : Hermes Agent v0.21.1 (v2026.9.7)
* 本記事は hermes-agent.nousresearch.com/docs の以下のページを参考にしています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。

Hermes エージェント☤ 入門 : 機能 – メディア & Web : Web 検索 & 抽出
Hermes エージェントには、複数のプロバイダーによって支援される、モデルが呼び出し可能な2つの Web ツールが含まれています :
- web_search — Web を検索し、ランキング付けされた結果を返します。
- web_extract — 1つまたはそれ以上の URL から読み取り可能なコンテンツを取得して抽出します。
どちらも単一のバックエンド選択によって設定されます。プロバイダーは `hermes tools` で選択するか、config.yamlで直接設定します。
バックエンド
| プロバイダー | 環境変数 | 検索 | 抽出 | 無料枠 |
|---|---|---|---|---|
| Firecrawl (デフォルト) | FIRECRAWL_API_KEY (オプション — 選択時はキーレス) | ✔ | ✔ | 500クレジット/月(選択時はキーレスクラウド対応) |
| SearXNG | SEARXNG_URL | ✔ | – | Free (self-hosted) |
| Brave Search (無料枠) | BRAVE_SEARCH_API_KEY | ✔ | – | 2 000 クエリー/月 |
| DDGS (DuckDuckGo) | — (no key) | ✔ | – | 無料 |
| Exa | EXA_API_KEY (オプション) | ✔ | ✔ | ✔ キーレス ring メンバー・1000 検索/月 with キー |
| Parallel | PARALLEL_API_KEY (オプション) | ✔ | ✔ | ✔ キーレス ring メンバー・キーによる有料利用 |
| Tavily | TAVILY_API_KEY (オプション) | ✔ | ✔ | ✔ 選択時オプトイン・キーレス |
| Perplexity | PERPLEXITY_API_KEY | ✔ | ✔ (query-relevant snippets) | 有料 (リクエスト毎の検索API料金) |
| Keenable | KEENABLE_API_KEY (オプション) | ✔ | ✔ | ✔ キーレス ring メンバー・キーによる有料利用 |
| xAI (Grok) | XAI_API_KEY or `hermes auth add xai-oauth` | ✔ | – | 有料 (SuperGrok or トークン単位) |
Brave Search、DDGS、xAIは 検索専用 ツールです – web_extract も必要な場合は、Firecrawl/Tavily/Perplexity/Keenable/Exa/Parallel のいずれかと組み合わせて使用してください。DDGS は内部で ddgs Python パッケージを使用しています; まだインストールされていない場合は、`pip install ddgs` を実行してください (または、Hermes が初回使用時に遅延インストールします)。xAI は Responses API 上で Grok のサーバーサイド web_search ツールを実行します – 結果はインデックスベースではなく LLM によって生成されるため、タイトル、説明、URL の選択はすべてモデルの出力となります (see the trust-model caveat below)。
web_extract が長文ページを処理する方法
バックエンドは未加工のページ・マークダウンを返しますが、これは非常に大きくなる可能性があります (フォーラムのスレッド、ドキュメントサイト、コメントが埋め込まれたニュース記事)。コンテキストウィンドウを使いやすくするために、web_extract は決定論的な文字数制限 (deterministic character budget) を設けています – LLM による要約は行われません :
- (ページサイズ (文字数) – 何が起きるか)
- バジェット内 or バジェット以下 (デフォルト 15,000) – そのまま返します – マークダウン全体がエージェントに到達します
- バジェット超過 – 先頭 (head) と末尾 (tail) のウィンドウ (先頭約75% / 末尾約25%、マークダウン行境界でカット) に加えて、明示的な [TRUNCATED] フッター。完全なクリーンテキストはディスクに保存され、フッターはエージェントにファイルパスと、省略された中間部分をページングするための正確な read_file 呼び出しを知らせます。
- 2,000,000 超過 – 保存できるテキストのサイズは 2MB に制限されています。
ページごとの文字数制限 (budget) は、config.yaml の web.extract_char_limit で設定可能 (デフォルトは 15000、2,000~500,000 に制限) で、エージェントはツールの char_limit 引数を使用して呼び出しごとに制限を増やすことができます。
結果のキャッシュ処理
短時間内に繰り返し発生する Web 呼び出しは、有料バックエンドではなくキャッシュから処理されます – これにより、重複処理が一般的である2つのパターン: サブエージェントのファンアウト(複数の委任エージェントが同じトピックを調査する場合)と、エージェントが数分前に読み込んだページを再確認する場合において、クレジットとレイテンシを削減できます。
- (呼び出し – キャッシュ – スコープ)
- web_search: 同じクエリ (大文字小文字/空白文字を区別しない)、同じプロバイダー – インメモリのメモ – プロセス毎
- web_extract: 同じURL、同じフォーマット、同じプロバイダー – ~/.hermes/cache/web/ 下に保存される完全なテキスト – CLI、ゲートウェイ、cron、およびサブエージェントプロセス間で共有されます。
同時実行される同一検索(並列サブエージェントが同時に同じクエリを実行する場合)は、単一のバックエンドリクエストに統合されます – 最初の呼び出し元が料金を支払います; 残りの呼び出し元はレスポンスを共有します。リクエストされた検索制限は10/20/50/100にバケット化されるため、ほぼ同じリクエスト(limit=5 vs limit=8)は1つのエントリを共有し、各呼び出し元はリクエストした件数を受け取ります。
キャッシュされるのは、成功した応答のみです。失敗した場合は必ずバックエンドを再試行し、ワンショットのキーレス・レスキューによって提供される応答はキャッシュされません (次の呼び出しで選択したバックエンドを再度試行します)、そして security.website_blocklist に一致する URL はキャッシュから決して提供されません。キャッシュされた抽出では通常の切り捨てパイプラインが再実行されるため、2回目の呼び出しで異なる char_limit を指定しても、同じ保存済みのスクレイピングデータが使用されます。
パブリック・インターネット上でテストしていますか? ステージング配備とトンネル URL はパブリック DNS なので、local-dev ルールでは捕捉できません – web.cache_exempt_hosts にリストアップすれば、ライブでも常に取得されます。エントリは完全に一致するか、*.ワイルドカードとして、またはドメインサフィックスとして一致します (mysite.dev はまた preview.mysite.dev もカバーします) :
# ~/.hermes/config.yaml
web:
cache_exempt_hosts:
- mysite.vercel.app
- "*.ngrok-free.app"
# ~/.hermes/config.yaml
web:
cache_enabled: true # default; set false to disable both caches
cache_ttl_minutes: 20 # freshness window, clamped 1–1440
セットアップ
`hermes tools` を使ったクイックセットアップ
`hermes tools` を実行し、Web Search & Scraping に移動してプロバイダーを選択します。ウィザードが必須の URL や API キーの入力を求め、config ファイルに書き込みます。
hermes tools
Firecrawl (デフォルト)
フル機能の検索と抽出機能。ほとんどのユーザーにおすすめです。
# ~/.hermes/.env
FIRECRAWL_API_KEY=fc-your-key-here
Get a key at firecrawl.dev. The free tier includes 500 credits/month.
Tavily
AI 最適化された検索・抽出です。`hermes tools` で Tavily を選択して (または `web.backend: tavily` を設定)、アカウント不要でキーレスで利用できます (レート制限あり)。より高い制限が必要な場合は、APIキーを設定してください。
# optional — skip this for keyless access after selecting Tavily
# ~/.hermes/.env
TAVILY_API_KEY=tvly-your-key-here
Get a key at app.tavily.com. See Tavily keyless.
Perplexity
Perplexity の検索APIは、Perplexity 独自のインデックスから、ランク付けされた日付付き検索結果を返します(web_search)。web_extractでは、公式の pplx CLI と同じクエリ関連スニペットの方法を使用します: ページ全体をそのままダンプするのではなく、各ページから重要な箇所を、省略記号(…)付きで取得できます – ページ全体が必要な場合は、web.extract_backend としてFirecrawl / Exa / Parallelを選択してください。キー指定のみです; 匿名枠はありません。
# ~/.hermes/.env
PERPLEXITY_API_KEY=pplx-your-key-here
Get a key at perplexity.ai/account/api. Set PERPLEXITY_BASE_URL to route through a proxy.
設定
単一バックエンド
すべての Web 機能に1つのプロバイダーを設定します :
# ~/.hermes/config.yaml
web:
backend: "searxng" # firecrawl | searxng | brave-free | ddgs | tavily | perplexity | keenable | exa | parallel | xai
機能ごとの設定
検索 vs 抽出に異なるプロバイダーを使用します。これにより、無料の検索(SearXNG)と有料の抽出プロバイダーを組み合わせたり、その逆も可能です :
# ~/.hermes/config.yaml
web:
search_backend: "searxng" # used by web_search
extract_backend: "firecrawl" # used by web_extract
機能ごとのキーが空の場合、両方とも web.backend にフォールバックします。Web 選択が一度も書き込まれたことがない場合にのみ、存在する API キー/URL からバックエンドが自動的に検出されます – 選択が存在する場合は、ランタイムは常にそれを使用し、.env にキーを追加しても Web トラフィックはリダイレクトされません。
優先順位 (機能毎)
- web.search_backend / web.extract_backend(機能ごとに明示)
- web.backend (共有フォールバック; nous = マネージド・ツール・ゲートウェイ)
- 環境変数からの自動検出 (未設定環境のみ)
以上