mcpField
S
Skyvern   Advanced Browser Automation

Skyvern Advanced Browser Automation

远程服务
github.com/Skyvern-AI浏览器自动化23.3k1 天前更新
代码仓库

关于 Skyvern Advanced Browser Automation

Skyvern 是基于 LLM 与计算机视觉的浏览器自动化项目,提供兼容 Playwright 的 SDK 和无代码工作流构建器。它面向需要在任意网站上自动完成重复操作的开发者与非技术用户,不依赖固定 XPath,网站布局变化后仍可工作。

主要功能

  1. 01兼容 Playwright 的 AI SDK
  2. 02自然语言驱动的页面操作
  3. 03结构化数据提取
  4. 04无代码工作流构建器
  5. 05基于视觉的元素定位
  6. 06可通过 pip 或 Docker 本地运行

适用场景

  1. 01在没有固定脚本的网站上批量填写表单
  2. 02从网页中提取结构化订单或商品信息
  3. 03自动登录并下载账单等文件

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://api.skyvern.com/mcp/
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://api.skyvern.com/mcp/需要授权

工具

详细介绍

README 配图

🐉 使用大模型和计算机视觉自动化浏览器工作流 🐉

README 配图 README 配图 README 配图

README 配图 README 配图 README 配图 README 配图

Skyvern 使用大模型和计算机视觉自动化浏览器工作流。它提供兼容 Playwright 的 SDK,在 Playwright 的基础上添加 AI 功能;还提供无代码工作流构建器,帮助技术和非技术用户在任何网站上自动化手动工作流,取代脆弱或不可靠的自动化解决方案。

README 配图

传统的浏览器自动化方法需要针对网站编写自定义脚本,通常依赖 DOM 解析和基于 XPath 的交互;网站布局一旦变化,这些脚本就会失效。

Skyvern 不再只依赖代码定义的 XPath 交互,而是依靠视觉大模型来学习网站并与之交互。

工作原理

Skyvern 的灵感来自 BabyAGI 和 AutoGPT 推广的任务驱动型自主 Agent 设计——并有一项重要优势:我们让 Skyvern 能够使用 Playwright 等浏览器自动化库与网站交互。

Skyvern 使用一群 Agent 来理解网站,并规划和执行操作:

README 配图

这种方法有以下几个优点:

  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 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,请选择此选项。

  1. 安装 Docker Desktop
  2. 克隆代码仓库:
    git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
    
  3. 在 .env 中配置你的 LLM 提供商(如果 .env 不存在,下面的 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 是一个为浏览器自动化添加了 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 定位元素:

操作PlaywrightAI 增强型
点击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 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. 点击 Enable,启动调试服务
  3. 你应该会看到: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%。技术报告和评估结果见此处

README 配图

WRITE 任务的性能(例如填写表单、登录、下载文件等)

Skyvern 是 WRITE 任务(例如填写表单、登录、下载文件等)中表现最佳的 Agent,这类任务主要用于与 RPA(机器人流程自动化)相关的工作。

README 配图

Skyvern 功能

Skyvern 任务

任务是 Skyvern 中的基本构建单元。每个任务都是向 Skyvern 发出的单个请求,指示它浏览网站并完成特定目标。

任务需要指定 url、prompt,还可以选择包含 data schema(如果你希望输出符合特定架构)和 error codes(如果你希望 Skyvern 在特定情况下停止运行)。

README 配图

Skyvern 工作流

工作流可以将多个任务串联起来,组成一个连贯的工作单元。

例如,如果你想下载 1 月 1 日之后的所有发票,可以创建一个工作流:先导航到发票页面,然后筛选出 1 月 1 日之后的发票,提取所有符合条件的发票列表,再逐个遍历并下载每张发票。

另一个例子是,如果你想自动购买电商网站上的商品,可以创建一个工作流:先导航到目标商品页面,然后将其加入购物车。接着,导航到购物车并验证购物车状态。最后,完成结账流程并购买商品。

支持的工作流功能包括:

  1. 浏览器任务
  2. 浏览器操作
  3. 数据提取
  4. 验证
  5. For 循环
  6. 文件解析
  7. 发送邮件
  8. 文本提示词
  9. HTTP 请求块
  10. 自定义代码块
  11. 将文件上传到块存储 1.(即将推出)条件判断

README 配图

实时直播

Skyvern 支持将浏览器视口实时直播到本地机器,让你准确查看 Skyvern 在网上执行的操作。这有助于调试和了解 Skyvern 如何与网站交互,并在必要时介入。

表单填写

Skyvern 原生支持填写网站上的表单输入项。通过 navigation_goal 传入信息后,Skyvern 会理解这些信息并据此填写表单。

数据提取

Skyvern 也能够从网站提取数据。

你也可以直接在主提示词中指定 data_extraction_schema,以 JSONC 格式告知 Skyvern 你想从网站提取哪些数据。Skyvern 的输出将按照提供的架构进行结构化。

文件下载

Skyvern 也能够从网站下载文件。所有下载的文件都会自动上传到块存储(如果已配置),你可以通过 UI 访问这些文件。

身份验证

Skyvern 支持多种身份验证方式,让自动化登录后才能执行的任务更加轻松。如果你想试用,请通过电子邮件或 discord 联系我们。

README 配图

🔐 2FA 支持(TOTP)

Skyvern 支持多种 2FA 方式,以便你自动化需要 2FA 的工作流。

例如:

  1. 基于 QR 码的 2FA(例如 Google Authenticator、Authy)
  2. 基于电子邮件的 2FA
  3. 基于 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,添加你自己的示例!

在许多不同的网站上下载发票

预约演示,观看实际操作

README 配图

自动化求职申请流程

💡 查看实际效果

README 配图

自动化制造公司的物料采购

💡 查看实际效果

README 配图

访问政府网站注册账户或填写表单

💡 查看实际效果

README 配图

填写各种“联系我们”表单

💡 查看实际效果

README 配图

使用任何语言向保险服务商获取保险报价

💡 查看实际效果

README 配图

💡 查看实际效果

README 配图

贡献者环境配置

请确保已安装 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 联系我们。

支持的大模型

ProviderSupported Models
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-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 历史

Star 历史图表

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。