🐉 Автоматизируйте процессы в браузере с помощью 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:
-
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
- Откройте 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, которое добавляет автоматизацию браузера на основе ИИ. Оно предоставляет все возможности 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
| Поставщик | Поддерживаемые модели |
|---|---|
| OpenAI | GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini |
| Anthropic | Claude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus) |
| Azure OpenAI | Любые модели GPT, развёрнутые в вашей подписке Azure |
| AWS Bedrock | Claude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus) |
| Gemini | Gemini 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, за исключением средств защиты от ботов, доступных в нашем управляемом облачном сервисе.
Если у вас есть вопросы или сомнения по поводу лицензирования, свяжитесь с нами — мы будем рады помочь.