🐉 Automate Browser-based workflows using LLMs and Computer Vision 🐉
斯凯文 使用LLM和计算机视觉自动化基于浏览器的工作流。它提供了一个与Playwright兼容的SDK,在剧作家之上添加了AI功能,以及一个无代码工作流构建器,帮助技术和非技术用户在任何网站上自动化手动工作流,取代了脆弱或不可靠的自动化解决方案。
浏览器自动化的传统方法需要为网站编写自定义脚本,通常依赖于DOM解析和基于XPath的交互,只要网站布局发生变化,这些交互就会中断。
Skyvern不仅依赖于代码定义的XPath交互,还依赖于Vision LLM来学习和与网站交互。
运作原理
Skyvern使用一群代理来理解网站,并计划和执行其操作:
这种方法有几个优点:
- Skyvern可以在以前从未见过的网站上运行,因为它能够将视觉元素映射到完成工作流程所需的操作,而无需任何自定义代码
- Skyvern对网站布局的更改具有抵抗力,因为在尝试导航时,我们的系统没有预先确定的XPath或其他选择器
- Skyvern能够将单个工作流应用于大量网站,因为它能够推理完成工作流所需的交互
可以找到详细的技术报告 这里.
演示
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
快速入门
天飞云
天飞云 是Skyvern的托管云版本,允许您运行Skyvern而无需担心基础设施。它允许您并行运行多个Skyvern实例,并附带了反机器人检测机制、代理网络和验证码求解器。
如果你想尝试一下,请导航到 app.skyvern.com 并创建一个帐户。
本地运行(UI+服务器)
选择您喜欢的设置方法:
数据库默认值:从skyvern 1.0.31+开始,skyvern run server默认为SQLite数据库~/.skyvern/data.db因此,它无需设置Postgres即可开箱即用。要改用Postgres,请设置DATABASE_STRING在.env或通过--database-string到skyvern quickstartDocker Compose始终使用捆绑的Postgres服务。
选项A:pip安装(推荐)
所需依赖关系:
- Python 3.11.x,适用于3.12,尚未准备好用于3.13
此外,对于Windows:
- 锈
- 使用C++开发工具和Windows SDK编写VS代码
1.安装Skyvern
pip install skyvern2.运行Skyvern
skyvern quickstart选项B:Docker编写
如果您希望所有内容都容器化(Postgres、API、UI),并且不想在本地安装Python/Node,请使用此选项。
- 安装
- 克隆存储库:
git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern- 在中配置LLM提供程序
.env(thequickstart --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 --你遇到了一个已知的bug 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 skyvernpip install skyvern 无法解决(litellm/fastmcp) --您在1.0.31中遇到了依赖解决冲突。升级到1.0.32+或使用uv: uv pip install skyvern.
软件开发工具包
Skyvern是一个Playwright扩展,增加了AI驱动的浏览器自动化。 它为您提供了Playwright的全部功能以及额外的人工智能功能——使用自然语言提示与元素交互、提取数据并自动化复杂的多步骤工作流程。
安装:
- python
pip install skyvern然后运行skyvern quickstart用于本地设置 - 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操作都支持可选 prompt 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界面运行任务。
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 taskTypeScript 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
\[!提示\] 这skyvern init browser命令可以自动执行此操作,它将打开chrome://inspect/#remote-debugging,等待您启用它,并保存配置。
第二步:连接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基准测试 准确率为64.4%。可以找到技术报告+评估 这里
WRITE任务的执行情况(例如填写表格、登录、下载文件等)
Skyvern是WRITE任务(例如填写表单、登录、下载文件等)上性能最好的代理,主要用于RPA(机器人过程自动化)相邻任务。
Skyvern功能
Skyvern任务
任务是Skyvern内部的基本构建块。每个任务都是对Skyvern的单个请求,指示它浏览网站并完成特定目标。
任务要求您指定 url, prompt,并且可以可选地包括 data schema (如果您希望输出符合特定的模式)以及 error codes (如果您希望Skyvern在特定情况下停止运行)。
Skyvern工作流
工作流是一种将多个任务链接在一起以形成一个有凝聚力的工作单元的方法。
例如,如果你想下载所有1月1日之后的发票,你可以创建一个工作流,首先导航到发票页面,然后向下过滤以仅显示1月1号之后的发票、提取所有符合条件的发票列表,并迭代每个发票进行下载。
另一个例子是,如果你想从电子商务商店自动购买产品,你可以创建一个工作流,首先导航到所需的产品,然后将其添加到购物车中。其次,它将导航到购物车并验证购物车状态。最后,它将通过结账流程购买商品。
支持的工作流功能包括:
- 浏览器任务
- 浏览器操作
- 数据提取
- 验证
- for循环
- 文件解析
- 发送电子邮件
- 文本提示
- HTTP请求阻止
- 自定义代码块
- 上传文件到块存储
- (即将推出)条件
直播
Skyvern允许您将浏览器的视口实时流式传输到本地计算机,以便您可以准确地看到Skyvern在网络上正在做什么。这有助于调试和理解Skyvern如何与网站交互,并在必要时进行干预
表格填写
Skyvern天生就能够在网站上填写表单输入。通过传递信息 navigation_goal 将允许Skyvern理解信息并相应地填写表格。
数据提取
Skyvern还能够从网站中提取数据。
您还可以指定 data_extraction_schema 直接在主提示中以jsoc格式告诉Skyvern您想从网站中提取哪些数据。Skyvern的输出将根据提供的模式进行结构化。
文件下载
Skyvern还能够从网站下载文件。所有下载的文件都会自动上传到块存储(如果已配置),您可以通过UI访问它们。
认证
Skyvern支持多种不同的身份验证方法,使登录后的任务更容易自动化。如果你想试试,请联系我们 通过电子邮件 或 不和.
🔐 2FA支持(TOTP)
Skyvern支持多种不同的2FA方法,使您能够自动化需要2FA的工作流程。
示例包括:
- 基于QR的2FA(例如谷歌身份验证器、Authy)
- 基于电子邮件的2FA
- 基于短信的2FA
🔐 了解有关2FA支持的更多信息 这里.
密码管理器集成
Skyvern目前支持以下密码管理器集成:
- \[x\] Bitwarden
- \[x\] 自定义凭据服务(HTTP API)
- \[\]1密码
- \[\]LastPass
模型上下文协议(MCP)
Skyvern支持模型上下文协议(MCP),允许您使用任何支持MCP的LLM。
请参阅MCP文档 这里
Zapier/Make.com/N8N集成
Skyvern支持Zapier、Make.com和N8N,允许您将Skyvern工作流连接到其他应用程序。
🔐 了解有关2FA支持的更多信息 这里.
Skyvern的真实例子
我们喜欢看到Skyvern是如何在野外使用的。以下是一些Skyvern如何在现实世界中用于自动化工作流程的示例。请打开PR添加您自己的示例!
在许多不同的网站上下载发票
自动化工作申请流程
为制造公司实现材料采购自动化
浏览政府网站注册账户或填写表格
填写随机联系我们表格
从保险提供商处检索任何语言的保险报价
参与者设置
确保有 紫外线 安装。
- 运行此命令以创建虚拟环境(
.venv)
uv sync --group dev- 执行初始服务器配置
uv run skyvern quickstart- 导航至
http://localhost:8080在浏览器中开始使用UI
*Skyvern CLI支持Windows、WSL、macOS和Linux环境。*
文档
更多详细文档可以在我们的 📕 文档页面。如果有什么不清楚或缺失的地方,请打开问题或联系我们 通过电子邮件 或 不和.
支持的LLM
| 提供者 | 支持的型号 |
|---|---|
| OpenAI | GPT-5.5、GPT-5.4、GPT-5、GPT-4.1、o3、o4 mini |
| 人类学 | 克劳德4.7作品,克劳德4.6(十四行诗,作品),克劳德4.5(俳句,十四行歌,作品) |
| Azure OpenAI | 部署到Azure订阅的任何GPT模型 |
| AWS基岩 | 克劳德4.7,克劳德4.6(十四行诗,作品集),克劳德4.5(十四行诗,作品集中) |
| 双子座 | 双子座3.1 Pro、双子座3 Flash、双子座2.5 Pro/Flash |
| Ollama | 通过以下方式运行任何本地托管模型 奥拉玛 |
| OpenRouter | 通过访问模型 OpenRouter |
| OpenAI兼容 | 遵循OpenAI API格式的任何自定义API端点(通过 liteLLM) |
有关详细的LLM配置,包括所有可用的模型密钥、环境变量和多模型设置,请参阅 LLM配置文档.
贡献
我们欢迎PR和建议!不要犹豫,打开公关/问题或联系我们 通过电子邮件 或 不和. 请看我们的 贡献指南 和 “求助”问题 开始吧!
如果您想与skyvern存储库聊天,以了解它的结构、如何构建以及如何解决使用问题,请查看 代码圣人.
遥测
默认情况下,Skyvern会收集基本的使用统计数据,以帮助我们了解Skyvern的使用情况。如果您想选择退出遥测,请设置 SKYVERN_TELEMETRY 环境变量 false.
许可证
Skyvern的开源存储库通过托管云提供支持。Skyvern的所有核心逻辑都可以在这个开源存储库中获得,该存储库根据 AGPL-3.0许可证,但我们的托管云产品中提供的反bot措施除外。
如果您对许可有任何疑问或疑虑,请 联系我们 我们很乐意提供帮助。
明星历史

