nimble-web-expert について
Nimble CLIまたはMCPを使うウェブデータ取得スキルです。検索、抽出、テンプレート、Web Search Agent、URLマップ、クロールを目的に応じて使い分け、接続確認や一括処理、結果提示の手順も示します。
主な機能
- 01目的に応じたNimble機能の振り分け
- 02検索と単一URLの抽出
- 03サイト別抽出テンプレートの再利用
- 04Web Search Agentによる調査
- 05URL発見とページの一括クロール
- 06複数入力の並列処理
活用シーン
- 01指定したウェブページから構造化データを抽出
- 02ウェブ検索で調査結果をまとめる
- 03サイトのページを発見または一括クロール
- 04複数のURLやキーワードを並列処理
MCP 対応
ウェブ検索と抽出にはNimble MCPツールまたはNimble CLIを使用できます。最初に接続を確認し、セッション中は選択した接続方式を維持します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nimbleway/ agent-skills --skill nimble-web-expertインストール後、Claude Code で/nimble-web-expertを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/batch-patterns.mderror-handling.mdrecipes.mdreferences/nimble-agents/reference.mdreferences/nimble-crawl/reference.mdreferences/nimble-extract-templates/reference.mdreferences/nimble-extract/browser-actions.mdbrowser-investigation.mdnetwork-capture.mdparsing-schema.mdreference.mdreferences/nimble-map/reference.mdreferences/nimble-search/reference.mdsearch-focus-modes.mdreferences/nimble-tasks/reference.mdrules/nimble-web-expert.mdcoutput.mdsetup.md詳細
Nimble Web Expert
Nimble CLI を使用した Web 抽出、検索、URL の発見。あらゆる Web サイトから、クリーンで構造化されたデータを返します。
ユーザーのリクエスト:$ARGUMENTS
基本原則
- まず意図に基づいて振り分けます(判断モデルの全容については、分析と振り分けを参照してください)。該当する抽出テンプレートがあり、調べる対象が具体的に決まっているサイト → テンプレートを実行します。テンプレートがないサイト、または複数ページにわたる発見や推論が必要な場合 → Web 検索エージェントを使用します。単発の単一 URL →
nimble extractを使用します。元の検索結果をそのまま扱う場合(「……についてのページ/記事を探す」)→nimble searchを使用します。統合した成果物(レポート、概要、比較、推奨事項)→ Web 検索エージェントを使用します。URL の発見/クロール →nimble mapまたはnimble crawlを使用します。 - Web 検索エージェントを実行する場合は、コマンドを組み立てる前に実行モードを選びます。 デフォルトでは、名前を指定した作成または再利用(
nimble agents run --agent-name <stable-name>)を使用し、次のセッションでも同じエージェントを使えるようにします。agents:runs createはエージェント ID を明示する場合のみ使用する方法で、--agent-idが必要です。モードの一覧、use_caseの固定、1 回限りのskill上書きについては、references/nimble-agents/reference.mdを参照してください。 - コマンドを 1 回実行 → 結果を提示 → 完了。 1 回実行したら、データをすぐに表で提示します。試行錯誤や繰り返しをしたり、出力を解析する Python を記述したりしないでください。
- 入力が複数ある場合は、必ず並列処理します。 URL/キーワード/ASIN が 2 件以上の場合 →
&とwaitを使用します。6~20 件の場合 →xargs -Pを使用します。20 件以上の場合 → Python asyncio スクリプトを使用します。references/batch-patterns.mdを参照してください。 - コンテンツが空、または途中で切れている場合は、確認せずにレンダリングの段階を上げます。 段階 1 → 2 → 3 → … と進めます。すべての段階で失敗し、調査ツールが必要になった場合にのみ、選択をユーザーに提示します。アクセス障壁は別の結果であり、段階を上げて解決するものではありません。「ガードレール」を参照してください。
- トレーニングデータに基づいて回答しないでください。 現在の価格、最新ニュース、本日の掲載情報などは、必ず Nimble から取得します。取得できない場合は、その旨を伝えます。
- 意味のある選択があるたびに AskUserQuestion を使用します。 ヘッダーは 12 文字以内、選択肢は 2~4 個、ラベルは 1~5 語とし、推奨する選択肢を最初に配置します。選択肢を番号付きの文章で提示しないでください。
- すべての出力を
.nimble/に保存します。 抽出結果をメモリ内だけに残さないでください。 - 作業を始める前に接続を確認してください。 データ取得コマンドを実行してエラーに対処する、という手順にしないでください。bash を使う場合は、
nimble --versionとNIMBLE_API_KEYで CLI の利用経路を確認します。それ以外の場合は、読み取り専用のmcp__plugin_nimble_nimble__nimble_agents_listを 1 回実行して確認します。成功すれば接続済みです。認証エラー/未接続エラー、または OAuth 認証 URL を含む応答が返った場合は未接続です。 - 動作する CLI も接続済みの MCP もない場合は、そこで停止します。 WebFetch、WebSearch、curl、または
dangerouslyDisableSandboxに切り替えないでください。プラグインはインストール済みでもコネクターが未接続(一般的な Cowork/claude.ai の状態)の場合は、rules/setup.mdに記載された接続手順をそのまま提示して停止します。プラグイン自体がない場合は、rules/setup.mdのインストール手順に従います。 - ツールがデータの代わりに OAuth の「Authorize」リンクを返した場合は、そのリンクを示されたとおりに提示して停止します。 「URL を送り返してください」/「こちらで接続を完了します」といった手順を作り出してはいけません。そのような手順はありません。また、同じターン内でツールを呼び出しながら「ツールが有効になります」と主張しないでください。ユーザーが認証するまで待ってから、再試行するか接続を再確認します。
機能
1つのスキル、1つの分類体系です。Nimble 独自の製品名を正確に使用し、言い換えないでください。
| 機能 | 内容 | コマンドファミリー |
|---|---|---|
| Search | リアルタイムのウェブ検索 — 生の結果(ページ、スニペット)、8つのフォーカスモード | nimble search |
| Extract | 既知のURLを1つ取得して解析する機能(単発処理の基本機能) | nimble extract |
| Extraction Template | 既知の項目(URLまたは識別子による)向けに再利用できる、サイト固有の構造化スクレーパー | nimble extract:templates |
| Web Search Agent | 自由形式のリサーチ/情報拡充/データセット構築 — 情報源を発見し、統合し、引用します | nimble agents / agents:runs |
| Map | サイト上に存在するURLを発見します | nimble map |
| Crawl | サイト全体で多数のページを一括取得します(1回限り、大規模) | nimble crawl |
Extraction Template と Web Search Agent は別のものです。Extraction Template は固定されたサイト固有のパーサーであり、Web Search Agent は複数の情報源にわたって推論します。Extraction Template を「WSA」や「legacy WSA」と呼ばないでください。また、名前だけを根拠にテンプレートの使用を agents に振り分けたり、その逆を行ったりしないでください。新しいテンプレート/エージェントの作成はこの範囲外です。既存のものを使用してください(新しいものを作成するには Nimble アプリを案内してください)。
インタラクティブな UX
- 意味のある選択肢があるたびに
AskUserQuestionを使ってください。推測したり、文章で質問したりしないでください。 - 曖昧なリクエスト(URLがない、トピックが漠然としている):実行前に質問してください — 「何をしますか?」 → リサーチして報告/検索/URLを取得/URLを発見
- Gate B で、effort が
high以上の Web Search Agent に到達した場合:コスト/待ち時間の分岐を提示してください — リサーチレポート/クイックスキャン(分析とルーティングを参照) - 検索を実行する前(タスクが特定のフォーカスモードに該当する場合):フォーカスモードを提示してください — 一般/ニュース/コーディング/ショッピング/学術/ソーシャル
- すべてのティアで失敗した後:調査ツール(
which browser-use、python3 -c "from playwright.sync_api...")を確認し、browser-use、Playwright を使って調査するか、スキップするかを尋ねてください。 - 結果を提示した後は、必ず「これらの結果は必要なものでしたか?」で締めくくってください →
Looks great!/Mostly good/Not quite/Skip feedback
前提条件
セッション開始時に CLI または MCP を選択してください。同じスキルで、トランスポートは2種類です。トランスポートを選択したら、セッション中はそのまま使用し、コマンドごとに再確認しないでください。
nimble --version && echo "${NIMBLE_API_KEY:+API key: set}" # CLI path
# OR (fallback when shell isn't available)
claude mcp list 2>/dev/null | grep -q "nimble" && echo "MCP: ok" # plugin MCP
- CLI の準備完了(バージョンと API キーの両方が表示される)→ ステップ 0 に進み、
nimble ...コマンドを使用してください。 - MCP 接続済み(CLI はないが、プラグインがインストールされている)→ ステップ 0 に進み、代わりに
mcp__plugin_nimble_nimble__*ツールを使用してください。 - どちらも利用不可 → 環境に応じたインストール手順に従うため、
rules/setup.mdを読み込んでください。Claude 製品(Code、Cowork、claude.ai)では/plugin install nimbleを実行してください。Codex またはその他のターミナル専用エージェントではnpm i -g @nimble-way/nimble-cliを実行してください。Cursor/VS Code/汎用 MCP クライアントでは、mcp.jsonのスニペットを貼り付けてください。
bash が拒否された場合: Cowork のようなホスト、または MCP 専用ホストです。mcp__plugin_nimble_nimble__* ツールを使用しますが、最初に読み取り専用の nimble_agents_list プローブで接続を確認してください。プローブが認証エラー/未接続エラーで失敗するか、OAuth 認証 URL を返す場合、コネクターは接続されていません。基本原則の接続手順を提示して終了してください(認証完了のフローを決して捏造しないでください)。Nimble の操作に WebFetch、WebSearch、curl、その他のツールを代用しないでください。
分析してルーティング
順番に2つのゲートを通過します。ゲート Aではデータの場所を確認し、ゲート Bではユーザーが何を求めているかを確認します。ルーティングの誤りの多くはゲート B を飛ばすことで起こります。場所を示す情報がないからといって、必ずしも検索とは限りません。
ゲート A — データの場所がわかっていますか?
| ユーザーのシグナル | ルート |
|---|---|
| 取得する単一の直接 URL | nimble extract |
| サイト名と、調べたい直接の項目(URL/ID) | ステップ 0 — まず抽出テンプレートを確認します |
| 「URL/サイトマップ/すべてのページを探す」 | nimble map |
| 「セクション全体をクロール/アーカイブする」 | nimble crawl |
| 場所を示す情報がまったくない | ゲート Bへ進みます |
| テンプレートがないサイト名 | サイトをソースの制約として引き継ぎ、ゲート Bへ進みます |
最もよくある重複ケース — 抽出テンプレートがないサイト。 生の extract ではユーザーにパース作業を押し付けることになり、テンプレートを構築するのは範囲外であるため、どちらかを選ぶように見えます。しかし、どちらも適切ではありません。ゲート B へ進むと、Web Search Agentに行き着きます。これは、あらゆるサイトに合わせてその都度設定され、管理されたテンプレートがなくても構造を推論します。これはユーザーに尋ねることではありません。適合するテンプレートがなければ、答えは毎回同じです。
ステップ 0 — 抽出テンプレートの確認(サイト名と直接の項目が指定されている場合)
テンプレートを使えば、セレクターを設定することなく、整った構造化データを取得できます。必ず最初に確認してください。
必ず声に出して伝えてください。黙って進めてはいけません。
- 確認することを伝える: 「[site] 用の Nimble 抽出テンプレートがあるか確認します……」
- 結果を報告する: 「
<template_name>が見つかりました。これを使います。」 または 「[site] 用のテンプレートがありません。代わりに Web Search Agent を使います。」
検索順序:
~/.claude/skills/nimble-web-expert/learned/examples.json→ 学習済みテンプレートnimble extract:templates list --limit 100→ クライアント側でサイト/ドメインを絞り込み、一致を確認します- 実行前にスキーマを確認します:
nimble extract:templates get --extract-template-name <name> - 一致するものがない場合 → Web Search Agent にルーティングします(上記の重複ケースのルールに従います)
nimble extract:templates run --template <name> --params '{"key": "value"}'
--params は、テンプレートの input_schema に対応する JSON/YAML マッピングです。レスポンスは、テンプレートの output_schema で定義されたレコードです(リスト/SERP 形式なら配列、詳細/PDP 形式ならオブジェクト)。データの形を確認するには、get からスキーマを読み取ってください。references/nimble-extract-templates/reference.md を参照してください。
⚠️ 情報を探す場合は、SERP 分析テンプレートではなく nimble search を使ってください。SERP テンプレートは、ランキング/SEO 分析用であり、一般的な情報取得用ではありません。
Gate B — ユーザーは何を求めていますか?
nimble search が返すのは、ざっと目を通すための生の資料です。Web Search Agent が返すのは、出典付きの完成した回答です。判断の基準はプロンプトで求められている成果物の名詞です。話題がどれほど自由形式に聞こえるかではなく、成果物に基づいて振り分けてください。
| → Web Search Agent | → nimble search |
|---|---|
| レポート、概要、分析、全体像、詳細分析、深掘り | 見つけて、検索して、調べて |
| 比較、「最適な X」、「どれを選ぶべきか」、「現状」、推奨 | 「〜についての記事/ページ」、「〜へのリンク」 |
| 情報を補完する、リストを作る、データセット、「…価格/従業員数付きで」 | 最新ニュース、最近の投稿、話題のトピック |
多数の対象に関する構造化された行データの場合は、enrichment または dataset_building を使って Web Search Agent に依頼します。references/nimble-agents/reference.md を参照してください。
回答にコストがかかる場合は、選択肢を提示する
high の Web Search Agent は完了まで数分かかり、費用も高くなります。一方、検索は数秒で完了します。これは実質的なトレードオフなので、選択肢として提示してください。ただし、Gate B の判定が Web Search Agent で、推奨される労力が high 以上の場合に限ります。 AskUserQuestion を 1 つ使い、推奨する選択肢を先に提示します。
- 調査レポート — Web Search Agent、数分、すべての主張に出典付き
- クイックスキャン —
nimble search、数秒、自分でざっと確認する生のリンク
high 未満の場合は質問せず、そのまま Web Search Agent を実行します。Gate A ですでに振り分けが決まっている場合は、決して質問しないでください。
データセットのリクエストは、必ずこの基準を満たします。 「リストを作って…」は dataset_building に該当し、定義上 high 以上で実行されるため、必ず選択肢を提示します。エンリッチメントにはこの下限がありません。「これらの行の情報を補完して」は通常の労力基準で判断し、指定が明確で少量の補完が high 未満に収まる場合は、質問を省略してください。
Web Search Agent の実行を開始する前に、所要時間を伝えてください。その後、各フェーズの切り替わりで状況を説明します。MCP では、ライブストリームではなく、範囲を限定したステータスポーリングによって進捗を確認します。各ステップでポーリングして状況を報告してください。数分かかる実行について何も説明がないと、処理が止まったように感じられます。
ワークフロー
| 状況 | コマンド | リファレンス |
|---|---|---|
| サイト+項目 → まずテンプレートを使用 | extract:templates list → extract:templates run | references/nimble-extract-templates/reference.md |
| 調査/情報の拡充/データセット | 実行モードを選択 → get → result | references/nimble-agents/reference.md |
| 直接 URL | nimble extract | references/nimble-extract/reference.md |
| ライブウェブを検索 | nimble search | references/nimble-search/reference.md |
| サイト上の URL を検出 | nimble map | references/nimble-map/reference.md |
| セクションを一括クロール | nimble crawl run | references/nimble-crawl/reference.md |
| テンプレートを一括処理(最大 1,000 件) | nimble extract:templates batch | references/nimble-extract-templates/reference.md |
| 抽出を一括処理(最大 1,000 件) | nimble extract-batch | references/nimble-extract/reference.md |
| タスク/一括処理/結果をポーリング | nimble tasks / nimble batches | references/nimble-tasks/reference.md |
| 不明なセレクターまたは XHR パス | browser-use または Playwright で調査 | references/nimble-extract/browser-investigation.md |
| 実証済みのサイトパターン | レシピをコピー | references/recipes.md |
| 2 件以上の入力 | bash の &+wait による並列処理、またはスクリプトを生成 | references/batch-patterns.md |
抽出の全フォールスルー(段階、フラグ、ブラウザー操作、ネットワークキャプチャ)については、references/nimble-extract/reference.md を参照してください。
出力形式
| コマンド | 出力 |
|---|---|
nimble extract:templates | テンプレートの output_schema に従ったレコード — 配列(リスト/SERP)またはオブジェクト(詳細/PDP) |
nimble agents:runs result | output(type:"text" の文章または type:"json" の構造化データ)+主張ごとの引用を示す trust |
nimble extract | HTML、Markdown、または解析済み JSON — --format と --parse によって異なります |
nimble search | 構造化された結果の配列(タイトル、URL、説明) |
nimble map | URL リスト+メタデータ |
nimble crawl | 非同期ジョブ — nimble crawl status <job_id> でポーリングします |
解析する前にテンプレートの output_schema(extract:templates get で取得)を確認してください — リスト/SERP 形式のテンプレートは配列を返し、詳細/PDP 形式のテンプレートはオブジェクトを返します。Web Search Agent の実行は非同期です。agents:runs get をポーリングして終端状態になったら、result を取得してください。
出力と整理
mkdir -p .nimble # save all outputs here
命名規則:.nimble/<site>-<task>.md(例:.nimble/amazon-airpods.md、.nimble/yelp-sf-italian.json)
保存したファイルの操作:
wc -l .nimble/page.md && head -100 .nimble/page.md
grep -n "price\|rating" .nimble/page.md | head -30
すべての応答の末尾に、Source: [URL] — fetched live via Nimble CLI を付けてください。
自己改善
このスキルは ~/.claude/skills/nimble-web-expert/learned/examples.json を管理します。
- タスク開始時: ファイルを読み込み、
good[]でurl_patternに一致するものを確認し、記録されているcommand/tierを出発点として使用します。bad[]も確認し、記録されている落とし穴を避けます。 - 結果を提示した後: 「これらの結果はお役に立ちましたか?」と尋ねます。肯定的なフィードバックがあれば、
url_pattern、task、command、tier、notesを含めてgood[]に追加します。否定的なフィードバックがあれば、「何がうまくいきませんでしたか?」と尋ね、url_pattern、task、issue、avoid、betterを含めてbad[]に追加します。 - エントリーは簡潔にします。サイトごとに5~10件にしてください。実際のフィードバックがあった場合にのみ記録し、憶測で書き込まないでください。
ガードレール
- ライブ価格、最新ニュース、リアルタイムデータについて、トレーニングデータをもとに回答してはいけません。 Nimble を利用できない場合は、その旨を伝えてください。
- ステップ0を黙って省略してはいけません。 テンプレートがないと確信していても、Web Search Agent を使用するか、抽出/検索に切り替える前に、確認することを伝えてください。
- 生の検索結果を、統合してまとめる成果物として提示してはいけません。 「レポート」「概要」「比較」「おすすめのX」「どれを選ぶべきか」といった依頼は、Gate B によって Web Search Agent に振り分けられます。リンク一覧を返してレポートと呼ぶのは、最もよくある誤った振り分けです。
- 抽出テンプレートと Web Search Agent を区別してください。 テンプレートを「WSA」や「旧式のWSA」と呼んではいけません。また、名前だけを根拠にテンプレートの使用を
agentsに振り分けたり、その逆を行ったりしてはいけません。新しいテンプレート/エージェントの作成は対象外です。既存のものを使用してください。 - 実行結果が空、部分的、または明らかに誤っている場合は、そのことを率直に伝えてください。 結果が何も返らなかったドメイン、適切に一致しなかったテンプレート、関連する結果がなかった検索は、成功として提示するのではなく、実際の結果として扱います。より広いソースや別の機能など、明確な次の手段があれば提案してください。
- 同じレンダリング階層で再試行してはいけません。 階層から空または途中で切れたコンテンツが返された場合は、上位の階層に切り替えてください。再実行してはいけません。
- アクセス障壁に直面した場合、上位の階層に切り替えてはいけません。 対象の代わりに CAPTCHA、人間による確認ページ、またはサインイン画面が表示された場合は、実際の結果として率直に報告し、そこで停止してください。対応している別の手段があれば、それを使用してください。たとえば、ソーシャルプロフィールの検索には
--focus socialを、アクセス制限された記事には公開検索結果を使用します。 - Nimble の操作に WebFetch、WebSearch、curl、wget を代用してはいけません。 これらは
allowed-toolsに含まれていません。Nimble のトランスポートが利用できない場合は、停止し、Core principles のトランスポートがない場合の分岐に従ってください。回避策を試してはいけません。 - 参照ファイルを憶測で読み込んではいけません。 現在のタスクで明示的に必要な場合にのみ、参照ファイルを読み込んでください。
- タスクエージェントは
run_in_background=Falseを使用しなければなりません。 - 再試行回数には上限があります。 エラーの場合(コンテンツが空の場合を除く)、異なるフラグを使って最大2回まで再試行できます。2回エラーになったら、報告して停止してください。
- 429エラーの場合は、ただちに停止してください。 再試行したり、別の階層に切り替えたりしてはいけません。
参考ファイル
必要な場合にのみ読み込んでください。
| ファイル | 読み込むタイミング |
|---|---|
references/recipes.md | 一般的なサイト(Amazon、Yelp、LinkedIn など)で実績のあるコマンドが必要な場合 |
references/nimble-extract-templates/reference.md | ステップ 0 — 既知のサイトの抽出テンプレートを検出/確認/実行する場合 |
references/nimble-agents/reference.md | Web Search エージェント — 検出、実行ライフサイクル、作成、信頼性/引用 |
references/nimble-extract/reference.md | 抽出フラグ、レンダリング階層、ブラウザー操作、ネットワークキャプチャ、パーサースキーマ |
references/nimble-search/reference.md | 検索フラグ、8 種類すべてのフォーカスモード |
references/nimble-map/reference.md | Map のフラグ、レスポンス構造 |
references/nimble-crawl/reference.md | 非同期クロールの全ワークフロー |
references/nimble-tasks/reference.md | タスク/バッチのポーリング、結果の取得 — 非同期、バッチ、クロール操作の場合 |
references/nimble-extract/browser-investigation.md | 階層 6 — browser-use または Playwright を使った CSS セレクター/XHR の検出 |
references/nimble-extract/parsing-schema.md | パーサーの種類、セレクター、エクストラクター、後処理 |
references/nimble-extract/browser-actions.md | ブラウザー操作の種類とパラメーターの全一覧 |
references/nimble-extract/network-capture.md | フィルター構文、XHR モード、キャプチャ+解析のパターン |
references/nimble-search/search-focus-modes.md | 判定ツリー、モードの詳細、組み合わせ方法 |
references/batch-patterns.md | 2~5 件、6~20 件、20 件以上の入力に対する並列 bash パターン |
references/error-handling.md | エラーコード、既知のサイトの問題、トラブルシューティング |