Skyvern

官方

AI驅動的瀏覽器自動化MCP伺服器 — 透過Claude Code CLI導航網站、填寫表單、提取資料及處理登入

你可以用 Skyvern MCP 做什麼?

  • 執行自然語言瀏覽器任務 — 讓您的助理透過 page.agent.run_task() 執行多步驟的網頁工作流程,例如「找出今天 Hacker News 上的熱門貼文」。
  • 從頁面提取結構化資料 — 使用 page.extract() 搭配可選的 JSON schema 來提取特定資訊,例如訂單詳細資料或產品列表。
  • 執行 AI 增強的 Playwright 操作 — 使用自然語言提示詞(而非 CSS/XPath 選擇器)來點擊、填寫、選取或上傳檔案,例如 page.click(prompt="Click the green Submit button")
  • 驗證頁面狀態 — 使用 page.validate() 檢查登入狀態等條件,並回傳布林值結果。
  • 使用儲存的憑證進行驗證 — 利用 page.agent.login() 使用 Skyvern、Bitwarden 或 1Password 的憑證登入,並支援 2FA。
  • 透過提示詞下載檔案 — 指示 page.agent.download_files() 導覽並擷取檔案,這些檔案會上傳至區塊儲存。

文件


🐉 使用 LLM 和電腦視覺自動化瀏覽器工作流程 🐉

Skyvern 使用 LLM 和電腦視覺自動化瀏覽器工作流程。它提供一個與 Playwright 相容的 SDK,在 Playwright 之上加入 AI 功能,以及一個無程式碼工作流程建置器,幫助技術與非技術使用者自動化任何網站上的手動工作流程,取代脆弱或不可靠的自動化解決方案。

傳統的瀏覽器自動化方法需要為網站編寫自訂指令碼,通常依賴 DOM 解析和基於 XPath 的互動,而這些在網站版面變更時就會失效。

Skyvern 不只依賴程式碼定義的 XPath 互動,而是依靠 Vision LLM 來學習並與網站互動。

運作方式

Skyvern 的靈感來自於 BabyAGIAutoGPT 所推廣的任務驅動自主代理設計——但有一個重大優勢:我們賦予 Skyvern 使用瀏覽器自動化函式庫(如 Playwright)與網站互動的能力。

Skyvern 使用一群代理來理解網站,並規劃和執行其動作:

這種方法有幾個優點:

  1. Skyvern 可以在從未見過的網站上運作,因為它能將視覺元素對應到完成工作流程所需的動作,無需任何自訂程式碼
  2. Skyvern 對網站版面變更具有抵抗力,因為在嘗試導覽時,系統不會尋找任何預先定義的 XPath 或其他選擇器
  3. Skyvern 能夠將單一工作流程套用至大量網站,因為它能推理完成工作流程所需的互動 詳細的技術報告可以在此處找到。

示範

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,請為現有資料庫傳遞 --database-string(或省略 --no-postgres,讓 quickstart 啟動自己的 Postgres 容器)。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(除非您傳遞 --no-postgres,否則會啟動 Postgres 容器),或使用 --database-string=postgresql+psycopg://user:pass@host:5432/dbname 連接到現有資料庫。

選項 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 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 是 Playwright 的擴充,新增了 AI 驅動的瀏覽器自動化。 它提供 Playwright 的完整功能,並加入額外的 AI 能力——使用自然語言提示與元素互動、擷取資料,以及自動化複雜的多步驟工作流程。

安裝:

  • Python SDK / 雲端 API:pip install skyvern
  • 本機伺服器 + 封裝的 UI:pip install "skyvern[all]" 然後執行 skyvern quickstart
  • 本機伺服器 + 封裝的 UI(含 Postgres):pip install "skyvern[all]" 然後執行 skyvern quickstart --database-string=postgresql+psycopg://user:pass@host:5432/dbname
  • 針對現有 API 的封裝 UI:pip install "skyvern[ui]" 然後設定 VITE_API_BASE_URL(如果您的 API 需要金鑰,則設定 VITE_SKYVERN_API_KEY)並執行 skyvern run ui
  • TypeScript:npm install @skyvern/client

AI 驅動的頁面指令

Skyvern 在頁面物件上直接新增四個核心 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 動作都支援可選的 prompt 參數,用於 AI 驅動的元素定位:

動作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")

三種互動模式:

# 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

前往 http://localhost:8080 透過網頁介面執行任務。如果封裝的 UI 遺失,skyvern run ui 會提供安裝相符 UI 套件的選項。

