あなたのエージェント向けの完全なウェブ操作ツールキット。ウェブを検索して数ミリ秒で回答を得られます。任意のURLを取得して、きれいに整形されたテキスト形式で返してもらえます。ブラウザエージェント(自動操作するプログラム)を送って、サイトの閲覧、フォーム入力、構造化されたデータ抽出ができます。完全なプログラム制御が可能なヘッドレスブラウザ(画面表示なしで動くブラウザ)を起動できます。 次のような場合に使用: - ウェブ検索が必要 - ウェブサイトからデータを抽出・収集したい - ボット検出対策を施されたサイトに対応する必要がある - 自然言語でブラウザの自動操作タスクを実行したい
The complete web toolkit for your agent. Search the web and get answers in milliseconds. Fetch any URL and get clean markdown back. Send a browser agent to navigate sites, fill forms, and extract structured data. Spin up a headless browser for full programmatic control. Use when you need to search the web, extract/scrape data from websites, handle bot-protected sites, or automate browser tasks using natural language.
完全なウェブ操作ツール — 4つのツール、1つのコマンドラインで。最初は最も軽量で対応できるツールから始めて、必要な場合だけより高機能なツールにステップアップします。
TinyFishを実行する前に、必ず以下の2つの確認を行ってください:
1. CLIがインストールされているか?
which tinyfish && tinyfish --version || echo "TINYFISH_CLI_NOT_INSTALLED"
インストールされていない場合は、ユーザーに以下を伝えてください:
TinyFish CLIをインストール:
npm install -g @tiny-fish/cli
2. 認証済みか?
tinyfish auth status
認証されていない場合は、ユーザーに以下を伝えてください:
TinyFish APIキーが必要です。こちらから取得してください: https://agent.tinyfish.ai/api-keys
その後、認証します:
tinyfish auth login
両方の確認に成功するまで、先に進まないでください。
search → fetch → agent → browser
最も軽量 最も高機能
| ツール | 使用場面 | 速度 | コスト |
|---|---|---|---|
| search | URLを見つけたり、トピックについて素早く答えを得たい | 最速 | 最安 |
| fetch | URLはあるが、そのページのきれいなテキスト内容が必要(記事、ドキュメント、商品ページなど) | 高速 | 安 |
| agent | ページとの相互作用が必要—クリック、フォーム入力、ナビゲーション、動的なサイトから構造化データを抽出したい | やや遅い | やや高 |
| browser | agentでは不十分—CDP(ブラウザ制御プロトコル)を使った低レベルのブラウザ操作が必要 | 最遅 | 最高 |
調査:search → fetch トピックを検索し、最良の結果をフェッチして全文を読む。
# 1. URLを見つける
tinyfish search query "best React state management libraries 2026"
# 2. 上位結果を読む
tinyfish fetch content get --format markdown "https://result1.com" "https://result2.com"
深い抽出:search → agent サイトを検索で見つけ、agentで操作して構造化データを抽出する。
# 1. サイトを見つける
tinyfish search query "Nike running shoes official store"
# 2. そこで自動抽出を実行
tinyfish agent run --url "https://nike.com/running" \
"Extract all running shoes as JSON: [{\"name\": str, \"price\": str, \"colors\": [str]}]"
段階的なアップグレード:fetch → agent fetchを試してみてください。ページがJavaScript多用で動的な場合、fetchが空の結果や不完全な内容を返したら、agentにアップグレードします。
完全な制御:agent → browser agentが複雑な複数ステップのワークフローに対応できない場合は、raw browser(生のブラウザ)セッションを開いてCDP経由で自分で自動化します。
tinyfish search queryウェブ検索。ランク付けされた結果をタイトル、URL、スニペット付きで返します。
tinyfish search query "<クエリ>" [--location <ヒント>] [--language <ヒント>] [--pretty]
--location と --language を使って地域・言語を指定--pretty で人間が読みやすい形式にtinyfish search query "best pho in Ho Chi Minh City" --location "Vietnam" --language "en"
tinyfish fetch content get1つ以上のURLから、きれいに抽出したコンテンツを取得します。広告、ナビゲーション、定型文を除去して、本体コンテンツだけを返します。
tinyfish fetch content get <urls...> [--format markdown|html|json] [--links] [--image-links] [--pretty]
--format markdown(デフォルト)— きれいで読みやすいテキスト--format json — 構造化されたドキュメント木構造--links — ページから抽出したすべてのリンクを含める--image-links — 抽出した画像URLを含めるurl、final_url、title、language、author、published_date、text、latency_ms# 1ページをマークダウン形式で取得
tinyfish fetch content get --format markdown "https://example.com/article"
# 複数ページをリンク付きで取得
tinyfish fetch content get --links "https://site-a.com" "https://site-b.com" "https://site-c.com"
tinyfish agent run自然言語で書いた目標を使ってブラウザを自動操作します。実際のブラウザを開いて、ナビゲーション、クリック、フォーム入力、データ抽出を行います。
tinyfish agent run --url <url> "<目標>" [--sync] [--async] [--pretty]
| フラグ | 目的 |
|---|---|
--url <url> |
対象URL(ホスト名のみの場合は自動的に https:// が付く) |
--sync |
結果を完全に待つ(ステップをストリーミングしない) |
--async |
すぐに送信・返却(完了を待たない) |
--pretty |
人間が読みやすい形式で出力 |
出力: デフォルトは data: {...} 形式のSSE(サーバー送信イベント)行をストリーミングします。最終結果は type == "COMPLETE" かつ status == "COMPLETED" のイベントで、抽出されたデータは resultJson フィールドに含まれます。生の出力をそのまま読んでください。スクリプト側での解析は不要です。
常に、目標の中で欲しいJSON構造を指定してください:
tinyfish agent run --url "https://example.com/products" \
"Extract all products as JSON array: [{\"name\": str, \"price\": str, \"url\": str}]"
tinyfish agent run --url "https://example.com/search" \
"Search for 'wireless headphones', filter under $50, extract top 5 as JSON: [{\"name\": str, \"price\": str, \"rating\": str}]"
並列抽出 — 複数の独立したサイトから取得する場合、複数の呼び出しに分けてください。1つの目標に統合しないでください。
良い例—並列呼び出し(同時実行):
tinyfish agent run --url "https://pizzahut.com" \
"Extract pizza prices as JSON: [{\"name\": str, \"price\": str}]"
tinyfish agent run --url "https://dominos.com" \
"Extract pizza prices as JSON: [{\"name\": str, \"price\": str}]"
悪い例—単一の統合呼び出し:
# これはやらないでください — 信頼性が低く遅くなります
tinyfish agent run --url "https://pizzahut.com" \
"Extract prices from Pizza Hut and also go to Dominos..."
実行の管理:
tinyfish agent run list [--status PENDING|RUNNING|COMPLETED|FAILED|CANCELLED] [--limit N]
tinyfish agent run get <run_id>
tinyfish agent run cancel <run_id>
バッチ操作 — CSVファイル(url,goal 列)から多数の実行を投入:
tinyfish agent batch run --input runs.csv
tinyfish agent batch list
tinyfish agent batch get <batch_id>
tinyfish agent batch cancel <batch_id>
tinyfish browser session createリモートブラウザインスタンスを起動します。CDP(ブラウザ制御プロトコル)用のWebSocket URLを返します。
tinyfish browser session create [--url <url>] [--pretty]
--url で作成後にページに移動(オプション)session_id、cdp_url(WebSocket)、base_urlcdp_url を Playwright、Puppeteer、その他のCDPクライアントで使用tinyfish browser session create --url "https://example.com"
# 戻り値: { session_id, cdp_url: "wss://...", base_url: "https://..." }
--pretty で人間が読みやすい出力に対応。デフォルトはJSON--debug を使うか、TINYFISH_DEBUG=1 を設定してHTTPリクエストをstderrにログ出力$ARGUMENTS
The complete web toolkit — four tools, one CLI. Start with the lightest tool that can do the job and escalate only when needed.
Before making any TinyFish call, always run BOTH checks:
1. CLI installed?
which tinyfish && tinyfish --version || echo "TINYFISH_CLI_NOT_INSTALLED"
If not installed, stop and tell the user:
Install the TinyFish CLI:
npm install -g @tiny-fish/cli
2. Authenticated?
tinyfish auth status
If not authenticated, stop and tell the user:
You need a TinyFish API key. Get one at: https://agent.tinyfish.ai/api-keys
Then authenticate:
tinyfish auth login
Do NOT proceed until both checks pass.
search → fetch → agent → browser
lightest heaviest
| Tool | When to use | Speed | Cost |
|---|---|---|---|
| search | You need to find URLs or get a quick answer about a topic | Fastest | Lowest |
| fetch | You have URLs and need their clean content (articles, docs, product pages) | Fast | Low |
| agent | You need to interact with a page — click, fill forms, navigate, extract structured data from dynamic sites | Slower | Higher |
| browser | Agent isn't enough — you need raw programmatic browser control via CDP | Slowest | Highest |
Research: search → fetch Search for a topic, then fetch the best results to read their full content.
# 1. Find URLs
tinyfish search query "best React state management libraries 2026"
# 2. Read the top results
tinyfish fetch content get --format markdown "https://result1.com" "https://result2.com"
Deep extraction: search → agent Search to find the right site, then use agent to interact with it and extract structured data.
# 1. Find the site
tinyfish search query "Nike running shoes official store"
# 2. Automate extraction on it
tinyfish agent run --url "https://nike.com/running" \
"Extract all running shoes as JSON: [{\"name\": str, \"price\": str, \"colors\": [str]}]"
Escalation: fetch → agent Try fetch first. If the page is dynamic/JS-heavy and fetch returns empty or incomplete content, escalate to agent.
Full control: agent → browser If agent can't handle a complex multi-step workflow, spin up a raw browser session and automate it yourself via CDP.
tinyfish search queryWeb search. Returns ranked results with titles, URLs, and snippets.
tinyfish search query "<query>" [--location <hint>] [--language <hint>] [--pretty]
--location and --language for geo-targeted results--pretty for human-readabletinyfish search query "best pho in Ho Chi Minh City" --location "Vietnam" --language "en"
tinyfish fetch content getFetch clean, extracted content from one or more URLs. Strips ads, nav, boilerplate — returns just the content.
tinyfish fetch content get <urls...> [--format markdown|html|json] [--links] [--image-links] [--pretty]
--format markdown (default) — clean readable text--format json — structured document tree--links — include all extracted links from the page--image-links — include extracted image URLsurl, final_url, title, language, author, published_date, text, latency_ms# Fetch one page as markdown
tinyfish fetch content get --format markdown "https://example.com/article"
# Fetch multiple pages with links
tinyfish fetch content get --links "https://site-a.com" "https://site-b.com" "https://site-c.com"
tinyfish agent runRun a browser automation using a natural language goal. The agent opens a real browser, navigates, clicks, fills forms, and extracts data.
tinyfish agent run --url <url> "<goal>" [--sync] [--async] [--pretty]
| Flag | Purpose |
|---|---|
--url <url> |
Target URL (bare hostnames get https:// auto-prepended) |
--sync |
Wait for full result without streaming steps |
--async |
Submit and return immediately |
--pretty |
Human-readable output |
Output: Default streams data: {...} SSE lines. The final result is the event where type == "COMPLETE" and status == "COMPLETED" — the extracted data is in the resultJson field. Read the raw output directly; no script-side parsing is needed.
Always specify the JSON structure you want in the goal:
tinyfish agent run --url "https://example.com/products" \
"Extract all products as JSON array: [{\"name\": str, \"price\": str, \"url\": str}]"
tinyfish agent run --url "https://example.com/search" \
"Search for 'wireless headphones', filter under $50, extract top 5 as JSON: [{\"name\": str, \"price\": str, \"rating\": str}]"
Parallel extraction — when hitting multiple independent sites, make separate calls. Do NOT combine into one goal.
Good — parallel calls (run simultaneously):
tinyfish agent run --url "https://pizzahut.com" \
"Extract pizza prices as JSON: [{\"name\": str, \"price\": str}]"
tinyfish agent run --url "https://dominos.com" \
"Extract pizza prices as JSON: [{\"name\": str, \"price\": str}]"
Bad — single combined call:
# Don't do this — less reliable and slower
tinyfish agent run --url "https://pizzahut.com" \
"Extract prices from Pizza Hut and also go to Dominos..."
Managing runs:
tinyfish agent run list [--status PENDING|RUNNING|COMPLETED|FAILED|CANCELLED] [--limit N]
tinyfish agent run get <run_id>
tinyfish agent run cancel <run_id>
Batch operations — submit many runs from a CSV file (url,goal columns):
tinyfish agent batch run --input runs.csv
tinyfish agent batch list
tinyfish agent batch get <batch_id>
tinyfish agent batch cancel <batch_id>
tinyfish browser session createSpin up a remote browser instance. Returns a CDP WebSocket URL for programmatic control.
tinyfish browser session create [--url <url>] [--pretty]
--url optionally navigates to a page after creationsession_id, cdp_url (WebSocket), and base_urlcdp_url with Playwright, Puppeteer, or any CDP clienttinyfish browser session create --url "https://example.com"
# Returns: { session_id, cdp_url: "wss://...", base_url: "https://..." }
--pretty for human-readable output. Default is JSON.--debug on the root command or set TINYFISH_DEBUG=1 to log HTTP requests to stderr.$ARGUMENTS
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。