web-research
Brave Search APIを活用し、ウェブ上の情報を深く調査して、必要な情報源を見つけ出し、内容を抽出して、包括的なレポートを作成することで、ユーザーが求めるテーマに関する徹底的な調査を支援するSkill。
📜 元の英語説明(参考)
Deep web research with Brave Search API. Find sources, extract content, and compile comprehensive reports. Use when a user asks to research a topic on the web, find information online, compile a research report, search the internet for sources, do a deep dive on a subject, gather web sources for a report, or investigate a topic thoroughly using multiple online sources.
🇯🇵 日本人クリエイター向け解説
Brave Search APIを活用し、ウェブ上の情報を深く調査して、必要な情報源を見つけ出し、内容を抽出して、包括的なレポートを作成することで、ユーザーが求めるテーマに関する徹底的な調査を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o web-research.zip https://jpskill.com/download/15554.zip && unzip -o web-research.zip && rm web-research.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15554.zip -OutFile "$d\web-research.zip"; Expand-Archive "$d\web-research.zip" -DestinationPath $d -Force; ri "$d\web-research.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
web-research.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
web-researchフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Web Research
概要
Brave Search API を使用して、徹底的なウェブ調査を実施します。情報を検索し、ウェブページからコンテンツを取得および抽出、複数のソースを相互参照し、適切な引用を含む構造化された調査レポートをまとめます。単一の検索クエリにとどまらない、詳細な調査のために設計されています。
指示
ユーザーからウェブ上のトピックを調査するように依頼された場合は、次の手順に従ってください。
ステップ 1: 調査を計画する
検索する前に、調査計画を定義します。
- 中心となる質問: ユーザーは何を学び、または決定しようとしているのか?
- サブ質問: トピックを 3〜5 個の具体的なクエリに分割します。
- ソースの種類: どのような種類のソースが価値があるか(学術、ニュース、公式ドキュメント、フォーラム)?
- 範囲: 調査はどこまで深く掘り下げるべきか?
「Rust は本番環境のウェブ開発に対応できるか?」という質問に対する計画の例:
中心となる質問: Rust は今日、本番環境のウェブ API に使用できますか?
サブ質問:
1. "Rust web frameworks comparison 2025"
2. "Rust production web services case studies"
3. "Rust vs Go web performance benchmarks"
4. "Rust web development challenges limitations"
5. "companies using Rust in production backend"
ステップ 2: Brave Search API で検索する
import requests
import os
BRAVE_API_KEY = os.environ.get("BRAVE_API_KEY")
BRAVE_SEARCH_URL = "https://api.search.brave.com/res/v1/web/search"
def brave_search(query, count=10, freshness=None):
"""Brave Search API を使用してウェブを検索します。
Args:
query: 検索クエリ文字列
count: 結果の数 (最大 20)
freshness: オプションのフィルター: 'pd' (過去 1 日)、'pw' (過去 1 週間)、
'pm' (過去 1 か月)、'py' (過去 1 年)
"""
headers = {
"Accept": "application/json",
"Accept-Encoding": "gzip",
"X-Subscription-Token": BRAVE_API_KEY,
}
params = {"q": query, "count": min(count, 20)}
if freshness:
params["freshness"] = freshness
response = requests.get(BRAVE_SEARCH_URL, headers=headers,
params=params, timeout=30)
response.raise_for_status()
results = []
data = response.json()
for item in data.get("web", {}).get("results", []):
results.append({
"title": item["title"],
"url": item["url"],
"description": item.get("description", ""),
"age": item.get("age", ""),
})
return results
ステップ 3: ソースからコンテンツを抽出する
最も関連性の高い URL から、読みやすいコンテンツを取得して抽出します。
from bs4 import BeautifulSoup
def extract_page_content(url):
"""URL を取得し、メインのテキストコンテンツを抽出します。"""
headers = {"User-Agent": "research-bot/1.0.0"}
response = requests.get(url, headers=headers, timeout=30)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
# ナビゲーション、広告、フッターを削除します
for tag in soup.select("nav, footer, header, aside, .ad, .sidebar, script, style"):
tag.decompose()
# メインのコンテンツ領域を見つけようとします
main = soup.select_one("article, main, .post-content, .entry-content")
if not main:
main = soup.find("body")
if main:
text = main.get_text(separator="\n", strip=True)
# 過剰な空白を削除します
lines = [line.strip() for line in text.split("\n") if line.strip()]
return "\n".join(lines)
return ""
ステップ 4: 分析と相互参照
各サブ質問について、複数のソースからの情報を統合します。
サブ質問: "Rust web frameworks comparison"
ソース 1 (blog.example.com): Actix-web が最速、Axum が最高の
開発者エクスペリエンス、Rocket は初心者にとって最も簡単。
ソース 2 (benchmark-site.com): Actix-web は 650K req/s を処理、Axum
は 580K req/s を処理。どちらも Express.js を 10 倍上回る。
ソース 3 (フォーラムディスカッション): コミュニティのコンセンサスは、
Tokio エコシステムの利用とよりシンプルな API により、Axum に移行している。
統合: Axum は推奨される選択肢として浮上しており、
パフォーマンスと人間工学のバランスが取れており、強力なエコシステムサポートがある。
ステップ 5: 調査レポートをまとめる
# 調査レポート: [トピック]
**日付:** [日付]
**実行されたクエリ:** [回数]
**分析されたソース:** [回数]
## エグゼクティブサマリー
[主な調査結果の 2〜3 段落の要約]
## 詳細な調査結果
### [サブトピック 1]
[インライン引用を含む調査結果]
重要なデータポイント:
- [事実] [ソース 1]
- [事実] [ソース 2]
### [サブトピック 2]
[インライン引用を含む調査結果]
## 相反する情報
[ソースが一致しない領域とその理由をメモ]
## 知識のギャップ
[情報が不十分または古くなっている領域]
## ソース
1. [タイトル](URL) - [抽出された内容の簡単な説明]
2. [タイトル](URL) - [簡単な説明]
3. [タイトル](URL) - [簡単な説明]
...
## 方法論
- 検索エンジン: Brave Search API
- 実行されたクエリ: [各クエリをリスト]
- 期間: [使用された鮮度フィルター]
- 評価されたソース: [合計数]
- 含まれるソース: [レポートに含まれる数]
ステップ 6: レポートを保存する
cat > research_report_[topic].md << 'EOF'
[コンパイルされたレポート]
EOF
例
例 1: 技術評価調査
ユーザーリクエスト: 「モバイルアプリの API を REST から GraphQL に移行すべきかどうかを調査してください。」
調査計画:
- "GraphQL vs REST mobile app performance"
- "GraphQL migration challenges production"
- "companies migrated REST to GraphQL results"
- "GraphQL disadvantages drawbacks"
- "REST vs GraphQL mobile bandwidth optimization"
出力: 証拠に基づいた長所、短所、事例研究、および推奨事項を含む構造化されたレポート。
例 2: 新製品の市場調査
ユーザーリクエスト: 「AI コードレビューツールの現状を調査してください。プレイヤーは誰で、ギャップは何ですか?」
調査計画:
- "AI code review tools comparison 2025"
- "AI code review market size growth"
- "best AI code review GitHub" (製品固有)
- "AI code review limitations complaints"
- "developer survey
(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Web Research
Overview
Conduct thorough web research using the Brave Search API. Search for information, fetch and extract content from web pages, cross-reference multiple sources, and compile structured research reports with proper citations. Designed for deep-dive research that goes beyond a single search query.
Instructions
When a user asks you to research a topic on the web, follow these steps:
Step 1: Plan the research
Before searching, define a research plan:
- Central question: What is the user trying to learn or decide?
- Sub-questions: Break the topic into 3-5 specific queries
- Source types: What kinds of sources are valuable (academic, news, official docs, forums)?
- Scope: How deep should the research go?
Example plan for "Is Rust ready for production web development?":
Central question: Can Rust be used for production web APIs today?
Sub-queries:
1. "Rust web frameworks comparison 2025"
2. "Rust production web services case studies"
3. "Rust vs Go web performance benchmarks"
4. "Rust web development challenges limitations"
5. "companies using Rust in production backend"
Step 2: Search with Brave Search API
import requests
import os
BRAVE_API_KEY = os.environ.get("BRAVE_API_KEY")
BRAVE_SEARCH_URL = "https://api.search.brave.com/res/v1/web/search"
def brave_search(query, count=10, freshness=None):
"""Search the web using Brave Search API.
Args:
query: Search query string
count: Number of results (max 20)
freshness: Optional filter: 'pd' (past day), 'pw' (past week),
'pm' (past month), 'py' (past year)
"""
headers = {
"Accept": "application/json",
"Accept-Encoding": "gzip",
"X-Subscription-Token": BRAVE_API_KEY,
}
params = {"q": query, "count": min(count, 20)}
if freshness:
params["freshness"] = freshness
response = requests.get(BRAVE_SEARCH_URL, headers=headers,
params=params, timeout=30)
response.raise_for_status()
results = []
data = response.json()
for item in data.get("web", {}).get("results", []):
results.append({
"title": item["title"],
"url": item["url"],
"description": item.get("description", ""),
"age": item.get("age", ""),
})
return results
Step 3: Extract content from sources
Fetch and extract readable content from the most relevant URLs:
from bs4 import BeautifulSoup
def extract_page_content(url):
"""Fetch a URL and extract the main text content."""
headers = {"User-Agent": "research-bot/1.0.0"}
response = requests.get(url, headers=headers, timeout=30)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
# Remove navigation, ads, footers
for tag in soup.select("nav, footer, header, aside, .ad, .sidebar, script, style"):
tag.decompose()
# Try to find the main content area
main = soup.select_one("article, main, .post-content, .entry-content")
if not main:
main = soup.find("body")
if main:
text = main.get_text(separator="\n", strip=True)
# Clean up excessive whitespace
lines = [line.strip() for line in text.split("\n") if line.strip()]
return "\n".join(lines)
return ""
Step 4: Analyze and cross-reference
For each sub-question, synthesize information from multiple sources:
Sub-question: "Rust web frameworks comparison"
Source 1 (blog.example.com): Actix-web is the fastest, Axum has the
best developer experience, Rocket is easiest for beginners.
Source 2 (benchmark-site.com): Actix-web handles 650K req/s, Axum
handles 580K req/s. Both outperform Express.js by 10x.
Source 3 (forum discussion): Community consensus is shifting toward
Axum due to its use of the Tokio ecosystem and simpler API.
Synthesis: Axum is emerging as the recommended choice, offering a
balance of performance and ergonomics, with strong ecosystem support.
Step 5: Compile the research report
# Research Report: [Topic]
**Date:** [date]
**Queries executed:** [count]
**Sources analyzed:** [count]
## Executive Summary
[2-3 paragraph summary of key findings]
## Detailed Findings
### [Sub-topic 1]
[Findings with inline citations]
Key data points:
- [fact] [Source 1]
- [fact] [Source 2]
### [Sub-topic 2]
[Findings with inline citations]
## Conflicting Information
[Note any areas where sources disagree and why]
## Knowledge Gaps
[Areas where information was insufficient or outdated]
## Sources
1. [Title](URL) - [brief description of what was extracted]
2. [Title](URL) - [brief description]
3. [Title](URL) - [brief description]
...
## Methodology
- Search engine: Brave Search API
- Queries executed: [list each query]
- Date range: [freshness filter used]
- Sources evaluated: [total count]
- Sources included: [count included in report]
Step 6: Save the report
cat > research_report_[topic].md << 'EOF'
[compiled report]
EOF
Examples
Example 1: Technology evaluation research
User request: "Research whether we should migrate from REST to GraphQL for our mobile app API."
Research plan:
- "GraphQL vs REST mobile app performance"
- "GraphQL migration challenges production"
- "companies migrated REST to GraphQL results"
- "GraphQL disadvantages drawbacks"
- "REST vs GraphQL mobile bandwidth optimization"
Output: Structured report with pros, cons, case studies, and a recommendation based on evidence.
Example 2: Market research for a new product
User request: "Research the current state of AI code review tools. Who are the players and what are the gaps?"
Research plan:
- "AI code review tools comparison 2025"
- "AI code review market size growth"
- "best AI code review GitHub" (product-specific)
- "AI code review limitations complaints"
- "developer survey code review automation"
Output: Competitive landscape analysis with feature matrices, pricing data, user sentiment, and identified market gaps.
Example 3: Fact-checking and verification
User request: "Research whether the claim 'microservices reduce deployment frequency' is supported by evidence."
Research plan:
- "microservices deployment frequency study"
- "microservices vs monolith deployment speed evidence"
- "DORA metrics microservices research"
- "microservices deployment challenges"
Output: Evidence-based analysis citing research papers, industry surveys, and case studies both supporting and refuting the claim.
Guidelines
- Always verify the Brave Search API key is set in the environment. Guide the user to get one at https://brave.com/search/api/ if missing (free tier: 2,000 queries/month).
- Execute multiple search queries per research topic. A single query is rarely sufficient for thorough research.
- Cross-reference claims across at least 2-3 sources before including them in the report.
- Clearly distinguish between facts, opinions, and the report's synthesis.
- Always include source URLs so the user can verify claims. Never present information without attribution.
- Note the publication date of sources. Older sources may contain outdated information.
- Flag conflicting information explicitly rather than silently choosing one version.
- Respect robots.txt and rate-limit page fetches. Add a 1-second delay between requests.
- If a page cannot be fetched (paywall, 403, timeout), note it and rely on the search snippet instead.
- Keep the final report focused and actionable. Raw information dumps are less useful than synthesized insights.
- Save the report in markdown format for easy reading and sharing.
- For time-sensitive topics, use the
freshnessparameter to prioritize recent results.