
skyvern v1.0.47
ブラウザベースのワークフローをAIで自動化する
🐉 LLMとコンピュータビジョンを使ってブラウザベースのワークフローを自動化 🐉
Skyvern は、LLMとコンピュータビジョンを使ってブラウザベースのワークフローを自動化します。Playwright互換のSDKを提供し、Playwrightの上にAI機能を追加します。また、ノーコードのワークフロービルダーを備えており、技術者・非技術者を問わず、あらゆるWebサイトで手動ワークフローを自動化し、脆弱で信頼性の低い自動化ソリューションを置き換えることができます。
従来のブラウザ自動化のアプローチでは、Webサイトごとにカスタムスクリプトを作成する必要があり、多くの場合、DOM解析やXPathベースの操作に依存していたため、Webサイトのレイアウトが変更されるたびに動作しなくなりました。
コード定義のXPath操作のみに依存するのではなく、Skyvernは Vision LLMs を利用してWebサイトを学習し、操作を行います。
仕組み
Skyvernは、BabyAGIとAutoGPTによって普及したタスク駆動型自律エージェントの設計に触発されています。大きなボーナスとして、SkyvernにはPlaywrightなどのブラウザ自動化ライブラリを使用してWebサイトと対話する機能が与えられています。
Skyvernはエージェントの群れ(スウォーム)を使用してWebサイトを理解し、アクションを計画・実行します。
このアプローチにはいくつかの利点があります。
- Skyvernは、これまで見たことのないWebサイトでも動作できます。カスタマイズされたコードなしで、視覚要素をワークフローを完了するために必要なアクションにマッピングできるためです。
- SkyvernはWebサイトのレイアウト変更に強い耐性があります。ナビゲーション中にシステムが探す事前定義されたXPathやその他のセレクターがないためです。
- Skyvernは、単一のワークフローを多数のWebサイトに適用できます。ワークフローを完了するために必要なインタラクションを推論できるためです。
詳細な技術レポートはこちらをご覧ください。
Demo
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
クイックスタート
Skyvern Cloud
Skyvern Cloud は、インフラを気にせずに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のインストール```bash
pip install "skyvern[all]"
#### 2. Skyvernを実行する```bash
skyvern quickstart
The pip quickstart はデフォルトで SQLite を使用します。ローカルの Postgres コンテナを使用する場合は、skyvern quickstart --postgres を実行してください。
オプション B: Docker Compose
すべてをコンテナ化(Postgres、API、UI)し、Python/Node をローカルにインストールしたくない場合は、このオプションを使用します。
- Install Docker Desktop
- リポジトリをクローンします: ```bash
git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
.env内で LLM プロバイダを設定します(以下のquickstart --docker-composeコマンドで、.env.exampleが存在しない場合に作成されます): ```bash cp .env.example .env # if not already creatededit .env to add your LLM API key
- すべてを開始する: ```bash
docker compose up -d
- http://localhost:8080 を開いてください
トラブルシューティング
(sqlite3.OperationalError) table organizations already exists — あなたは pip install skyvern==1.0.31 の既知のバグに遭遇しました。修正:```bash
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を使用してインストールしてください:```bash
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", "[email protected]") | page.fill(prompt="Email field", value="[email protected]") |
| 選択 | 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 つの対話モード:```python
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コマンド - 例```python
# 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経由で実行:```bash skyvern run all
http://localhost:8080 にアクセスして、Web インターフェースからタスクを実行します。パッケージされた 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:**```python
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:```typescript 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();
**簡単なタスク実行:**```python
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にアクセスします - 有効にする をクリックしてデバッグサーバーを起動します
- 次のように表示されるはずです: Server running at: 127.0.0.1:9222
[!TIP]
skyvern init browserコマンドでこれを自動的に実行できます。chrome://inspect/#remote-debuggingを開き、有効にするのを待って、設定を保存します。
ステップ 2: Skyvern に接続する
オプション A — Python コード:```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 Service:**
.envファイルに2つの変数を追加してください:```bash
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越しのサイトの自動化に便利です。```bash
One command to start Chrome + create a tunnel to Skyvern Cloud
skyvern browser serve --tunnel
その後、タスク内でトンネルURLを使用します:```python
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パラメータを追加します:```python
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" } } } )
### デバッグに役立つコマンド```bash
# 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
Performance & Evaluation
Skyvern は WebBench benchmark において SOTA のパフォーマンスを達成し、64.4% の精度を記録しています。技術レポートと評価はこちらをご覧ください。
WRITE タスク(フォーム入力、ログイン、ファイルダウンロードなど)におけるパフォーマンス
Skyvern は WRITE タスク(フォーム入力、ログイン、ファイルダウンロードなど)において最高のパフォーマンスを発揮するエージェントであり、主に RPA(ロボティック・プロセス・オートメーション)関連タスクに使用されます。
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
- Custom Credential Service (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-compatible | OpenAI の API 形式に準拠したカスタム API エンドポイント(liteLLM 経由) |
利用可能なすべてのモデルキー、環境変数、マルチモデル設定を含む詳細な LLM 設定については、LLM 設定ドキュメント を参照してください。
コントリビューション
PR や提案を歓迎します!PR/Issue を開くか、メール または Discord までお気軽にお問い合わせください。 始めるにあたっては、コントリビューションガイド と 「Help Wanted」Issue をご覧ください!
skyvern リポジトリについて、その構造、構築方法、使用上の質問の解決方法についてハイレベルな概要を把握するには、Code Sage をご確認ください。
テレメトリー
デフォルトでは、Skyvern は基本的な使用状況統計を収集し、Skyvern の利用方法を理解するのに役立てています。テレメトリーをオプトアウトする場合は、SKYVERN_TELEMETRY 環境変数を false に設定してください。
ライセンス
Skyvern のオープンソースリポジトリは、マネージドクラウドを通じてサポートされています。Skyvern を動かすすべてのコアロジックは、このオープンソースリポジトリで AGPL-3.0 ライセンス の下で利用可能ですが、マネージドクラウドサービスで提供されるアンチボット対策は除きます。
ライセンスに関するご質問やご不明な点がございましたら、お問い合わせください。喜んでお手伝いいたします。