关于 Skyvern Advanced Browser Automation
Skyvern 是基于 LLM 与计算机视觉的浏览器自动化项目,提供兼容 Playwright 的 SDK 和无代码工作流构建器。它面向需要在任意网站上自动完成重复操作的开发者与非技术用户,不依赖固定 XPath,网站布局变化后仍可工作。
主要功能
- 01兼容 Playwright 的 AI SDK
- 02自然语言驱动的页面操作
- 03结构化数据提取
- 04无代码工作流构建器
- 05基于视觉的元素定位
- 06可通过 pip 或 Docker 本地运行
适用场景
- 01在没有固定脚本的网站上批量填写表单
- 02从网页中提取结构化订单或商品信息
- 03自动登录并下载账单等文件
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.skyvern.com/mcp/claude mcp add --transport http skyvern https://api.skyvern.com/mcp/{"mcpServers":{"skyvern":{"type":"http","url":"https://api.skyvern.com/mcp/"}}}在 Cursor 中打开{"servers":{"skyvern":{"type":"http","url":"https://api.skyvern.com/mcp/"}}}在 VS Code 中打开{"mcpServers":{"skyvern":{"type":"http","url":"https://api.skyvern.com/mcp/"}}}{"mcpServers":{"skyvern":{"serverUrl":"https://api.skyvern.com/mcp/"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://api.skyvern.com/mcp/需要授权工具
详细介绍
🐉 使用大模型和计算机视觉自动化浏览器工作流 🐉
Skyvern 使用大模型和计算机视觉自动化浏览器工作流。它提供兼容 Playwright 的 SDK,在 Playwright 的基础上添加 AI 功能;还提供无代码工作流构建器,帮助技术和非技术用户在任何网站上自动化手动工作流,取代脆弱或不可靠的自动化解决方案。
传统的浏览器自动化方法需要针对网站编写自定义脚本,通常依赖 DOM 解析和基于 XPath 的交互;网站布局一旦变化,这些脚本就会失效。
Skyvern 不再只依赖代码定义的 XPath 交互,而是依靠视觉大模型来学习网站并与之交互。
工作原理
Skyvern 的灵感来自 BabyAGI 和 AutoGPT 推广的任务驱动型自主 Agent 设计——并有一项重要优势:我们让 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 提供商(如果.env不存在,下面的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 是一个为浏览器自动化添加了 AI 功能的 Playwright 扩展。 它在提供完整 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", "[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") |
三种交互模式:
# 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 包。
若要仅使用打包的 UI 连接现有的 Skyvern API,请安装 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 - 点击 Enable,启动调试服务
- 你应该会看到:Server running at: 127.0.0.1:9222
提示
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",
)
警告
通过隧道公开浏览器时,务必使用
--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%。技术报告和评估结果见此处
WRITE 任务的性能(例如填写表单、登录、下载文件等)
Skyvern 是 WRITE 任务(例如填写表单、登录、下载文件等)中表现最佳的 Agent,这类任务主要用于与 RPA(机器人流程自动化)相关的工作。
Skyvern 功能
Skyvern 任务
任务是 Skyvern 中的基本构建单元。每个任务都是向 Skyvern 发出的单个请求,指示它浏览网站并完成特定目标。
任务需要指定 url、prompt,还可以选择包含 data schema(如果你希望输出符合特定架构)和 error codes(如果你希望 Skyvern 在特定情况下停止运行)。
Skyvern 工作流
工作流可以将多个任务串联起来,组成一个连贯的工作单元。
例如,如果你想下载 1 月 1 日之后的所有发票,可以创建一个工作流:先导航到发票页面,然后筛选出 1 月 1 日之后的发票,提取所有符合条件的发票列表,再逐个遍历并下载每张发票。
另一个例子是,如果你想自动购买电商网站上的商品,可以创建一个工作流:先导航到目标商品页面,然后将其加入购物车。接着,导航到购物车并验证购物车状态。最后,完成结账流程并购买商品。
支持的工作流功能包括:
- 浏览器任务
- 浏览器操作
- 数据提取
- 验证
- For 循环
- 文件解析
- 发送邮件
- 文本提示词
- HTTP 请求块
- 自定义代码块
- 将文件上传到块存储 1.(即将推出)条件判断
实时直播
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
Model Context Protocol(MCP)
Skyvern 支持 Model Context Protocol(MCP),让你可以使用任何支持 MCP 的大模型。
请参阅 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 联系我们。
支持的大模型
| Provider | Supported Models |
|---|---|
| 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) |
有关详细的大模型配置(包括所有可用的模型 key、环境变量和多模型设置),请参阅 LLM 配置文档。
贡献
欢迎提交 PR 和建议!欢迎随时提交 PR/issue,或通过电子邮件或 discord 联系我们。 请查看我们的贡献指南和 “需要帮助”议题,了解如何开始!
如果你想与 skyvern 仓库交流,深入了解其结构、如何基于它进行构建以及如何解决使用问题,请查看 Code Sage。
遥测
默认情况下,Skyvern 会收集基本使用统计信息,以帮助我们了解 Skyvern 的使用情况。如果你想选择退出遥测,请将 SKYVERN_TELEMETRY 环境变量设置为 false。
许可证
Skyvern 的开源仓库由托管云提供支持。驱动 Skyvern 的所有核心逻辑都可在此开源仓库中获取,并依据 AGPL-3.0 License 授权,但托管云服务中提供的反机器人措施除外。
如果你对许可证有任何疑问或顾虑,请联系我们,我们很乐意提供帮助。
Star 历史
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。