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 请求组合成一个自动化的单一序列。
文档
🐉 使用 LLM 和计算机视觉自动化基于浏览器的工作流程 🐉
Skyvern 使用 LLM 和计算机视觉自动化基于浏览器的工作流程。它提供了一个与 Playwright 兼容的 SDK,在 Playwright 之上增加了 AI 功能,以及一个无代码工作流构建器,帮助技术和非技术用户在任何网站上自动化手动工作流程,取代脆弱或不可靠的自动化解决方案。
传统的浏览器自动化方法需要为网站编写自定义脚本,通常依赖于 DOM 解析和基于 XPath 的交互,一旦网站布局发生变化,这些脚本就会失效。
Skyvern 不再仅仅依赖代码定义的 XPath 交互,而是依靠视觉 LLM 来学习和与网站交互。
工作原理
Skyvern 的灵感来源于 BabyAGI 和 AutoGPT 推广的任务驱动型自主代理设计——并有一个主要优势:我们赋予 Skyvern 使用 Playwright 等浏览器自动化库与网站交互的能力。
Skyvern 使用一组代理来理解网站,并规划和执行其操作:
这种方法有几个优点:
- Skyvern 可以在从未见过的网站上运行,因为它能够将视觉元素映射到完成工作流程所需的操作,无需任何自定义代码。
- Skyvern 能够抵御网站布局的变化,因为在尝试导航时,我们的系统不会寻找预先确定的 XPath 或其他选择器。
- Skyvern 能够采用单一工作流程并将其应用于大量网站,因为它能够推理出完成工作流程所需的交互。 详细的技术报告可在此处找到:here。
演示
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
快速入门
Skyvern Cloud
Skyvern Cloud 是 Skyvern 的托管云版本,让您无需担心基础设施即可运行 Skyvern。它允许您并行运行多个 Skyvern 实例,并捆绑了反机器人检测机制、代理网络和验证码求解器。
如果您想试用,请导航到 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 是一个 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 --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 直接在页面对象上添加了四个核心 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 以通过 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:
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 浏览器——包括您的所有 cookies、登录信息和扩展程序。
第 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 浏览器——包括您所有现有的 cookies、登录信息和扩展程序。对于自动化您已登录或位于 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 基准测试 上具有 SOTA 性能,准确率达到 64.4%。技术报告和评估可在此处找到:here
WRITE 任务(例如填写表单、登录、下载文件等)的性能
Skyvern 是 WRITE 任务(例如填写表单、登录、下载文件等)中表现最佳的代理,这些任务主要用于 RPA(机器人流程自动化)相关任务。
Skyvern 功能
Skyvern 任务
任务是 Skyvern 内部的基本构建块。每个任务都是对 Skyvern 的单个请求,指示它浏览网站并完成特定目标。
任务要求您指定一个 url、prompt,并且可以选择性地包含一个 data schema(如果您希望输出符合特定模式)和 error codes(如果您希望 Skyvern 在特定情况下停止运行)。
Skyvern 工作流
工作流是将多个任务链接在一起以形成一个有凝聚力的工作单元的方式。
例如,如果您想下载所有 1 月 1 日之后的发票,您可以创建一个工作流,首先导航到发票页面,然后筛选出仅显示 1 月 1 日之后的发票,提取所有符合条件的发票列表,并遍历每张发票进行下载。
另一个例子是,如果您想自动化从电子商务商店购买产品,您可以创建一个工作流,首先导航到所需产品,然后将其添加到购物车。其次,导航到购物车并验证购物车状态。最后,通过结账流程购买商品。
支持的工作流功能包括:
- 浏览器任务
- 浏览器操作
- 数据提取
- 验证
- For 循环
- 文件解析
- 发送电子邮件
- 文本提示
- HTTP 请求块
- 自定义代码块
- 将文件上传到块存储
- (即将推出)条件语句
实时流
Skyvern 允许您将浏览器的视口实时流式传输到您的本地机器,以便您准确查看 Skyvern 在 Web 上的操作。这对于调试和理解 Skyvern 如何与网站交互以及在必要时进行干预非常有用。
表单填写
Skyvern 天生能够填写网站上的表单输入。通过 navigation_goal 传递信息将使 Skyvern 能够理解信息并相应地填写表单。
数据提取
Skyvern 也能够从网站提取数据。
你也可以在主提示中直接指定一个 data_extraction_schema,以 jsonc 格式告诉 Skyvern 你希望从网站中提取哪些数据。Skyvern 的输出将按照提供的模式进行结构化。
文件下载
Skyvern 还能够从网站下载文件。所有下载的文件都会自动上传到块存储(如果已配置),你可以通过用户界面访问它们。
身份验证
Skyvern 支持多种不同的身份验证方法,以便更轻松地自动化登录后的任务。如果你想试用,请通过电子邮件或 Discord 联系我们。
🔐 双因素认证支持(TOTP)
Skyvern 支持多种不同的双因素认证方法,让你能够自动化需要双因素认证的工作流程。
示例包括:
- 基于二维码的双因素认证(例如 Google Authenticator、Authy)
- 基于电子邮件的双因素认证
- 基于短信的双因素认证
🔐 在此处了解有关双因素认证支持的更多信息。
密码管理器集成
Skyvern 目前支持以下密码管理器集成:
- Bitwarden
- 自定义凭证服务(HTTP API)
- 1Password
- LastPass
模型上下文协议(MCP)
Skyvern 支持模型上下文协议(MCP),允许你使用任何支持 MCP 的大语言模型。
在此处查看 MCP 文档
Zapier / Make.com / N8N 集成
Skyvern 支持 Zapier、Make.com 和 N8N,让你能够将 Skyvern 工作流程连接到其他应用。
🔐 在此处了解有关双因素认证支持的更多信息。
Skyvern 的实际应用案例
我们乐于看到 Skyvern 在实际场景中的使用情况。以下是一些 Skyvern 在现实世界中自动化工作流程的示例。欢迎提交 PR 来添加你自己的示例!
在众多不同网站上自动下载发票
自动化求职申请流程
为制造企业自动化物料采购
导航至政府网站以注册账户或填写表单
填写各种随机的“联系我们”表单
从任何语言的保险提供商处获取保险报价
贡献者设置
请确保已安装 uv。
- 运行此命令以创建你的虚拟环境(
.venv)uv sync --group dev - 执行初始服务器配置
uv run skyvern quickstart - 在浏览器中导航至
http://localhost:8080以开始使用用户界面 Skyvern CLI 支持 Windows、WSL、macOS 和 Linux 环境。
文档
更详尽的文档可在我们的📕 文档页面找到。如果有任何不清楚或缺失之处,请通过开启 issue 或通过电子邮件或 Discord 联系我们。
支持的大语言模型
| 提供商 | 支持的模型 |
|---|---|
| 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) |
有关详细的大语言模型配置,包括所有可用的模型键、环境变量和多模型设置,请参阅大语言模型配置文档。
贡献
我们欢迎 PR 和建议!请随时开启 PR/issue 或通过电子邮件或 Discord 联系我们。 请查看我们的贡献指南和 “寻求帮助”的 issues 以开始!
如果你想与 Skyvern 仓库对话,以获取关于其结构、如何在其基础上构建以及如何解决使用问题的高层次概述,请查看 Code Sage。
遥测
默认情况下,Skyvern 会收集基本的使用统计数据,以帮助我们了解 Skyvern 的使用情况。如果你想退出遥测,请将 SKYVERN_TELEMETRY 环境变量设置为 false。
许可证
Skyvern 的开源仓库通过托管云提供支持。驱动 Skyvern 的所有核心逻辑均在此开源仓库中可用,并遵循 AGPL-3.0 许可证,但我们的托管云产品中提供的反机器人措施除外。
如果你对许可有任何疑问或顾虑,请联系我们,我们很乐意提供帮助。