こんにちは。
最近「Web検索 × AIエージェント」という組み合わせに興味が出てきて、Googleが公開しているGoogle ADK(Agent Development Kit)を触ってみました。
ただ、Google ADK単体だと「外部ツール呼び出し」の部分が少し難しく、実用的なAIエージェントにするには、リアルタイムのWebデータを扱える仕組みが必要になります。
そこで今回は、Bright Data MCP Serverと組み合わせて、
Web検索 → ページ遷移 → テキスト抽出 → レポート生成まで自動で実行する WebリサーチAIエージェント
をPythonで構築したときの学習記録をまとめました。
この記事のゴール
-
Google ADK(Python版)の基本的な使い方が分かる -
MCP Serverが何者なのか理解できる - Bright DataのスクレイピングツールをAI エージェントから呼び出せる
- 「リアルタイムWeb検索AIエージェント」が手元で動く
Google ADKとは?(学習しながら理解した要点)
触ってみて分かったのですが、ADKは「RAG」「エージェント」「ワークフロー」の間くらいの立ち位置で、
- 複数のサブエージェントを組み合わせた
- マルチステップのAI処理を構築できる
フレームワークという理解がしっくりきました。
特に強力なのが、「MCPツールをネイティブサポートしていること」です。
MCPを使うと、AIモデルが
- Web検索
- API呼び出し
- スクレイピングブラウザ操作
- 外部データベース参照
といった、外部ツールと安全に連携できます。
Bright Data MCP Serverとは?
Bright Data MCP Serverは、Bright Dataのスクレイピング基盤をMCP経由で操作できるサーバです。
例えば、以下のようなツールが利用できます:
| ツール | できること |
|---|---|
search_engine |
Google、Bing、YandexからSERP(検索結果ページ)をスクレイピング。 |
scraping_browser_navigate |
スクレイピング・ブラウザを新しいURLに移動する。 |
scraping_browser_get_text |
現在のページのbody要素のテキストコンテンツを抽出 |
web_data_amazon_product |
Amazon商品の構造化データを高速取得 |
web_data_x_posts |
X(旧Twitter)の投稿から構造化データを取得する。 |
web_data_instagram_comment |
インスタグラムのコメントを構造化データとして取得する。 |
| …など多数 | 合計30種類以上のツール |
完全版はAppendixで記載しております。
これをGoogle ADKのエージェントから直接呼び出せるため、
今回の「リアルタイムWeb検索AI」の実装に非常に相性が良いです。
前提条件
- Python 3.10+
- Node.js v18+
- GeminiのAPI Key (今回は無料のGemini Tierを使用)
- Bright Dataのアカウント(無料枠あり)
プロジェクト構成
Google ADKは特定のディレクトリ構成を期待するので、以下のように作ります:
google_adk_mcp_agent/
├── .env
├── web_search_agent/
│ ├── __init__.py
│ └── agent.py
└── .venv/
google_adk_mcp_agentの中に、web_search_agentというサブフォルダを作成します。
このサブフォルダには、エージェントのコアロジックが含まれ、以下の2つのファイルが必要です:
-
__init__.py:agent.pyからロジックをエクスポートします -
agent.py:Google ADKエージェントの定義が含まれています
Step 1. 仮想環境と依存ライブラリの準備
mkdir google_adk_mcp_agent
cd google_adk_mcp_agent
python3 -m venv .venv
source .venv/bin/activate # macOSで仮想環境を有効
pip install google-adk python-dotenv
Step 2. Bright Data MCP Serverのセットアップ
まず、Bright Dataのアカウントを取得します。
- 「アカウント設定」の画面でAPIキーを取得します
- 「Web Access」でブラウザ認証情報を取得します
次に、Node.js環境にBright Data MCPサーバーをインストール:
npm install -g @brightdata/mcp
Step 3. APIキーを.envに設定
# Google ADKがVertex AIと統合するかどうかを決定します。Gemini APIを使用する場合は"False"に設定します。
GOOGLE_GENAI_USE_VERTEXAI="False"
GOOGLE_API_KEY="あなたのGemini APIキー"
BRIGHT_DATA_API_TOKEN="あなたのBright Data API TOKEN"
BRIGHT_DATA_BROWSER_AUTH="username:password"
Step4. エージェントを定義
今回構築するエージェントは、以下の3つのサブエージェントで動いています。
1. Planner(検索クエリ生成)
ユーザーが入力した質問やテーマを分析し、検索エンジンに入力するイメージのクエリへと分解します。
- 抽象的な質問 → 具体的な検索クエリへ
- 3〜5件のクエリを JSON で返す
- 後続の Researcher がそのまま利用できる形式に整形する
例:
Q:「AIエージェントの最新事例を教えて」
→
A: 「ai agents examples 2025」「multi agent systems」「autonomous agents real world case」など
# Define the functions for the creation of the required sub-agents
def create_planner_agent():
return Agent(
name="planner",
model="gemini-2.0-flash",
description="Breaks down user input into focused search queries for research purposes.",
instruction="""
You are a research planning assistant. Your task is to:
1. Analyze the user"s input topic or question.
2. Break it down into 3 to 5 focused and diverse search engine-like queries that collectively cover the topic.
3. Return your output as a JSON object in the following format:
{
"queries": ["query1", "query2", "query3"]
}
IMPORTANT:
- The queries should be phrased as if typed into a search engine.
""",
output_key="search_queries"
)
2. Researcher(Web検索+スクレイピング)
Plannerが作ったクエリを使って実際にBright Data MCPを呼び出し、
-
search_engineでGoogle風検索 - 上位URLを抽出
-
scraping_browser_navigateでページに移動 -
scraping_browser_get_textで本文抽出
という「実行フェーズ」を担当する部分です。
Bright Data MCPを使うことで、
AIが本当に「ウェブを見る」→ テキストを抽出する → 要点化する
という、通常のLLMでは不可能な「リアルタイム性+ソース付き回答」を実現できます。
def create_researcher_agent(mcp_tools):
return Agent(
name="researcher",
model="gemini-2.0-flash",
description="Performs web searches and extracts key insights from web pages using the configured tools.",
instruction="""
You are a web research agent. Your task is to:
1. Receive a list of search queries from the planner agent.
2. For each search query, apply the `search_engine` tool to get Google search results.
3. From the global results, select the top 3 most relevant URLs.
4. Pass each URL to the `scraping_browser_navigate` tool.
5. From each page, use the `scraping_browser_get_text` tool to extract the main page content.
6. Analyze the extracted text and summarize the key insights in the following JSON format:
[
{
"url": "https://example.com",
"insights": [
"Main insight one",
"Main insight two"
]
},
...
]
IMPORTANT:
- You are only allowed to use the following tools: `search_engine`, `scraping_browser_navigate`, and `scraping_browser_get_text`.
""",
tools=mcp_tools
)
3. Publisher(レポート生成)
Researcherが返したJSONを受け取り、Markdown形式のレポートとして読みやすくまとめる部分です。
- 章立て(#, ##, ###)による構造化
- URL へのリンクも保持
- 抽出結果をただ並べるのではなく、ストーリーとして整理
- 最後に簡潔な結論を書く
これで「単なるスクレイピング結果」ではなく、「読めるレポート」として仕上げてくれます!
def create_publisher_agent():
return Agent(
name="publisher",
model="gemini-2.0-flash",
description="Synthesizes research findings into a comprehensive, well-structured final document.",
instruction="""
You are an expert writer. Your task is to take the structured research output from the scraper agent and craft a clear, insightful, and well-organized report.
GUIDELINES:
- Use proper Markdown-like structure: title (#), subtitle, introduction, chapters (##), subchapters (###), and conclusion (##).
- Integrate contextual links (where needed) using the URLs from the output of the researcher agent.
- Maintain a professional, objective, and informative tone.
- Go beyond restating findings—synthesize the information, connect ideas, and present them as a coherent narrative.
"""
)
Step5. Bright Data MCPの統合(MCP Integration)
前のステップでも触れましたが、今回のエージェント構成ではResearcherが、Bright Data Web MCP Serverが提供するツール群に依存しています。
具体的には:
- search_engine(SERP検索)
- scraping_browser_navigate(ブラウザ移動)
- scraping_browser_get_text(ページ本文抽出)
といったMCPツールが使われています。
これらのツールはBright Data MCP Serverを起動したときに提供されるもので、Google ADK側から利用できるようにするには、まず「MCP Toolsetをロード」する処理をコード内で実装する必要があります。
Google ADKでは、このMCP連携を非常にシンプルに扱えるようにMCPToolset.from_server()というメソッドが用意されています。(ありがたい!
)
async def initialize_mcp_tools_async():
print("Connecting to Bright Data MCP...")
tools, exit_stack = await MCPToolset.from_server(
connection_params=StdioServerParameters(
command="npx",
args=["-y", "@brightdata/mcp"],
env={
"API_TOKEN": BRIGHT_DATA_API_TOKEN,
"BROWSER_AUTH": BRIGHT_DATA_BROWSER_AUTH,
}
)
)
print(f"MCP Toolset created successfully with {len(tools)} tools")
tool_names = [tool.name for tool in tools]
print(f"Available tools include: {', '.join(tool_names)}")
print("MCP initialization complete!")
return tools, exit_stack
def initialize_mcp_tools():
"""Synchronous wrapper to initialize MCP tools"""
global _mcp_tools, _exit_stack
if _mcp_tools is None:
try:
loop = asyncio.get_event_loop()
if loop.is_running():
# If there's already a running loop, we need a different approach
# Create a new event loop in a thread
import concurrent.futures
def run_async():
new_loop = asyncio.new_event_loop()
asyncio.set_event_loop(new_loop)
try:
return new_loop.run_until_complete(initialize_mcp_tools_async())
finally:
new_loop.close()
with concurrent.futures.ThreadPoolExecutor() as executor:
_mcp_tools, _exit_stack = executor.submit(run_async).result()
else:
_mcp_tools, _exit_stack = loop.run_until_complete(initialize_mcp_tools_async())
except RuntimeError:
# No event loop exists, create one
_mcp_tools, _exit_stack = asyncio.run(initialize_mcp_tools_async())
return _mcp_tools, _exit_stack
Step6. Root Agentを作成
- ルートエージェントとは?
簡単に言うと…
すべてのサブエージェントを束ねて、正しい順番で呼び出す親エージェント Google ADKの「実行エントリーポイント」である存在
だと私が理解しております。
Google ADK にはいくつかのエージェントタイプがあります:
- 通常の Agent(単体エージェント)
- ループ型 Agent
- 条件分岐系 Agent
- SequentialAgent(順番実行)
- デバッグ用途の Agent
など。
今回は 「Planner → Researcher → Publisher」 という複数のサブエージェントを順番に実行させたいケース では、SequentialAgentを使うのが最適でした。
def create_root_agent():
try:
# Load the MCP tools
mcp_tools, exit_stack = initialize_mcp_tools()
except Exception as e:
print(f"Warning: Could not initialize MCP tools: {e}")
mcp_tools = []
exit_stack = None
# Define an agent that applies the configured sub-agents sequentially
root_agent = SequentialAgent(
name="web_research_agent",
description="An agent that researches topics on the web and creates comprehensive reports.",
sub_agents=[
create_planner_agent(),
create_researcher_agent(mcp_tools),
create_publisher_agent(),
]
)
return root_agent
コードのまとめ
agent.py
from dotenv import load_dotenv
import os
import asyncio
from google.adk.agents import Agent, SequentialAgent
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StdioServerParameters
# Load the environment variables from the .env file
load_dotenv()
# Read the envs for integration with the Bright Data Web MCP server
BRIGHT_DATA_API_TOKEN = os.getenv("BRIGHT_DATA_API_TOKEN")
BRIGHT_DATA_BROWSER_AUTH = os.getenv("BRIGHT_DATA_BROWSER_AUTH")
# Global variables for caching
_mcp_tools = None
_exit_stack = None
# Define the functions for the creation of the required sub-agents
def create_planner_agent():
return Agent(
name="planner",
model="gemini-2.0-flash",
description="Breaks down user input into focused search queries for research purposes.",
instruction="""
You are a research planning assistant. Your task is to:
1. Analyze the user"s input topic or question.
2. Break it down into 3 to 5 focused and diverse search engine-like queries that collectively cover the topic.
3. Return your output as a JSON object in the following format:
{
"queries": ["query1", "query2", "query3"]
}
IMPORTANT:
- The queries should be phrased as if typed into a search engine.
""",
output_key="search_queries"
)
def create_researcher_agent(mcp_tools):
return Agent(
name="researcher",
model="gemini-2.0-flash",
description="Performs web searches and extracts key insights from web pages using the configured tools.",
instruction="""
You are a web research agent. Your task is to:
1. Receive a list of search queries from the planner agent.
2. For each search query, apply the `search_engine` tool to get Google search results.
3. From the global results, select the top 3 most relevant URLs.
4. Pass each URL to the `scraping_browser_navigate` tool.
5. From each page, use the `scraping_browser_get_text` tool to extract the main page content.
6. Analyze the extracted text and summarize the key insights in the following JSON format:
[
{
"url": "https://brightdata.com/blog/ai/aws-strands-sdk-with-web-mcp",
"insights": [
"Main insight one",
"Main insight two"
]
},
...
]
IMPORTANT:
- You are only allowed to use the following tools: `search_engine`, `scraping_browser_navigate`, and `scraping_browser_get_text`.
""",
tools=mcp_tools
)
def create_publisher_agent():
return Agent(
name="publisher",
model="gemini-2.0-flash",
description="Synthesizes research findings into a comprehensive, well-structured final document.",
instruction="""
You are an expert writer. Your task is to take the structured research output from the scraper agent and craft a clear, insightful, and well-organized report.
GUIDELINES:
- Use proper Markdown-like structure: title (#), subtitle, introduction, chapters (##), subchapters (###), and conclusion (##).
- Integrate contextual links (where needed) using the URLs from the output of the researcher agent.
- Maintain a professional, objective, and informative tone.
- Go beyond restating findings—synthesize the information, connect ideas, and present them as a coherent narrative.
"""
)
# To load the MCP tools exposed by the Bright Data Web MCP server
async def initialize_mcp_tools_async():
print("Connecting to Bright Data MCP...")
tools, exit_stack = await MCPToolset.from_server(
connection_params=StdioServerParameters(
command="npx",
args=["-y", "@brightdata/mcp"],
env={
"API_TOKEN": BRIGHT_DATA_API_TOKEN,
"BROWSER_AUTH": BRIGHT_DATA_BROWSER_AUTH,
}
)
)
print(f"MCP Toolset created successfully with {len(tools)} tools")
tool_names = [tool.name for tool in tools]
print(f"Available tools include: {', '.join(tool_names)}")
print("MCP initialization complete!")
return tools, exit_stack
def initialize_mcp_tools():
"""Synchronous wrapper to initialize MCP tools"""
global _mcp_tools, _exit_stack
if _mcp_tools is None:
try:
loop = asyncio.get_event_loop()
if loop.is_running():
# If there's already a running loop, we need a different approach
# Create a new event loop in a thread
import concurrent.futures
def run_async():
new_loop = asyncio.new_event_loop()
asyncio.set_event_loop(new_loop)
try:
return new_loop.run_until_complete(initialize_mcp_tools_async())
finally:
new_loop.close()
with concurrent.futures.ThreadPoolExecutor() as executor:
_mcp_tools, _exit_stack = executor.submit(run_async).result()
else:
_mcp_tools, _exit_stack = loop.run_until_complete(initialize_mcp_tools_async())
except RuntimeError:
# No event loop exists, create one
_mcp_tools, _exit_stack = asyncio.run(initialize_mcp_tools_async())
return _mcp_tools, _exit_stack
# Define the root agent required by Google ADK to start
def create_root_agent():
try:
# Load the MCP tools
mcp_tools, exit_stack = initialize_mcp_tools()
except Exception as e:
print(f"Warning: Could not initialize MCP tools: {e}")
mcp_tools = []
exit_stack = None
# Define an agent that applies the configured sub-agents sequentially
root_agent = SequentialAgent(
name="web_research_agent",
description="An agent that researches topics on the web and creates comprehensive reports.",
sub_agents=[
create_planner_agent(),
create_researcher_agent(mcp_tools),
create_publisher_agent(),
]
)
return root_agent
# Google ADK will load the root agent in the web UI or CLI
try:
root_agent = create_root_agent()
except Exception as e:
print(f"Error creating root agent: {e}")
# Create a minimal agent that can still be loaded
root_agent = Agent(
name="web_research_agent",
model="gemini-2.0-flash",
description="Web research agent (fallback mode)",
instruction="This is a fallback agent."
)
__init__.py
from . import agent
from .agent import root_agent
__all__ = ['root_agent', 'agent']
Step7. 実行
プロジェクトのrootフォルダで、仮想環境を有効した上、 Web UIでエージェントを起動します:
adk web
http://127.0.0.1:8000を開くとADK Web UIが起動します。
「2025年のローマ法王について調べて」と入力すると、「クエリを分解して → search_engine でリアルタイム検索して要点を整理 → レポートでまとめる」という処理を自動で実行してくれました!👏


まとめ
今回の学習で感じたこと:
- Google ADKは思った以上にフレームワークしている
- MCP統合により実用的な外部ツール呼び出しが手軽
-
Bright Data MCPのツールはAIエージェントと相性が良い - 「AIが外部世界と対話する」仕組みとしてかなり実践的になる
特に、「リアルタイム検索AI」がここまで簡単に作れるとは思いませんでした。
引き続き、
- 社内ナレッジRAG × リアルタイム検索
- データ分析レポートの自動作成
- スクレイピングワーカーの自律化
などにも応用してみたいと思います!
おわりに
この記事が、Google ADKとMCP Serverを触ってみたい方の参考になれば嬉しいです。
修正点やより良い構成案があれば、ぜひコメントで教えてください!
Appendix
Bright Data MCP Serverで利用可能なツール
| 機能 | 説明 |
|---|---|
| search_engine | Google、Bing、YandexからSERP(検索結果ページ)をスクレイピング。Googleの結果はJSON形式、Bing/YandexはMarkdown形式で返却。cursorパラメータでページネーション対応。 |
| scrape_as_markdown | 単一ページを高度な抽出機能でスクレイピングし、Markdown形式で返却。Bright DataのUnlocker機能を使用し、Bot保護やCAPTCHAを自動処理。 |
| search_engine_batch | 最大10件の検索クエリを並列実行。Googleの結果はJSON、Bing/YandexはMarkdown形式で返却。 |
| scrape_batch | 最大10件のWebページを一括スクレイピングし、URL/コンテンツのペアを配列でMarkdown形式返却。 |
| scrape_as_html | 単一ページを高度な抽出機能でスクレイピングし、HTML応答本体を返却。Bot検出やCAPTCHA保護されたサイトに対応。 |
| extract | WebページをMarkdownとしてスクレイピングし、AIサンプリングで構造化JSONに変換。カスタム抽出プロンプトをオプションで指定可能。 |
| session_stats | 現在のMCPセッション中に各ツールが呼び出された回数をレポート。 |
| web_data_amazon_product | Amazon商品の構造化データを高速取得。/dp/を含む有効な商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_amazon_product_reviews | Amazon商品レビューの構造化データを高速取得。/dp/を含む有効な商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_amazon_product_search | Amazon検索結果の構造化データを取得。検索キーワードとAmazonドメインURLが必要。検索結果の最初のページのみ対応。 |
| web_data_walmart_product | Walmart商品の構造化データを高速取得。/ip/を含む商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_walmart_seller | Walmart出品者の構造化データを高速取得。有効なWalmart出品者URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_ebay_product | eBay商品の構造化データを高速取得。有効なeBay商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_homedepot_products | Home Depot商品の構造化データを高速取得。有効なhomedepot.com商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_zara_products | Zara商品の構造化データを高速取得。有効なZara商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_etsy_products | Etsy商品の構造化データを高速取得。有効なEtsy商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_bestbuy_products | Best Buy商品の構造化データを高速取得。有効なBest Buy商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_linkedin_person_profile | LinkedIn個人プロフィールの構造化データを高速取得。有効なLinkedInプロフィールURLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_linkedin_company_profile | LinkedIn企業プロフィールの構造化データを高速取得。有効なLinkedIn企業URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_linkedin_job_listings | LinkedIn求人情報の構造化データを高速取得。有効なLinkedIn求人URLまたは検索URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_linkedin_posts | LinkedInの投稿の構造化データを高速取得。有効なLinkedIn投稿URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_linkedin_people_search | LinkedInの人物検索結果の構造化データを高速取得。LinkedIn人物検索URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_crunchbase_company | Crunchbase企業情報の構造化データを高速取得。有効なCrunchbase企業URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_zoominfo_company_profile | ZoomInfo企業プロフィールの構造化データを高速取得。有効なZoomInfo企業URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_instagram_profiles | Instagramプロフィールの構造化データを高速取得。有効なInstagramプロフィールURLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_instagram_posts | Instagram投稿の構造化データを高速取得。有効なInstagram投稿URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_instagram_reels | Instagramリールの構造化データを高速取得。有効なInstagramリールURLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_instagram_comments | Instagramコメントの構造化データを高速取得。有効なInstagram URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_facebook_posts | Facebook投稿の構造化データを高速取得。有効なFacebook投稿URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_facebook_marketplace_listings | Facebookマーケットプレイス出品情報の構造化データを高速取得。有効なマーケットプレイス出品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_facebook_company_reviews | Facebook企業レビューの構造化データを高速取得。有効なFacebook企業URLとレビュー件数が必要。通常のスクレイピングより高速かつ安定。 |
| web_data_facebook_events | Facebookイベント情報の構造化データを高速取得。有効なFacebookイベントURLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_tiktok_profiles | TikTokプロフィールの構造化データを高速取得。有効なTikTokプロフィールURLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_tiktok_posts | TikTok投稿の構造化データを高速取得。有効なTikTok投稿URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_tiktok_shop | TikTok Shop商品の構造化データを高速取得。有効なTikTok Shop商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_tiktok_comments | TikTokコメントの構造化データを高速取得。有効なTikTok動画URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_google_maps_reviews | GoogleマップレビューN構造化データを高速取得。有効なGoogleマップURLが必要で、days_limit(デフォルト3日)をオプション指定可能。通常のスクレイピングより高速かつ安定。 |
| web_data_google_shopping | Google Shopping商品の構造化データを高速取得。有効なGoogle Shopping商品URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_google_play_store | Google Play Storeアプリの構造化データを高速取得。有効なPlay StoreアプリURLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_apple_app_store | Apple App Storeアプリの構造化データを高速取得。有効なApp StoreアプリURLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_reuter_news | Reutersニュース記事の構造化データを高速取得。有効なReutersニュース記事URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_github_repository_file | GitHubリポジトリファイルの構造化データを高速取得。有効なGitHubファイルURLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_yahoo_finance_business | Yahoo Finance企業プロフィールの構造化データを高速取得。有効なYahoo Finance企業URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_x_posts | X(旧Twitter)投稿の構造化データを高速取得。有効なX投稿URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_zillow_properties_listing | Zillow不動産物件情報の構造化データを高速取得。有効なZillow物件URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_booking_hotel_listings | Booking.comホテル情報の構造化データを高速取得。有効なBooking.com物件URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_youtube_profiles | YouTubeチャンネルプロフィールの構造化データを高速取得。有効なYouTubeチャンネルURLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_youtube_comments | YouTubeコメントの構造化データを高速取得。有効なYouTube動画URLが必要で、num_of_comments(デフォルト10件)をオプション指定可能。通常のスクレイピングより高速かつ安定。 |
| web_data_reddit_posts | Reddit投稿の構造化データを高速取得。有効なReddit投稿URLが必要。通常のスクレイピングより高速かつ安定。 |
| web_data_youtube_videos | YouTube動画メタデータの構造化データを高速取得。有効なYouTube動画URLが必要。通常のスクレイピングより高速かつ安定。 |
| scraping_browser_navigate | スクレイピングブラウザセッションを開くまたは再利用し、指定URLにナビゲート。ネットワークリクエストの追跡をリセット。 |
| scraping_browser_go_back | アクティブなスクレイピングブラウザセッションを前のページに戻し、新しいURLとタイトルを報告。 |
| scraping_browser_go_forward | アクティブなスクレイピングブラウザセッションを次のページに進め、新しいURLとタイトルを報告。 |
| scraping_browser_snapshot | 現在のページのARIAスナップショットをキャプチャし、インタラクティブ要素とそのref(参照ID)をリスト化。後続のref操作で使用。 |
| scraping_browser_click_ref | 最新のARIAスナップショットから取得したrefを使用して要素をクリック。refと人間が読める要素の説明が必要。 |
| scraping_browser_type_ref | ARIAスナップショットで特定されたrefの要素にテキストを入力。入力後にEnterキーを押して送信するオプションあり。 |
| scraping_browser_screenshot | 現在のページのスクリーンショットをキャプチャ。full_pageオプションでページ全体の画像取得に対応。 |
| scraping_browser_network_requests | ページ読み込み以降に記録されたネットワークリクエストをHTTPメソッド、URL、レスポンスステータスとともにリスト化。デバッグ用。 |
| scraping_browser_wait_for_ref | ARIA refで特定された要素が表示されるまで待機。タイムアウト(ミリ秒)をオプション指定可能。 |
| scraping_browser_get_text | 現在のページのbody要素のテキストコンテンツを返却。 |
| scraping_browser_get_html | 現在のページのHTMLコンテンツを返却。headやscriptタグが必要な場合を除き、full_pageオプションは使用を避ける。 |
| scraping_browser_scroll | スクレイピングブラウザセッションで現在のページの最下部までスクロール。 |
| scraping_browser_scroll_to_ref | ARIAスナップショットで参照された要素が表示されるまでページをスクロール。 |






