Skyvern
公式AI駆動のブラウザ自動化MCPサーバー — Claude Code CLI経由でサイトのナビゲーション、フォーム入力、データ抽出、ログイン処理を実行
Skyvern MCPで何ができますか?
-
自然言語のプロンプトからブラウザタスクを実行 —
skyvern.run_taskを使用してウェブサイトを操作し、「今日のHackerNewsのトップ投稿を見つける」などの目標を達成します。 -
スキーマを使用して構造化データを抽出 —
data_extraction_schemaをskyvern.run_taskに渡すと、定義したプロパティに一致する一貫性のあるJSON出力が得られます。 -
自分のChromeブラウザを制御 — リモートデバッグを介してSkyvernをローカルのChromeインスタンスに接続し、既存のCookieとログインを使用してサイトを自動化します。
-
AIを活用したページ操作を実行 —
page.act、page.extract、page.validate、またはpage.agent.run_taskを使用して、セレクターではなく自然言語でページと対話します。 -
マルチステップのワークフローを連鎖 — UIでワークフローを構築し、ブラウザタスク、データ抽出、検証、ファイルダウンロード、HTTPリクエストを1つの自動化シーケンスに結合します。
ドキュメント
🐉 LLMとコンピュータビジョンを使用したブラウザベースのワークフロー自動化 🐉
Skyvernは、LLMとコンピュータビジョンを使用してブラウザベースのワークフローを自動化します。Playwright互換のSDKを提供し、PlaywrightにAI機能を追加するほか、ノーコードのワークフロービルダーも提供しており、技術者・非技術者を問わず、あらゆるWebサイトでの手動ワークフローを自動化し、脆弱で信頼性の低い自動化ソリューションを置き換えます。
ブラウザ自動化への従来のアプローチでは、Webサイト用のカスタムスクリプトを作成する必要があり、多くの場合DOM解析やXPathベースの操作に依存していましたが、Webサイトのレイアウトが変更されると都度破綻していました。
Skyvernは、コード定義のXPath操作のみに依存する代わりに、Vision LLMを利用してWebサイトを学習し、操作します。
仕組み
Skyvernは、BabyAGIやAutoGPTによって普及したタスク駆動型自律エージェントの設計に着想を得ています。大きな利点は、Playwrightのようなブラウザ自動化ライブラリを使用してWebサイトと対話する機能をSkyvernに付与している点です。
Skyvernはエージェントの群れを使用してWebサイトを理解し、アクションを計画・実行します。
このアプローチにはいくつかの利点があります。
- Skyvernは、カスタマイズされたコードなしで、視覚要素をワークフロー完了に必要なアクションにマッピングできるため、初めて見るWebサイトでも操作できます。
- Skyvernは、ナビゲーション時にシステムが探す事前定義されたXPathやその他のセレクターがないため、Webサイトのレイアウト変更に耐性があります。
- Skyvernは、ワークフローを完了するために必要なインタラクションを推論できるため、単一のワークフローを多数のWebサイトに適用できます。 詳細な技術レポートはこちらをご覧ください。
デモ
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
クイックスタート
Skyvern Cloud
Skyvern Cloudは、Skyvernのマネージドクラウドバージョンであり、インフラストラクチャを気にせずにSkyvernを実行できます。複数のSkyvernインスタンスを並行して実行でき、アンチボット検出メカニズム、プロキシネットワーク、CAPTCHAソルバーがバンドルされています。
試してみるには、app.skyvern.comにアクセスしてアカウントを作成してください。
ローカルで実行 (UI + サーバー)
希望するセットアップ方法を選択してください。
データベースのデフォルト:
skyvern quickstartとskyvern run serverはデフォルトで~/.skyvern/data.dbのSQLiteデータベースを使用するため、pipパスはPostgresやDockerなしで動作します。代わりにPostgresを使用するには、ローカルコンテナの場合は--postgresを、既存のデータベースの場合は--database-stringを渡します。Docker Composeは常にバンドルされたPostgresサービスを使用します。
オプションA: pipインストール (Python管理のローカルセットアップに推奨)
必要な依存関係:
さらに、Windowsの場合:
- Rust
- C++開発ツールとWindows SDKを含むVS Code
1. Skyvernをインストールする
pip install "skyvern[all]"
2. Skyvernを実行する
skyvern quickstart
pipクイックスタートはデフォルトでSQLiteを使用します。ローカルのPostgresコンテナの場合は、skyvern quickstart --postgres を実行します。
オプションB: Docker Compose
すべてをコンテナ化し(Postgres、API、UI)、Python/Nodeをローカルにインストールしたくない場合は、このオプションを使用します。
- Docker Desktopをインストールします。
- リポジトリをクローンします。
git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern .envでLLMプロバイダーを設定します(以下のquickstart --docker-composeコマンドは、存在しない場合に.env.exampleから作成します)。cp .env.example .env # if not already created # edit .env to add your LLM API key- すべてを起動します。
docker compose up -d - http://localhost:8080 を開きます。
トラブルシューティング
(sqlite3.OperationalError) table organizations already exists — pip install skyvern==1.0.31 の既知のバグに遭遇しました。修正方法:
rm ~/.skyvern/data.db # remove the leftover SQLite file
pip install --upgrade skyvern # 1.0.32+ contains the fix
skyvern quickstart
まだ1.0.31を使用していてアップグレードできない場合は、代わりにuv経由でインストールします。
uv pip install skyvern
pip install skyvern がResolutionImpossible (litellm / fastmcp)で失敗する — 1.0.31で依存関係解決の競合が発生しました。1.0.32以降にアップグレードするか、uvを使用してください: uv pip install skyvern。
SDK
Skyvernは、AIを活用したブラウザ自動化を追加するPlaywright拡張機能です。 Playwrightの全機能に加えて、自然言語プロンプトを使用して要素を操作したり、データを抽出したり、複雑なマルチステップワークフローを自動化したりするAI機能を提供します。
インストール:
- Python SDK / クラウドAPI:
pip install skyvern - ローカルサーバー + パッケージ化されたUI:
pip install "skyvern[all]"を実行後、skyvern quickstartを実行 - Postgresを使用したローカルサーバー + パッケージ化されたUI:
pip install "skyvern[all]"を実行後、skyvern quickstart --postgresを実行 - 既存のAPI用のパッケージ化されたUI:
pip install "skyvern[ui]"を実行後、skyvern run ui --api-url <api-url> --api-key <api-key>を実行 - TypeScript:
npm install @skyvern/client
AI搭載ページコマンド
Skyvernは、ページオブジェクトに直接4つのコアAIコマンドを追加します。
| コマンド | 説明 |
|---|---|
page.act(prompt) | 自然言語を使用してアクションを実行します(例:「ログインボタンをクリック」) |
page.extract(prompt, schema) | オプションのJSONスキーマを使用してページから構造化データを抽出します |
page.validate(prompt) | ページの状態を検証し、bool を返します(例:「ユーザーがログインしているか確認」) |
page.prompt(prompt, schema) | オプションの応答スキーマを使用して任意のプロンプトをLLMに送信します |
さらに、page.agent はより高レベルなワークフローコマンドを提供します。
| コマンド | 説明 |
|---|---|
page.agent.run_task(prompt) | 複雑なマルチステップタスクを実行します |
page.agent.login(credential_type, credential_id) | 保存された認証情報(Skyvern、Bitwarden、1Password)で認証します |
page.agent.download_files(prompt) | ファイルをナビゲートしてダウンロードします |
page.agent.run_workflow(workflow_id) | 事前構築されたワークフローを実行します |
AI拡張Playwrightアクション
すべての標準Playwrightアクションは、AIを活用した要素検索のためのオプションの prompt パラメータをサポートしています。
| アクション | Playwright | AI拡張 |
|---|---|---|
| クリック | page.click("#btn") | page.click(prompt="Click login button") |
| 入力 | page.fill("#email", "a@b.com") | page.fill(prompt="Email field", value="a@b.com") |
| 選択 | page.select_option("#country", "US") | page.select_option(prompt="Country dropdown", value="US") |
| アップロード | page.upload_file("#file", "doc.pdf") | page.upload_file(prompt="Upload area", files="doc.pdf") |
3つのインタラクションモード:
# 1. Traditional Playwright - CSS/XPath selectors
await page.click("#submit-button")
# 2. AI-powered - natural language
await page.click(prompt="Click the green Submit button")
# 3. AI fallback - tries selector first, falls back to AI if it fails
await page.click("#submit-btn", prompt="Click the Submit button")
コアAIコマンド - 例
# act - Perform actions using natural language
await page.act("Click the login button and wait for the dashboard to load")
# extract - Extract structured data with optional JSON schema
result = await page.extract("Get the product name and price")
result = await page.extract(
prompt="Extract order details",
schema={"order_id": "string", "total": "number", "items": "array"}
)
# validate - Check page state (returns bool)
is_logged_in = await page.validate("Check if the user is logged in")
# prompt - Send arbitrary prompts to the LLM
summary = await page.prompt("Summarize what's on this page")
クイックスタート例
UI経由で実行:
skyvern run all
Webインターフェースからタスクを実行するには、http://localhost:8080 に移動します。パッケージ化されたUIがない場合、skyvern run ui が一致するUIパッケージのインストールを提案します。非インタラクティブなセットアップには、skyvern run ui --install-ui または skyvern run all --install-ui を使用します。
既存のSkyvern APIに対してパッケージ化されたUIのみを実行するには、skyvern[ui] をインストールし、
--api-url を渡します。CLIは、上書きしない限りAPI URLから --wss-url を推測します。
skyvern run ui を実行する前に、VITE_API_BASE_URL、VITE_WSS_BASE_URL、VITE_ARTIFACT_API_BASE_URL、VITE_SKYVERN_API_KEY、
および VITE_BROWSER_STREAMING_MODE を設定することもできます。
Python SDK:
from skyvern import Skyvern
# Local mode
skyvern = Skyvern.local()
# Or connect to Skyvern Cloud
skyvern = Skyvern(api_key="your-api-key")
# Launch browser and get page
browser = await skyvern.launch_cloud_browser()
page = await browser.get_working_page()
# Mix Playwright with AI-powered actions
await page.goto("https://example.com")
await page.click("#login-button") # Traditional Playwright
await page.agent.login(credential_type="skyvern", credential_id="cred_123") # AI login
await page.click(prompt="Add first item to cart") # AI-augmented click
await page.agent.run_task("Complete checkout with: John Snow, 12345") # AI task
TypeScript SDK:
import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "your-api-key" });
const browser = await skyvern.launchCloudBrowser();
const page = await browser.getWorkingPage();
// Mix Playwright with AI-powered actions
await page.goto("https://example.com");
await page.click("#login-button"); // Traditional Playwright
await page.agent.login("skyvern", { credentialId: "cred_123" }); // AI login
await page.click({ prompt: "Add first item to cart" }); // AI-augmented click
await page.agent.runTask("Complete checkout with: John Snow, 12345"); // AI task
await browser.close();
シンプルなタスク実行:
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(prompt="Find the top post on hackernews today")
print(task)
高度な使用方法
自分のブラウザを制御する (Chrome)
Skyvernに既存のChromeブラウザを制御させます。すべてのCookie、ログイン情報、拡張機能が含まれます。
ステップ1: Chromeでリモートデバッグを有効にする
- Chromeを開き、
chrome://inspect/#remote-debuggingに移動します。 - Enable をクリックしてデバッグサーバーを起動します。
- Server running at: 127.0.0.1:9222 と表示されるはずです。
[!TIP]
skyvern init browserコマンドはこれを自動的に実行できます。chrome://inspect/#remote-debuggingを開き、有効にするのを待って、設定を保存します。
ステップ2: Skyvernを接続する
オプションA — Pythonコード:
from skyvern import Skyvern
skyvern = Skyvern(
base_url="http://localhost:8000",
api_key="YOUR_API_KEY",
browser_address="http://127.0.0.1:9222",
)
task = await skyvern.run_task(
prompt="Find the top post on hackernews today",
)
オプションB — Skyvernサービス:
.envファイルに2つの変数を追加します。
BROWSER_TYPE=cdp-connect
BROWSER_REMOTE_DEBUGGING_URL=http://127.0.0.1:9222
Skyvernサービス skyvern run all を再起動し、UIまたはコードからタスクを実行します。
Skyvern Cloudをローカルブラウザに接続する
Skyvern Cloudに、マシン上で実行されているChromeブラウザを制御させます。既存のCookie、ログイン情報、拡張機能がすべて含まれます。既にログインしているサイトやVPNの背後にあるサイトを自動化するのに役立ちます。
# One command to start Chrome + create a tunnel to Skyvern Cloud
skyvern browser serve --tunnel
次に、タスクでトンネルURLを使用します。
from skyvern import Skyvern
skyvern = Skyvern(api_key="your-api-key")
task = await skyvern.run_task(
prompt="Download the latest invoice from my account",
browser_address="https://abc123.ngrok-free.dev",
)
[!WARNING] トンネル経由でブラウザを公開する場合は、常に
--api-keyを使用してください。これがないと、URLを知っている誰もがブラウザを完全に制御できます。セキュリティドキュメントを参照してください。
すべてのオプション、手動トンネル設定、トラブルシューティングについては、完全なドキュメントを参照してください。
実行から一貫した出力スキーマを取得する
これは、data_extraction_schema パラメータを追加することで実行できます。
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(
prompt="Find the top post on hackernews today",
data_extraction_schema={
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The title of the top post"
},
"url": {
"type": "string",
"description": "The URL of the top post"
},
"points": {
"type": "integer",
"description": "Number of points the post has received"
}
}
}
)
問題をデバッグするための役立つコマンド
# Launch the Skyvern Server Separately*
skyvern run server
# Launch the Skyvern UI
skyvern run ui
# Check status of the Skyvern service
skyvern status
# Stop the Skyvern service
skyvern stop all
# Stop the Skyvern UI
skyvern stop ui
# Stop the Skyvern Server Separately
skyvern stop server
パフォーマンスと評価
Skyvernは、WebBenchベンチマークで64.4%の精度というSOTAパフォーマンスを達成しています。技術レポートと評価はこちらをご覧ください。
WRITEタスク(フォーム入力、ログイン、ファイルダウンロードなど)のパフォーマンス
Skyvernは、主にRPA(ロボティックプロセスオートメーション)関連タスクで使用されるWRITEタスク(フォーム入力、ログイン、ファイルダウンロードなど)において、最高のパフォーマンスを発揮するエージェントです。
Skyvernの機能
Skyvernタスク
タスクはSkyvern内部の基本的な構成要素です。各タスクはSkyvernへの単一のリクエストであり、Webサイトをナビゲートして特定の目標を達成するように指示します。
タスクには、url、prompt を指定する必要があり、オプションで data schema(出力を特定のスキーマに準拠させたい場合)や error codes(特定の状況でSkyvernの実行を停止させたい場合)を含めることができます。
Skyvernワークフロー
ワークフローは、複数のタスクを連鎖させて一貫した作業単位を形成する方法です。
例えば、1月1日以降のすべての請求書をダウンロードしたい場合、最初に請求書ページに移動し、1月1日以降の請求書のみを表示するようにフィルタリングし、対象となるすべての請求書のリストを抽出し、各請求書を繰り返し処理してダウンロードするワークフローを作成できます。
別の例として、eコマースストアからの商品購入を自動化したい場合、最初に目的の商品に移動してカートに追加するワークフローを作成できます。次に、カートに移動してカートの状態を検証します。最後に、チェックアウトプロセスを経て商品を購入します。
サポートされているワークフロー機能は次のとおりです。
- ブラウザタスク
- ブラウザアクション
- データ抽出
- 検証
- Forループ
- ファイル解析
- メール送信
- テキストプロンプト
- HTTPリクエストブロック
- カスタムコードブロック
- ブロックストレージへのファイルアップロード
- (近日公開) 条件分岐
ライブストリーミング
Skyvernを使用すると、ブラウザのビューポートをローカルマシンにライブストリーミングできるため、SkyvernがWeb上で何を行っているかを正確に確認できます。これは、SkyvernがWebサイトとどのように対話しているかをデバッグして理解し、必要に応じて介入するのに役立ちます。
フォーム入力
Skyvernは、Webサイト上のフォーム入力にネイティブに対応しています。navigation_goal を介して情報を渡すことで、Skyvernは情報を理解し、それに応じてフォームに入力できます。
データ抽出
Skyvernは、Webサイトからデータを抽出することもできます。
メインプロンプト内で data_extraction_schema を直接指定することで、Web サイトから抽出したいデータを jsonc 形式で Skyvern に正確に指示することもできます。Skyvern の出力は、指定されたスキーマに従って構造化されます。
ファイルのダウンロード
Skyvern は Web サイトからのファイルダウンロードも可能です。ダウンロードされたすべてのファイルは自動的にブロックストレージにアップロードされ(設定されている場合)、UI からアクセスできます。
認証
Skyvern は、ログインが必要なタスクの自動化を容易にするため、さまざまな認証方法をサポートしています。試してみたい場合は、メール または Discord でお問い合わせください。
🔐 2FA サポート (TOTP)
Skyvern は、2FA が必要なワークフローを自動化できるよう、さまざまな 2FA 方式をサポートしています。
例:
- QR ベースの 2FA(Google Authenticator、Authy など)
- メールベースの 2FA
- SMS ベースの 2FA
🔐 2FA サポートの詳細はこちらをご覧ください。
パスワードマネージャー連携
Skyvern は現在、以下のパスワードマネージャー連携をサポートしています:
- Bitwarden
- カスタム認証情報サービス (HTTP API)
- 1Password
- LastPass
Model Context Protocol (MCP)
Skyvern は Model Context Protocol (MCP) をサポートしており、MCP をサポートする任意の LLM を使用できます。
MCP ドキュメントはこちらをご覧ください。
Zapier / Make.com / N8N 連携
Skyvern は Zapier、Make.com、N8N をサポートしており、Skyvern ワークフローを他のアプリに接続できます。
🔐 2FA サポートの詳細はこちらをご覧ください。
Skyvern の実例
実際に Skyvern がどのように活用されているかをご紹介します。以下は、実際の現場でワークフローを自動化するために Skyvern が使用されている例です。ぜひ PR を開いて、あなたの事例を追加してください!
多様な Web サイトでの請求書ダウンロード
求人応募プロセスの自動化
製造業向け資材調達の自動化
政府系 Web サイトでのアカウント登録やフォーム入力
各種お問い合わせフォームの入力
あらゆる言語の保険会社からの保険見積もり取得
コントリビューター向けセットアップ
uv がインストールされていることを確認してください。
- 以下を実行して仮想環境を作成します (
.venv)uv sync --group dev - 初期サーバー設定を実行します
uv run skyvern quickstart - ブラウザで
http://localhost:8080にアクセスして UI を使い始めます Skyvern CLI は Windows、WSL、macOS、Linux 環境をサポートしています。
ドキュメント
より詳細なドキュメントは 📕 ドキュメントページ にあります。不明点や不足点があれば、Issue を作成するか、メール または Discord でお知らせください。
サポートされている LLM
| プロバイダー | サポートモデル |
|---|---|
| OpenAI | GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini |
| Anthropic | Claude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus) |
| Azure OpenAI | Azure サブスクリプションにデプロイされた任意の GPT モデル |
| AWS Bedrock | Claude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus) |
| Gemini | Gemini 3.1 Pro, Gemini 3 Flash, Gemini 2.5 Pro/Flash |
| Ollama | Ollama 経由でローカルホストの任意のモデルを実行 |
| OpenRouter | OpenRouter 経由でモデルにアクセス |
| OpenAI 互換 | OpenAI の API 形式に従う任意のカスタム API エンドポイント (liteLLM 経由) |
利用可能なすべてのモデルキー、環境変数、マルチモデル設定を含む詳細な LLM 設定については、LLM 設定ドキュメント を参照してください。
コントリビューション
PR や提案を歓迎します!お気軽に PR/Issue を作成するか、メール または Discord でご連絡ください。 コントリビューションガイド と "Help Wanted" Issues をご覧ください!
Skyvern リポジトリの構造、その上での構築方法、使用方法に関する質問の解決方法について概要を知りたい場合は、Code Sage をご確認ください。
テレメトリ
デフォルトでは、Skyvern は使用状況を把握するための基本的な利用統計を収集します。テレメトリをオプトアウトする場合は、環境変数 SKYVERN_TELEMETRY を false に設定してください。
ライセンス
Skyvern のオープンソースリポジトリはマネージドクラウドによってサポートされています。Skyvern を支えるコアロジックはすべてこのオープンソースリポジトリで AGPL-3.0 License の下で利用可能ですが、マネージドクラウド提供のアンチボット対策は例外です。
ライセンスに関するご質問やご不明な点がございましたら、お問い合わせ ください。喜んでサポートいたします。