API ВЕГА
English

🐉 Автоматизируйте процессы в браузере с помощью LLM и компьютерного зрения 🐉

Skyvern автоматизирует процессы в браузере с помощью LLM и компьютерного зрения. В комплект входит совместимый с Playwright SDK, который добавляет возможности ИИ к Playwright, а также конструктор процессов без программирования. Он помогает техническим и нетехническим специалистам автоматизировать ручные операции на любых сайтах и заменяет ненадёжные решения, которые легко ломаются.

Традиционные способы автоматизации браузера требовали создания отдельных скриптов для каждого сайта. Такие скрипты часто опирались на разбор DOM и взаимодействие через XPath, поэтому переставали работать при изменении макета сайта.

Вместо того чтобы полагаться исключительно на заданные в коде XPath-взаимодействия, Skyvern использует Vision LLM, чтобы изучать сайты и взаимодействовать с ними.

Как это работает

В основе Skyvern лежит архитектура автономного агента, управляемого задачами и популяризированная проектами BabyAGI и AutoGPT. Главное отличие Skyvern — возможность взаимодействовать с сайтами с помощью библиотек для автоматизации браузера, таких как Playwright.

Skyvern использует группу агентов, чтобы анализировать сайт, планировать действия и выполнять их.

У этого подхода есть несколько преимуществ:

  • Skyvern работает даже с незнакомыми сайтами: он сопоставляет визуальные элементы с действиями, необходимыми для выполнения процесса, и при этом не требует специального кода

  • Skyvern устойчив к изменениям макета сайта: при навигации система не полагается на заранее заданные XPath и другие селекторы

  • Skyvern может выполнять один и тот же процесс на большом количестве сайтов, поскольку способен определять необходимые для его выполнения действия

Подробное техническое описание доступно здесь.

Демонстрация

https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f

Быстрый старт

Skyvern Cloud

Skyvern Cloud — облачная версия Skyvern с управляемой инфраструктурой. Она позволяет запускать несколько экземпляров Skyvern параллельно и включает механизмы защиты от обнаружения ботами, сеть прокси и средства решения CAPTCHA.

Чтобы попробовать сервис, перейдите на app.skyvern.com и создайте аккаунт.

Локальный запуск (интерфейс и сервер)

Выберите удобный способ настройки:

База данных по умолчанию: skyvern quickstart и skyvern run server по умолчанию используют SQLite-базу данных в ~/.skyvern/data.db, поэтому вариант с pip работает без Postgres и Docker. Чтобы использовать Postgres, передайте параметр --database-string с адресом существующей базы данных или не указывайте --no-postgres, чтобы quickstart запустил собственный контейнер Postgres. Docker Compose всегда использует включённую в комплект службу Postgres.

Вариант A: установка через pip (рекомендуется для локальной настройки с помощью Python)

Необходимые зависимости:

Кроме того, для Windows:

  • Rust

  • VS Code с инструментами разработки на C++ и Windows SDK

1. Установите Skyvern
pip install "skyvern[all]"
2. Запустите Skyvern
skyvern quickstart

При запуске через pip по умолчанию используется SQLite. Чтобы вместо неё использовать локальный контейнер Postgres, запустите skyvern quickstart (контейнер Postgres запустится, если не указан параметр --no-postgres). Также можно подключиться к существующей базе данных с помощью --database-string=postgresql+psycopg://user:pass@host:5432/dbname.

Вариант B: Docker Compose

Выберите этот вариант, если хотите запускать всё в контейнерах (Postgres, API и интерфейс) и не устанавливать Python и Node локально.

  • Установите Docker Desktop

  • Клонируйте репозиторий:

git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
  • Настройте поставщика 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

Устранение неполадок

