什么是 Skyvern?

Skyvern 是一个革命性的浏览器自动化平台,它使用大语言模型(LLM)和计算机视觉技术来理解和操作网页,无需编写传统的 XPath 或 CSS 选择器脚本。

🎯 核心优势

传统的浏览器自动化需要为每个网站编写定制脚本,依赖于 DOM 解析和基于 XPath 的交互,这些脚本在网站布局改变时经常失效。Skyvern 通过视觉 LLM 来学习和交互,可以在从未见过的网站上运行,并且对网站布局变化具有抵抗力。

64.4%
WebBench 基准测试准确率 - 业界领先水平

核心特性

强大的功能集让你能够自动化几乎所有浏览器工作流

🧠

智能视觉识别

使用 Vision LLM 理解网页元素,无需预定义的 XPath 或选择器,自动识别按钮、表单、链接等交互元素。

📝

智能表单填写

自动理解表单字段含义并填写正确的信息,支持复杂的多步骤表单和条件逻辑。

🔄

工作流编排

链接多个任务形成复杂工作流,支持循环、条件判断、数据提取、文件处理等高级功能。

🔐

认证支持

支持多种认证方式,包括 2FA(TOTP)、邮箱验证、短信验证,集成 Bitwarden 密码管理器。

📊

数据提取

按照自定义 Schema 提取网页数据,输出结构化的 JSON 格式,完美适配数据分析需求。

📹

实时流式传输

实时查看浏览器视窗,监控 Skyvern 的操作过程,必要时可以人工干预。

📥

文件下载

自动下载文件并上传到块存储,支持发票、报告、证书等各类文档的批量下载。

🌍

跨网站适用

单一工作流可应用于多个网站,无需为每个网站编写定制代码,大幅提升效率。

🔌

集成生态

支持 Zapier、Make.com、N8N 集成,以及 Model Context Protocol (MCP) 标准。

工作原理

基于多智能体系统的创新架构

  • Skyvern 使用智能体群(Agent Swarm)来理解网站,并规划和执行操作
  • 受到 BabyAGI 和 AutoGPT 任务驱动自主智能体设计的启发
  • 通过 Playwright 等浏览器自动化库与网站进行交互
  • 使用 Vision LLM 分析页面截图,识别可交互元素
  • 根据自然语言提示规划操作步骤并执行
  • 支持复杂的推理,例如根据上下文推断问题答案
  • 💡 智能推理示例

    当获取汽车保险报价时,Skyvern 能够理解"你是否在18岁时有资格驾驶?"这个问题,并从"驾驶员在16岁时获得驾照"这个信息中推断出答案为"是"。

    真实应用场景

    Skyvern 在实际生产环境中的应用

    📄

    发票自动下载

    从多个不同的网站自动下载发票,无需为每个网站编写脚本

    💼

    职位申请自动化

    自动填写求职申请表单,支持各种招聘网站

    🏭

    材料采购自动化

    制造企业的材料采购流程自动化

    🏛️

    政府网站表单

    自动填写政府网站的注册表单和申请表

    📧

    联系表单填写

    批量填写各种网站的联系表单

    🚗

    保险报价获取

    从多个保险公司网站获取报价,支持多语言

    安装指南

    选择适合你的安装方式

    系统要求

    • Python 3.11.x (支持 3.12,暂不支持 3.13)
    • Node.js 和 NPM
    • Windows 用户需要 Rust 和 VS Code C++ 开发工具

    1. 安装 Skyvern

    Bash
    pip install skyvern

    2. 初始化数据库

    Bash
    skyvern quickstart

    3. 启动服务

    Bash
    skyvern run all

    访问 http://localhost:8080 使用 Web UI

    4. 使用 Python SDK

    Python
    from skyvern import Skyvern
    
    skyvern = Skyvern()
    task = await skyvern.run_task(
        prompt="Find the top post on hackernews today"
    )
    print(task)

    前置要求

    • 安装 Docker Desktop
    • 确保本地没有运行 PostgreSQL (端口 5432)

    1. 克隆仓库

    Bash
    git clone https://github.com/skyvern-ai/skyvern.git
    cd skyvern

    2. 配置环境变量

    Bash
    skyvern init llm

    在 docker-compose.yml 中填写 LLM 提供商的 API 密钥

    3. 启动服务

    Bash
    docker compose up -d

    访问 http://localhost:8080 使用 Web UI

    开发者安装

    适合想要贡献代码或自定义开发的用户

    1. 安装 UV

    Bash
    curl -LsSf https://astral.sh/uv/install.sh | sh

    2. 克隆并设置

    Bash
    git clone https://github.com/skyvern-ai/skyvern.git
    cd skyvern
    uv sync --group dev
    uv run skyvern quickstart

    3. 启动开发服务

    Bash
    uv run skyvern run all

    Skyvern Cloud

    托管云版本,无需担心基础设施,自带反机器人检测、代理网络和验证码解决方案。

    主要优势

    • 无需配置服务器和数据库
    • 支持并行运行多个实例
    • 内置反机器人检测机制
    • 集成代理网络
    • 自动 CAPTCHA 求解

    开始使用

    访问 app.skyvern.com 创建账户即可开始使用。

    Python SDK 连接云服务

    Python
    from skyvern import Skyvern
    
    # 连接到云服务
    skyvern = Skyvern(api_key="YOUR_SKYVERN_API_KEY")
    
    task = await skyvern.run_task(
        prompt="Find the top post on hackernews today"
    )
    print(task)

    支持的 LLM 提供商

    灵活选择你喜欢的大语言模型

    🤖

    OpenAI

    GPT-4 Turbo, GPT-4o, GPT-4o-mini, O4-mini, O3

    🔮

    Anthropic

    Claude 3 (Haiku, Sonnet, Opus), Claude 3.5/3.7 Sonnet, Claude 4

    ☁️

    Azure OpenAI

    支持所有 GPT 模型,推荐使用多模态模型

    🌊

    AWS Bedrock

    Anthropic Claude 系列模型

    💎

    Google Gemini

    Gemini 2.5 Pro/Flash, Gemini 2.0

    🦙

    Ollama

    本地托管的开源模型

    ⚙️ 环境变量配置

    使用 skyvern init llm 命令快速配置 LLM 提供商,或手动设置 LLM_KEYSECONDARY_LLM_KEY 环境变量。

    高级功能

    🌐

    自定义浏览器

    使用自己的 Chrome 浏览器,保留 Cookie 和登录状态,支持 CDP 连接。

    📋

    Schema 数据提取

    定义 JSON Schema 获取结构化输出,完美适配数据管道。

    🔗

    工作流编排

    支持循环、条件、验证、文件解析、发送邮件、HTTP 请求、自定义代码等。

    🔑

    密码管理器集成

    支持 Bitwarden,未来将支持 1Password 和 LastPass。

    代码示例

    基础任务运行

    Python
    from skyvern import Skyvern
    
    skyvern = Skyvern()
    task = await skyvern.run_task(
        prompt="Find the top post on hackernews today"
    )
    print(task)

    带数据提取的任务

    Python
    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"
                }
            }
        }
    )
    print(task)

    社区与支持

    💬

    Discord 社区

    加入 Discord 服务器与开发者和用户交流

    加入 Discord →
    📖

    官方文档

    详细的使用文档和 API 参考

    查看文档 →
    🐛

    问题反馈

    在 GitHub 上报告问题和建议

    提交 Issue →
    🤝

    贡献代码

    欢迎提交 Pull Request

    贡献指南 →