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 的靈感來自於 BabyAGI 和 AutoGPT 所推廣的任務驅動自主代理設計——但有一個重大優勢:我們賦予 Skyvern 使用瀏覽器自動化函式庫(如 Playwright)與網站互動的能力。
Skyvern 使用一群代理來理解網站,並規劃和執行其動作:
這種方法有幾個優點:
- Skyvern 可以在從未見過的網站上運作,因為它能將視覺元素對應到完成工作流程所需的動作,無需任何自訂程式碼
- Skyvern 對網站版面變更具有抵抗力,因為在嘗試導覽時,系統不會尋找任何預先定義的 XPath 或其他選擇器
- 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 quickstart和skyvern 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,請使用此選項。
- 安裝 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 是 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 驅動的元素定位:
| 動作 | 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") |
三種互動模式:
# 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 APIVITE_SKYVERN_API_KEY— 如果您的 API 需要金鑰,則為 API 金鑰VITE_WSS_BASE_URL— WebSocket 端點(若未設定,則從VITE_API_BASE_URL推斷)VITE_ARTIFACT_API_BASE_URL— 成品下載的基礎 URLVITE_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 - 點擊 啟用 以啟動偵錯伺服器
- 您應該會看到:伺服器執行於: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 的單一請求,指示它導覽網站並達成特定目標。
任務要求您指定 url、prompt,並可選擇包含 data schema(如果您希望輸出符合特定結構)和 error codes(如果您希望 Skyvern 在特定情況下停止執行)。
Skyvern 工作流程
工作流程是將多個任務串連在一起,形成一個完整工作單元的方式。
例如,如果您想下載所有晚於 1 月 1 日的發票,您可以建立一個工作流程,先導覽至發票頁面,然後篩選出僅顯示晚於 1 月 1 日的發票,擷取所有符合條件的發票清單,並逐一迭代下載每張發票。
另一個例子是,如果您想自動化從電子商務商店購買產品,您可以建立一個工作流程,先導覽至所需產品,然後將其加入購物車。接著,它會導覽至購物車並驗證購物車狀態。最後,它會完成結帳流程以購買商品。
支援的工作流程功能包括:
- 瀏覽器任務
- 瀏覽器動作
- 資料擷取
- 驗證
- 迴圈
- 檔案解析
- 傳送電子郵件
- 文字提示
- HTTP 請求區塊
- 自訂程式碼區塊
- 上傳檔案到區塊儲存
- (即將推出)條件判斷
即時串流
Skyvern 允許您將瀏覽器視窗即時串流到本機機器,以便您確切看到 Skyvern 在網路上執行的操作。這對於除錯、了解 Skyvern 如何與網站互動,以及在必要時介入非常有用
表單填寫
Skyvern 原生支援填寫網站上的表單輸入。透過 navigation_goal 傳入資訊,Skyvern 就能理解資訊並相應地填寫表單。
資料擷取
Skyvern 也能從網站擷取資料。
您也可以在主提示中直接指定 data_extraction_schema,以 jsonc 格式告訴 Skyvern 您想從網站擷取哪些資料。Skyvern 的輸出將依照提供的結構進行組織。
檔案下載
Skyvern 也能從網站下載檔案。所有下載的檔案都會自動上傳至區塊儲存(若已設定),您可以透過 UI 存取。
驗證
Skyvern 支援多種不同的驗證方法,讓您更輕鬆地自動化登入後的任務。如果您想試用,請透過電子郵件或 Discord 與我們聯繫。
🔐 2FA 支援(TOTP)
Skyvern 支援多種不同的 2FA 方法,讓您能自動化需要 2FA 的工作流程。
範例包括:
- 基於 QR 的 2FA(例如 Google Authenticator、Authy)
- 基於電子郵件的 2FA
- 基於 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。
- 執行此指令以建立您的虛擬環境(
.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 的使用情況。如果您想退出遙測,請將 SKYVERN_TELEMETRY 環境變數設為 false。
授權
Skyvern 的開源儲存庫透過受管雲端提供支援。所有驅動 Skyvern 的核心邏輯都可在此開源儲存庫中取得,並以 AGPL-3.0 授權 授權,但我們受管雲端服務中提供的反機器人措施除外。
如果您對授權有任何疑問或疑慮,請聯絡我們,我們很樂意提供協助。