(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, которое добавляет автоматизацию браузера на основе ИИ. Оно предоставляет все возможности Playwright и дополняет их функциями ИИ: используйте запросы на естественном языке, чтобы взаимодействовать с элементами, извлекать данные и автоматизировать сложные процессы из нескольких шагов.

Установка:

  • Python SDK / облачный API: pip install skyvern

  • Локальный сервер и встроенный интерфейс: pip install "skyvern[all]", затем запустите skyvern quickstart

  • Локальный сервер и встроенный интерфейс с Postgres: pip install "skyvern[all]", затем запустите skyvern quickstart --database-string=postgresql+psycopg://user:pass@host:5432/dbname

  • Встроенный интерфейс для существующего API: pip install "skyvern[ui]", затем задайте VITE_API_BASE_URL (а также VITE_SKYVERN_API_KEY, если API требует ключ) и запустите skyvern run ui

  • TypeScript: npm install @skyvern/client

Команды для работы со страницей на основе ИИ

Skyvern добавляет четыре основные команды на основе ИИ непосредственно в объект страницы:

КомандаОписание
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)Выполнение заранее настроенных процессов

Действия Playwright с поддержкой ИИ

Для всех стандартных действий Playwright можно указать необязательный параметр prompt, чтобы находить элементы с помощью ИИ:

ДействиеPlaywrightС поддержкой ИИ
Нажатие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")

Основные команды ИИ — примеры

# 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, чтобы запускать задачи через веб-интерфейс. Если в комплекте нет UI, команда skyvern run ui предложит установить подходящий пакет UI.

