Skyvern
官方AI驱动的浏览器自动化MCP服务器——通过Claude Code CLI导航网站、填写表单、提取数据并处理登录
你可以用 Skyvern MCP 做什么?
- 运行自然语言浏览器任务 — 让您的助手通过
page.agent.run_task()执行多步骤网页工作流,例如“查找今天 Hacker News 上的热门帖子”。 - 从页面提取结构化数据 — 使用
page.extract()并附带可选的 JSON 模式来提取特定信息,例如订单详情或产品列表。 - 执行 AI 增强的 Playwright 操作 — 使用自然语言提示而非 CSS/XPath 选择器来点击、填写、选择或上传文件,例如
page.click(prompt="点击绿色提交按钮")。 - 验证页面状态 — 使用
page.validate()检查登录状态等条件,返回布尔结果。 - 使用存储的凭据进行身份验证 — 利用
page.agent.login()通过 Skyvern、Bitwarden 或 1Password 凭据登录,并支持 2FA。 - 通过提示下载文件 — 指示
page.agent.download_files()导航并检索文件,这些文件将上传到块存储。
文档
🐉 使用 LLM 和计算机视觉自动化基于浏览器的工作流 🐉
Skyvern 使用 LLM 和计算机视觉自动化基于浏览器的工作流。它提供了一个与 Playwright 兼容的 SDK,在 playwright 之上添加了 AI 功能,同时还提供了一个无代码工作流构建器,帮助技术用户和非技术用户在任何网站上自动化手动工作流,取代脆弱或不可靠的自动化解决方案。
传统的浏览器自动化方法需要为网站编写自定义脚本,通常依赖 DOM 解析和基于 XPath 的交互,一旦网站布局发生变化,这些脚本就会失效。
Skyvern 不仅仅依赖代码定义的 XPath 交互,而是依靠视觉 LLM 来学习和与网站交互。
工作原理
Skyvern 的灵感来自 BabyAGI 和 AutoGPT 推广的任务驱动型自主代理设计——但有一个重要的额外优势:我们赋予 Skyvern 使用 Playwright 等浏览器自动化库与网站交互的能力。
Skyvern 使用一组代理(agent)来理解网站,并规划和执行其操作:
这种方法有几个优点:
- 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 / cloud API:
pip install skyvern - 本地服务器 + 打包 UI:
pip install "skyvern[all]"然后运行skyvern quickstart - 带 Postgres 的本地服务器 + 打包 UI:
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 schema 从页面提取结构化数据 |
page.validate(prompt) | 验证页面状态,返回 bool(例如“检查用户是否已登录”) |
page.prompt(prompt, schema) | 使用可选的响应 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 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 的人都可以完全控制您的浏览器。请参阅安全文档。
请参阅完整文档了解所有选项、手动隧道设置和故障排除。
从运行中获取一致的输出 schema
您可以通过添加 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%。技术报告和评估可以在此处找到
WRITE 任务上的性能(例如填写表单、登录、下载文件等)
Skyvern 是 WRITE 任务(例如填写表单、登录、下载文件等)上性能最佳的代理,这些任务主要用于 RPA(机器人流程自动化)相关的任务。
Skyvern 功能
Skyvern 任务
任务是 Skyvern 内部的基本构建块。每个任务都是对 Skyvern 的单个请求,指示它浏览网站并完成特定目标。
任务要求您指定 url、prompt,并且可以选择包含 data schema(如果您希望输出符合特定 schema)和 error codes(如果您希望 Skyvern 在特定情况下停止运行)。
Skyvern 工作流
工作流是将多个任务链接在一起以形成连贯工作单元的一种方式。
例如,如果您想下载所有晚于 1 月 1 日的发票,您可以创建一个工作流,首先导航到发票页面,然后筛选出仅显示晚于 1 月 1 日的发票,提取所有符合条件的发票列表,并遍历每张发票进行下载。
另一个例子是,如果您想自动化从电子商务商店购买产品,您可以创建一个工作流,首先导航到所需产品,然后将其添加到购物车。其次,它会导航到购物车并验证购物车状态。最后,它会通过结账流程购买商品。
支持的工作流功能包括:
- 浏览器任务
- 浏览器操作
- 数据提取
- 验证
- For 循环
- 文件解析
- 发送电子邮件
- 文本提示
- HTTP 请求块
- 自定义代码块
- 将文件上传到块存储
- (即将推出)条件语句
实时直播
Skyvern 允许您将浏览器的视口实时流式传输到本地机器,以便您准确查看 Skyvern 在网页上的操作。这对于调试和理解 Skyvern 如何与网站交互以及在必要时进行干预非常有用
表单填写
Skyvern 原生支持填写网站上的表单输入。通过 navigation_goal 传递信息,Skyvern 将能够理解这些信息并相应地填写表单。
数据提取
Skyvern 还能够从网站提取数据。
您还可以在主提示中直接指定 data_extraction_schema,以 jsonc 格式告诉 Skyvern 您希望从网站提取哪些数据。Skyvern 的输出将根据提供的模式进行结构化。
文件下载
Skyvern 还能够从网站下载文件。所有下载的文件都会自动上传到块存储(如果已配置),您可以通过 UI 访问它们。
身份验证
Skyvern 支持多种不同的身份验证方法,以便更轻松地自动化登录后的任务。如果您想尝试,请通过 电子邮件 或 Discord 与我们联系。
🔐 2FA 支持(TOTP)
Skyvern 支持多种不同的 2FA 方法,使您能够自动化需要 2FA 的工作流程。
示例包括:
- 基于二维码的 2FA(例如 Google Authenticator、Authy)
- 基于电子邮件的 2FA
- 基于短信的 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" 问题 以开始!
如果您想与 skyvern 仓库聊天,以了解其结构、如何基于它进行构建以及如何解决使用问题,请查看 Code Sage。
遥测
默认情况下,Skyvern 会收集基本的使用统计信息,以帮助我们了解 Skyvern 的使用情况。如果您希望退出遥测,请将 SKYVERN_TELEMETRY 环境变量设置为 false。
许可证
Skyvern 的开源仓库通过托管云提供支持。所有为 Skyvern 提供动力的核心逻辑均可在本开源仓库中获取,并遵循 AGPL-3.0 许可证,但我们的托管云产品中提供的反机器人措施除外。
如果您对许可有任何疑问或顾虑,请 联系我们,我们将很乐意为您提供帮助。