Skyvern

公式

AI駆動のブラウザ自動化MCPサーバー — Claude Code CLI経由でサイトのナビゲーション、フォーム入力、データ抽出、ログイン処理を実行

Skyvern MCPで何ができますか?

  • 自然言語のプロンプトからブラウザタスクを実行skyvern.run_task を使用してウェブサイトを操作し、「今日のHackerNewsのトップ投稿を見つける」などの目標を達成します。

  • スキーマを使用して構造化データを抽出data_extraction_schemaskyvern.run_task に渡すと、定義したプロパティに一致する一貫性のあるJSON出力が得られます。

  • 自分のChromeブラウザを制御 — リモートデバッグを介してSkyvernをローカルのChromeインスタンスに接続し、既存のCookieとログインを使用してサイトを自動化します。

  • AIを活用したページ操作を実行page.actpage.extractpage.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は、BabyAGIAutoGPTによって普及したタスク駆動型自律エージェントの設計に着想を得ています。大きな利点は、Playwrightのようなブラウザ自動化ライブラリを使用してWebサイトと対話する機能をSkyvernに付与している点です。

Skyvernはエージェントの群れを使用してWebサイトを理解し、アクションを計画・実行します。

このアプローチにはいくつかの利点があります。

  1. Skyvernは、カスタマイズされたコードなしで、視覚要素をワークフロー完了に必要なアクションにマッピングできるため、初めて見るWebサイトでも操作できます。
  2. Skyvernは、ナビゲーション時にシステムが探す事前定義されたXPathやその他のセレクターがないため、Webサイトのレイアウト変更に耐性があります。
  3. 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 quickstartskyvern 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をローカルにインストールしたくない場合は、このオプションを使用します。

  1. Docker Desktopをインストールします。
  2. リポジトリをクローンします。
    git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
    
  3. .env でLLMプロバイダーを設定します(以下の quickstart --docker-compose コマンドは、存在しない場合に .env.example から作成します)。
    cp .env.example .env  # if not already created
    # edit .env to add your LLM API key
    
  4. すべてを起動します。
    docker compose up -d
    
  5. http://localhost:8080 を開きます。

トラブルシューティング

(sqlite3.OperationalError) table organizations already existspip 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 パラメータをサポートしています。

アクションPlaywrightAI拡張
クリック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_URLVITE_WSS_BASE_URLVITE_ARTIFACT_API_BASE_URLVITE_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でリモートデバッグを有効にする

  1. Chromeを開き、chrome://inspect/#remote-debugging に移動します。
  2. Enable をクリックしてデバッグサーバーを起動します。
  3. 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サイトをナビゲートして特定の目標を達成するように指示します。

タスクには、urlprompt を指定する必要があり、オプションで data schema(出力を特定のスキーマに準拠させたい場合)や error codes(特定の状況でSkyvernの実行を停止させたい場合)を含めることができます。

Skyvernワークフロー

ワークフローは、複数のタスクを連鎖させて一貫した作業単位を形成する方法です。

例えば、1月1日以降のすべての請求書をダウンロードしたい場合、最初に請求書ページに移動し、1月1日以降の請求書のみを表示するようにフィルタリングし、対象となるすべての請求書のリストを抽出し、各請求書を繰り返し処理してダウンロードするワークフローを作成できます。

別の例として、eコマースストアからの商品購入を自動化したい場合、最初に目的の商品に移動してカートに追加するワークフローを作成できます。次に、カートに移動してカートの状態を検証します。最後に、チェックアウトプロセスを経て商品を購入します。

サポートされているワークフロー機能は次のとおりです。

  1. ブラウザタスク
  2. ブラウザアクション
  3. データ抽出
  4. 検証
  5. Forループ
  6. ファイル解析
  7. メール送信
  8. テキストプロンプト
  9. HTTPリクエストブロック
  10. カスタムコードブロック
  11. ブロックストレージへのファイルアップロード
  12. (近日公開) 条件分岐

ライブストリーミング

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 方式をサポートしています。

例:

  1. QR ベースの 2FA(Google Authenticator、Authy など)
  2. メールベースの 2FA
  3. 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 がインストールされていることを確認してください。

  1. 以下を実行して仮想環境を作成します (.venv)
    uv sync --group dev
    
  2. 初期サーバー設定を実行します
    uv run skyvern quickstart
    
  3. ブラウザで http://localhost:8080 にアクセスして UI を使い始めます Skyvern CLI は Windows、WSL、macOS、Linux 環境をサポートしています。

ドキュメント

より詳細なドキュメントは 📕 ドキュメントページ にあります。不明点や不足点があれば、Issue を作成するか、メール または Discord でお知らせください。

サポートされている LLM

プロバイダーサポートモデル
OpenAIGPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini
AnthropicClaude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus)
Azure OpenAIAzure サブスクリプションにデプロイされた任意の GPT モデル
AWS BedrockClaude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus)
GeminiGemini 3.1 Pro, Gemini 3 Flash, Gemini 2.5 Pro/Flash
OllamaOllama 経由でローカルホストの任意のモデルを実行
OpenRouterOpenRouter 経由でモデルにアクセス
OpenAI 互換OpenAI の API 形式に従う任意のカスタム API エンドポイント (liteLLM 経由)

利用可能なすべてのモデルキー、環境変数、マルチモデル設定を含む詳細な LLM 設定については、LLM 設定ドキュメント を参照してください。

コントリビューション

PR や提案を歓迎します!お気軽に PR/Issue を作成するか、メール または Discord でご連絡ください。 コントリビューションガイド"Help Wanted" Issues をご覧ください!

Skyvern リポジトリの構造、その上での構築方法、使用方法に関する質問の解決方法について概要を知りたい場合は、Code Sage をご確認ください。

テレメトリ

デフォルトでは、Skyvern は使用状況を把握するための基本的な利用統計を収集します。テレメトリをオプトアウトする場合は、環境変数 SKYVERN_TELEMETRYfalse に設定してください。

ライセンス

Skyvern のオープンソースリポジトリはマネージドクラウドによってサポートされています。Skyvern を支えるコアロジックはすべてこのオープンソースリポジトリで AGPL-3.0 License の下で利用可能ですが、マネージドクラウド提供のアンチボット対策は例外です。

ライセンスに関するご質問やご不明な点がございましたら、お問い合わせ ください。喜んでサポートいたします。

スター履歴

Star History Chart