Чтобы запустить только входящий в комплект UI и подключить его к уже работающему Skyvern API, установите skyvern[ui] и перед запуском skyvern run ui задайте переменные окружения:

  • VITE_API_BASE_URL (например, http://localhost:8000/api/v1) — адрес Skyvern API, к которому подключается UI

  • VITE_SKYVERN_API_KEY — API key, если вашему API требуется ключ

  • VITE_WSS_BASE_URL — адрес WebSocket endpoint. Если переменная не задана, значение определяется по 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
  • Откройте 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, достигая точности 64,4 %. Технический отчёт и результаты оценки доступны здесь.

Производительность при выполнении задач WRITE (например, заполнение форм, вход в систему, скачивание файлов и т. д.)

Skyvern — агент с лучшими результатами при выполнении задач WRITE (например, заполнение форм, вход в систему, скачивание файлов и т. д.). В основном такие задачи применяются в смежных с RPA (Robotic Process Automation) сценариях.

Возможности Skyvern

Задачи Skyvern

Задачи — основной строительный блок Skyvern. Каждая задача представляет собой отдельный запрос к Skyvern с инструкцией перейти на сайт и достичь конкретной цели.

Для задачи необходимо указать url и prompt. При необходимости можно также задать data schema (чтобы привести результат к заданной схеме) и error codes (чтобы Skyvern прекращал выполнение при определённых ситуациях).

Рабочие процессы Skyvern

Рабочие процессы позволяют объединять несколько задач в единый последовательный процесс.

Например, чтобы скачать все счета, созданные после 1 января, можно создать рабочий процесс, который сначала откроет страницу со счетами, отфильтрует записи по дате, извлечёт список подходящих счетов и по очереди скачает каждый из них.

Другой пример — автоматизация покупки товаров в интернет-магазине. Сначала рабочий процесс откроет страницу нужного товара и добавит его в корзину. Затем перейдёт в корзину и проверит её содержимое. В завершение он оформит заказ.

Поддерживаются следующие возможности рабочих процессов:

  • Задача браузера

  • Действие в браузере

  • Извлечение данных

  • Проверка

  • Циклы For

  • Разбор файлов

  • Отправка электронных писем

  • Текстовые запросы

  • Блок HTTP Request

  • Блок пользовательского кода

  • Загрузка файлов в блочное хранилище

  • (Скоро появятся) Условные конструкции

Прямая трансляция

Skyvern позволяет передавать изображение окна браузера на ваш компьютер в режиме реального времени, чтобы вы могли видеть все действия Skyvern в интернете. Это удобно для диагностики и понимания того, как Skyvern взаимодействует с сайтом, а также для вмешательства при необходимости.

Заполнение форм

Skyvern умеет заполнять поля форм на сайтах. Передайте нужные данные через navigation_goal, и Skyvern разберётся в них и заполнит форму соответствующим образом.

Извлечение данных

Skyvern также умеет извлекать данные с сайтов.

Чтобы указать Skyvern, какие именно данные нужно получить, можно добавить data_extraction_schema прямо в основной запрос в формате jsonc. Skyvern вернёт результат в соответствии с заданной схемой.

Скачивание файлов

Skyvern также умеет скачивать файлы с сайтов. Все загруженные файлы автоматически отправляются в блочное хранилище, если оно настроено, и становятся доступны через UI.

Аутентификация

Skyvern поддерживает несколько способов аутентификации, упрощающих автоматизацию задач на сайтах, требующих входа в систему. Чтобы попробовать эту функцию, свяжитесь с нами по электронной почте или в discord.

Поддержка 2FA (TOTP)

Skyvern поддерживает несколько способов двухфакторной аутентификации (2FA), чтобы вы могли автоматизировать рабочие процессы, для которых требуется 2FA.

Например:

  • Двухфакторная аутентификация по QR-коду (например, Google Authenticator, Authy)

  • Двухфакторная аутентификация по электронной почте

  • Двухфакторная аутентификация по SMS

🔐 Подробнее о поддержке 2FA — здесь.

Интеграции с менеджерами паролей

В настоящее время Skyvern поддерживает интеграции со следующими менеджерами паролей:

  • Bitwarden

  • Custom Credential Service (HTTP API)

  • 1Password

  • LastPass

Model Context Protocol (MCP)

Skyvern поддерживает Model Context Protocol (MCP), поэтому вы можете использовать любую LLM, совместимую с MCP.

Документация по MCP доступна здесь

Интеграции с Zapier / Make.com / N8N

Skyvern поддерживает Zapier, Make.com и N8N. С их помощью можно связать рабочие процессы Skyvern с другими приложениями.

🔐 Подробнее о поддержке 2FA — здесь.

Примеры использования Skyvern в реальных условиях

Нам интересно видеть, как Skyvern используют на практике. Вот несколько примеров автоматизации рабочих процессов в реальных условиях. Добавляйте собственные примеры, открывая PR!

Скачивание счетов-фактур с различных сайтов

Запишитесь на демонстрацию

Автоматизация процесса подачи заявок на работу

💡 Посмотрите, как это работает

Автоматизация закупки материалов для производственной компании

💡 Посмотрите, как это работает

Переход на сайты государственных учреждений для регистрации аккаунтов и заполнения форм

💡 Посмотрите, как это работает

Заполнение случайных форм обратной связи

💡 Посмотрите, как это работает

Получение предложений по страхованию от страховых компаний на любом языке

💡 Посмотрите, как это работает

💡 Посмотрите, как это работает

Настройка окружения для участников проекта

Установите uv.

  • Выполните эту команду, чтобы создать виртуальное окружение (.venv)
uv sync --group dev
  • Выполните первоначальную настройку сервера
uv run skyvern quickstart
  • Откройте в браузере http://localhost:8080, чтобы начать работу с интерфейсом

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Любые модели GPT, развёрнутые в вашей подписке Azure
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Любая пользовательская конечная точка API, соответствующая формату API OpenAI (через liteLLM)

Подробные сведения о настройке LLM, включая все доступные ключи моделей, переменные окружения и конфигурации с несколькими моделями, см. в документации по настройке LLM.

Участие в проекте

Мы будем рады PR и предложениям! Открывайте PR или issue либо свяжитесь с нами по электронной почте или в discord.

Чтобы начать, ознакомьтесь с руководством для участников проекта и

issue с пометкой «Помощь нужна».

Если вы хотите обсудить репозиторий skyvern, получить общее представление о его структуре, узнать, как на его основе создавать решения и находить ответы на вопросы об использовании, воспользуйтесь Code Sage.

Телеметрия

По умолчанию Skyvern собирает основные статистические данные об использовании, чтобы помочь нам понять, как используется Skyvern. Чтобы отказаться от отправки телеметрии, задайте для переменной окружения SKYVERN_TELEMETRY значение false.

Лицензия

Работа над репозиторием Skyvern с открытым исходным кодом поддерживается за счёт управляемого облачного сервиса. Вся основная логика Skyvern доступна в этом репозитории с открытым исходным кодом под лицензией AGPL-3.0 License, за исключением средств защиты от ботов, доступных в нашем управляемом облачном сервисе.

Если у вас есть вопросы или сомнения по поводу лицензирования, свяжитесь с нами — мы будем рады помочь.

История звёзд