若要僅針對現有的 Skyvern API 執行封裝的 UI,請安裝 skyvern[ui] 並在執行 skyvern run ui 之前設定下列環境變數:

  • VITE_API_BASE_URL(例如 http://localhost:8000/api/v1)— 將 UI 指向您的 Skyvern API
  • VITE_SKYVERN_API_KEY — 如果您的 API 需要金鑰,則為 API 金鑰
  • VITE_WSS_BASE_URL — WebSocket 端點(若未設定,則從 VITE_API_BASE_URL 推斷)
  • VITE_ARTIFACT_API_BASE_URL — 成品下載的基礎 URL
  • 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. 點擊 啟用 以啟動偵錯伺服器
  3. 您應該會看到:伺服器執行於: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 檔案中新增兩個變數:

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 benchmark 上擁有 SOTA 效能,準確率達 64.4%。技術報告和評估可以在此處找到

在 WRITE 任務上的效能(例如填寫表單、登入、下載檔案等)

Skyvern 是 WRITE 任務(例如填寫表單、登入、下載檔案等)中表現最佳的代理,這類任務主要用於 RPA(機器人流程自動化)相關工作。

Skyvern 功能

Skyvern 任務

任務是 Skyvern 內部的基礎建置區塊。每個任務都是對 Skyvern 的單一請求,指示它導覽網站並達成特定目標。

任務要求您指定 urlprompt,並可選擇包含 data schema(如果您希望輸出符合特定結構)和 error codes(如果您希望 Skyvern 在特定情況下停止執行)。

Skyvern 工作流程

工作流程是將多個任務串連在一起,形成一個完整工作單元的方式。

例如,如果您想下載所有晚於 1 月 1 日的發票,您可以建立一個工作流程,先導覽至發票頁面,然後篩選出僅顯示晚於 1 月 1 日的發票,擷取所有符合條件的發票清單,並逐一迭代下載每張發票。

另一個例子是,如果您想自動化從電子商務商店購買產品,您可以建立一個工作流程,先導覽至所需產品,然後將其加入購物車。接著,它會導覽至購物車並驗證購物車狀態。最後,它會完成結帳流程以購買商品。

支援的工作流程功能包括:

  1. 瀏覽器任務
  2. 瀏覽器動作
  3. 資料擷取
  4. 驗證
  5. 迴圈
  6. 檔案解析
  7. 傳送電子郵件
  8. 文字提示
  9. HTTP 請求區塊
  10. 自訂程式碼區塊
  11. 上傳檔案到區塊儲存
  12. (即將推出)條件判斷

即時串流

Skyvern 允許您將瀏覽器視窗即時串流到本機機器,以便您確切看到 Skyvern 在網路上執行的操作。這對於除錯、了解 Skyvern 如何與網站互動,以及在必要時介入非常有用

表單填寫

Skyvern 原生支援填寫網站上的表單輸入。透過 navigation_goal 傳入資訊,Skyvern 就能理解資訊並相應地填寫表單。

資料擷取

Skyvern 也能從網站擷取資料。

您也可以在主提示中直接指定 data_extraction_schema,以 jsonc 格式告訴 Skyvern 您想從網站擷取哪些資料。Skyvern 的輸出將依照提供的結構進行組織。

檔案下載

Skyvern 也能從網站下載檔案。所有下載的檔案都會自動上傳至區塊儲存(若已設定),您可以透過 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

模型上下文協定(MCP)

Skyvern 支援模型上下文協定(MCP),讓您可以使用任何支援 MCP 的 LLM。

請參閱 MCP 文件請點此

Zapier / Make.com / N8N 整合

Skyvern 支援 Zapier、Make.com 和 N8N,讓您能將 Skyvern 工作流程連接到其他應用程式。

🔐 進一步了解 2FA 支援請點此

Skyvern 的實際應用範例

我們很樂於看到 Skyvern 在實際環境中的應用。以下是一些 Skyvern 在真實世界中自動化工作流程的範例。歡迎開啟 PR 來加入您自己的範例!

在許多不同網站下載發票

預約示範以觀看實際運作

自動化求職申請流程

💡 觀看實際運作

為製造公司自動化物料採購

💡 觀看實際運作

瀏覽政府網站以註冊帳戶或填寫表單

💡 觀看實際運作

填寫隨機的聯絡我們表單

💡 觀看實際運作

從保險供應商以任何語言取得保險報價

💡 觀看實際運作

💡 觀看實際運作

貢獻者設定

請確保已安裝 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 OpenAI部署到您 Azure 訂閱的任何 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
Ollama透過 Ollama 執行任何本機託管的模型
OpenRouter透過 OpenRouter 存取模型
OpenAI 相容任何遵循 OpenAI API 格式的自訂 API 端點(透過 liteLLM

如需詳細的 LLM 設定,包括所有可用的模型金鑰、環境變數和多模型設定,請參閱 LLM 設定文件

貢獻

我們歡迎 PR 和建議!請隨時開啟 PR/issue,或透過電子郵件Discord 與我們聯繫。 請查看我們的貢獻指南「Help Wanted」issues 以開始!

如果您想與 skyvern 儲存庫對話,以了解其結構、如何在其基礎上建置,以及如何解決使用問題,請查看 Code Sage

遙測

預設情況下,Skyvern 會收集基本的使用統計資料,以幫助我們了解 Skyvern 的使用情況。如果您想退出遙測,請將 SKYVERN_TELEMETRY 環境變數設為 false

授權

Skyvern 的開源儲存庫透過受管雲端提供支援。所有驅動 Skyvern 的核心邏輯都可在此開源儲存庫中取得,並以 AGPL-3.0 授權 授權,但我們受管雲端服務中提供的反機器人措施除外。

如果您對授權有任何疑問或疑慮,請聯絡我們,我們很樂意提供協助。

Star 歷史

Star History Chart