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 的灵感来自 BabyAGIAutoGPT 推广的任务驱动型自主代理设计——但有一个重要的额外优势:我们赋予 Skyvern 使用 Playwright 等浏览器自动化库与网站交互的能力。

Skyvern 使用一组代理(agent)来理解网站,并规划和执行其操作:

这种方法有几个优点:

  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 / 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 驱动的元素定位:

操作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 通过 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 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 的人都可以完全控制您的浏览器。请参阅安全文档

请参阅完整文档了解所有选项、手动隧道设置和故障排除。

从运行中获取一致的输出 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 的单个请求,指示它浏览网站并完成特定目标。

任务要求您指定 urlprompt,并且可以选择包含 data schema(如果您希望输出符合特定 schema)和 error codes(如果您希望 Skyvern 在特定情况下停止运行)。

Skyvern 工作流

工作流是将多个任务链接在一起以形成连贯工作单元的一种方式。

例如,如果您想下载所有晚于 1 月 1 日的发票,您可以创建一个工作流,首先导航到发票页面,然后筛选出仅显示晚于 1 月 1 日的发票,提取所有符合条件的发票列表,并遍历每张发票进行下载。

另一个例子是,如果您想自动化从电子商务商店购买产品,您可以创建一个工作流,首先导航到所需产品,然后将其添加到购物车。其次,它会导航到购物车并验证购物车状态。最后,它会通过结账流程购买商品。

支持的工作流功能包括:

  1. 浏览器任务
  2. 浏览器操作
  3. 数据提取
  4. 验证
  5. For 循环
  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. 基于二维码的 2FA(例如 Google Authenticator、Authy)
  2. 基于电子邮件的 2FA
  3. 基于短信的 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" 问题 以开始!

如果您想与 skyvern 仓库聊天,以了解其结构、如何基于它进行构建以及如何解决使用问题,请查看 Code Sage

遥测

默认情况下,Skyvern 会收集基本的使用统计信息,以帮助我们了解 Skyvern 的使用情况。如果您希望退出遥测,请将 SKYVERN_TELEMETRY 环境变量设置为 false

许可证

Skyvern 的开源仓库通过托管云提供支持。所有为 Skyvern 提供动力的核心逻辑均可在本开源仓库中获取,并遵循 AGPL-3.0 许可证,但我们的托管云产品中提供的反机器人措施除外。

如果您对许可有任何疑问或顾虑,请 联系我们,我们将很乐意为您提供帮助。

Star 历史

Star History Chart