
Автоматизируйте браузерные рабочие процессы с помощью ИИ
<!-- DOCTOC SKIP -->
<h1 align="center">
<a href="https://www.skyvern.com">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="fern/images/skyvern_logo.png"/>
<img height="120" src="https://assets.kitploit.com/production/public/readmes/13130/ac0ac333311eb6f0a4c7ad44087b1c4843a4f3d52d7a6494da305969b57fd38f.png"/>
</picture>
</a>
<br />
</h1>
<p align="center">
🐉 Автоматизируйте браузерные рабочие процессы с помощью LLM и компьютерного зрения 🐉
</p>
<p align="center">
<a href="https://www.skyvern.com/"><img src="https://img.shields.io/badge/Website-blue?logo=googlechrome&logoColor=black"/></a>
<a href="https://www.skyvern.com/docs/"><img src="https://img.shields.io/badge/Docs-yellow?logo=gitbook&logoColor=black"/></a>
<a href="https://discord.gg/fG2XXEuQX3"><img src="https://img.shields.io/discord/1212486326352617534?logo=discord&label=discord"/></a>
<!-- <a href="https://pepy.tech/project/skyvern" target="_blank"><img src="https://static.pepy.tech/badge/skyvern" alt="Total Downloads"/></a> -->
<a href="https://github.com/skyvern-ai/skyvern"><img src="https://img.shields.io/github/stars/skyvern-ai/skyvern" /></a>
<a href="https://github.com/Skyvern-AI/skyvern/blob/main/LICENSE"><img src="https://img.shields.io/github/license/skyvern-ai/skyvern"/></a>
<a href="https://twitter.com/skyvernai"><img src="https://img.shields.io/twitter/follow/skyvernai?style=social"/></a>
<a href="https://www.linkedin.com/company/95726232"><img src="https://img.shields.io/badge/Follow%20on%20LinkedIn-8A2BE2?logo=linkedin"/></a>
</p>
[Skyvern](https://www.skyvern.com) автоматизирует браузерные рабочие процессы с помощью LLM и компьютерного зрения. Он предоставляет SDK, совместимый с Playwright, который добавляет AI-функциональность поверх playwright, а также конструктор рабочих процессов без кода, помогающий как техническим, так и нетехническим пользователям автоматизировать ручные операции на любых сайтах, заменяя хрупкие или ненадежные решения для автоматизации.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/a114374ce5e26eb559503d84aa24449d9b6c2eadc6bdf7ded28de0f96b9ff023.gif"/>
</p>
Традиционные подходы к автоматизации браузеров требовали написания пользовательских скриптов для сайтов, часто опираясь на DOM-парсинг и взаимодействия на основе XPath, которые ломались при каждом изменении макетов сайтов.
Вместо того чтобы полагаться исключительно на XPath-взаимодействия, заданные кодом, Skyvern использует Vision LLM для изучения и взаимодействия с веб-сайтами.
# Как это работает
Skyvern был вдохновлен дизайном Task-Driven автономного агента, популяризированным [BabyAGI](https://github.com/yoheinakajima/babyagi) и [AutoGPT](https://github.com/Significant-Gravitas/AutoGPT) — с одним важным дополнением: мы даем Skyvern возможность взаимодействовать с веб-сайтами с помощью библиотек автоматизации браузеров, таких как [Playwright](https://playwright.dev/).
Skyvern использует рой агентов для понимания веб-сайта, планирования и выполнения действий:
<picture>
<source media="(prefers-color-scheme: dark)" srcset="fern/images/skyvern_2_0_system_diagram.png" />
<img src="https://assets.kitploit.com/production/public/readmes/13130/badc4fc58744a52672a8dc17adcfd68162394d8518dbf7e728b5d7038e87e2d6.png" />
</picture>
Этот подход имеет несколько преимуществ:
1. Skyvern может работать на сайтах, которые он никогда раньше не видел, так как способен сопоставлять визуальные элементы с действиями, необходимыми для выполнения рабочего процесса, без какого-либо настраиваемого кода.
1. Skyvern устойчив к изменениям макета сайта, так как нет предопределенных XPath или других селекторов, которые наша система ищет при навигации.
1. Skyvern может взять один рабочий процесс и применить его к большому количеству сайтов, поскольку он способен рассуждать о взаимодействиях, необходимых для завершения рабочего процесса.
Подробный технический отчет можно найти [здесь](https://www.skyvern.com/blog/skyvern-2-0-state-of-the-art-web-navigation-with-85-8-on-webvoyager-eval/).
# Демо
<!-- Redo demo -->
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
# Быстрый старт
## Skyvern Cloud
[Skyvern Cloud](https://app.skyvern.com) — это управляемая облачная версия Skyvern, которая позволяет запускать Skyvern без забот об инфраструктуре. Она позволяет запускать несколько экземпляров Skyvern параллельно и поставляется со встроенными механизмами защиты от ботов, прокси-сетью и решателями CAPTCHA.
Если вы хотите попробовать, перейдите на [app.skyvern.com](https://app.skyvern.com) и создайте аккаунт.
## Локальный запуск (UI + Сервер)
Выберите предпочтительный способ настройки:
> **База данных по умолчанию**: `skyvern quickstart` и `skyvern run server` по умолчанию используют SQLite базу данных в `~/.skyvern/data.db`, поэтому путь pip работает без Postgres или Docker. Чтобы вместо этого использовать Postgres, передайте `--postgres` для локального контейнера или `--database-string` для существующей базы данных. Docker Compose всегда использует встроенный сервис Postgres.
### Вариант A: pip install (рекомендуется для локальной настройки под управлением Python)
Необходимые зависимости:
- [Python 3.11, 3.12 или 3.13](https://www.python.org/downloads/)
Дополнительно для Windows:
- [Rust](https://rustup.rs/)
- VS Code с инструментами разработки C++ и Windows SDK
#### 1. Установите Skyvern```bash
pip install "skyvern[all]"
```
#### 2. Запустите Skyvern```bash
skyvern quickstart
```
Быстрый старт через pip по умолчанию использует SQLite. Для локального контейнера Postgres выполните `skyvern quickstart --postgres`.
### Вариант B: Docker Compose
Используйте этот вариант, если хотите всё контейнеризировать (Postgres, API, UI) и не хотите устанавливать Python/Node локально.
1. Установите [Docker Desktop](https://www.docker.com/products/docker-desktop/)
2. Клонируйте репозиторий: ```bash
git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
```
3. Настройте вашего провайдера LLM в `.env` (команда `quickstart --docker-compose` ниже создаст его из `.env.example`, если файл отсутствует): ```bash
cp .env.example .env # if not already created
# edit .env to add your LLM API key
```
4. Запустить всё: ```bash
docker compose up -d
```
5. Откройте http://localhost:8080
### Устранение неполадок
**`(sqlite3.OperationalError) table organizations already exists`** — Вы столкнулись с известной ошибкой в `pip install skyvern==1.0.31`. Исправление:```bash
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 вместо этого:```bash
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`
- Локальный сервер + встроенный UI: `pip install "skyvern[all]"`, затем выполните `skyvern quickstart`
- Локальный сервер + встроенный UI с Postgres: `pip install "skyvern[all]"`, затем выполните `skyvern quickstart --postgres`
- Встроенный UI для существующего API: `pip install "skyvern[ui]"`, затем выполните
`skyvern run ui --api-url <api-url> --api-key <api-key>`
- 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", "[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")` |
**Три режима взаимодействия:**```python
# 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")
```
### Основные команды ИИ - Примеры```python
# 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:**```bash
skyvern run all
```
Перейдите по адресу http://localhost:8080, чтобы запускать задачи через веб-интерфейс. Если встроенный интерфейс отсутствует, `skyvern run ui` предложит установить соответствующий пакет UI. Для неинтерактивной настройки используйте `skyvern run ui --install-ui` или `skyvern run all --install-ui`.
Чтобы запустить только встроенный интерфейс для существующего Skyvern API, установите `skyvern[ui]` и передайте `--api-url`; CLI автоматически определит `--wss-url` из URL API, если вы не переопределите его. Также вы можете установить `VITE_API_BASE_URL`, `VITE_WSS_BASE_URL`, `VITE_ARTIFACT_API_BASE_URL`, `VITE_SKYVERN_API_KEY` и `VITE_BROWSER_STREAMING_MODE` перед запуском `skyvern run ui`.
**Python SDK:**```python
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:**```typescript
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();
```
**Простое выполнение задач:**```python
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(prompt="Find the top post on hackernews today")
print(task)
```
## Advanced Usage
### Control your own browser (Chrome)
Позвольте Skyvern управлять вашим существующим браузером Chrome — со всеми вашими cookie, логинами и расширениями.
#### Step 1: Enable remote debugging in Chrome
1. Откройте Chrome и перейдите к `chrome://inspect/#remote-debugging`
2. Нажмите **Enable**, чтобы запустить сервер отладки
3. Должно появиться: **Server running at: 127.0.0.1:9222**
> [!TIP]
> Команда `skyvern init browser` может сделать это автоматически — она открывает `chrome://inspect/#remote-debugging`, ждёт, пока вы включите эту опцию, и сохраняет конфигурацию.
#### Step 2: Connect Skyvern
**Option A — Python Code:**```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 Service:**
Добавьте две переменные в ваш файл .env:```bash
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.```bash
# One command to start Chrome + create a tunnel to Skyvern Cloud
skyvern browser serve --tunnel
```
Затем используйте URL туннеля в вашей задаче:```python
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",
)
```
> [!WARNING]
> Всегда используйте `--api-key` при открытии доступа к вашему браузеру через туннель. Без него любой, у кого есть URL, получит полный контроль над вашим браузером. См. [документацию по безопасности](https://www.skyvern.com/docs/optimization/browser-tunneling#security).
Обратитесь к [полной документации](https://www.skyvern.com/docs/optimization/browser-tunneling) для получения информации обо всех параметрах, настройке ручного туннелирования и устранении неполадок.
### Получите согласованную схему вывода из вашего запуска
Вы можете сделать это, добавив параметр `data_extraction_schema`:```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"
}
}
}
)
```
### Полезные команды для отладки проблем```bash
# 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](https://github.com/skyvern-ai/skyvern/blob/main/webbench.ai) с точностью 64.4%. Технический отчет и оценку можно найти [здесь](https://www.skyvern.com/blog/web-bench-a-new-way-to-compare-ai-browser-agents/)
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/e1d9ef60b5b30f27ac8e7dd6445c58abaf6d73d2052b5504a68cb57fac2ce5ef.png"/>
</p>
## Производительность при задачах WRITE (например, заполнение форм, вход в систему, загрузка файлов и т.д.)
Skyvern — лучший агент для задач WRITE (например, заполнение форм, вход в систему, загрузка файлов и т.д.), которые в основном используются для задач, смежных с RPA (Robotic Process Automation).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/58fb054d89dc64f388518a8f88ef0627db4fefe54efaa9b93cb8da5e3efaa18d.png"/>
</p>
# Возможности Skyvern
## Задачи Skyvern
Задачи — это фундаментальные строительные блоки внутри Skyvern. Каждая задача — это отдельный запрос к Skyvern, предписывающий ему перемещаться по веб-сайту и выполнять конкретную цель.
Для задач требуется указать `url`, `prompt`, и опционально можно включить `data schema` (если нужно, чтобы вывод соответствовал определенной схеме) и `error codes` (если нужно, чтобы Skyvern прекратил работу в определенных ситуациях).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/117cf9cb190bc9592bcf4a20d4c87689ce2422f767ced27b8651935204a4c1c0.png"/>
</p>
## Рабочие процессы Skyvern
Рабочие процессы — это способ объединить несколько задач в единую согласованную единицу работы.
Например, если вы хотите скачать все счета, датированные после 1 января, вы можете создать рабочий процесс, который сначала перейдет на страницу счетов, затем отфильтрует их, чтобы показать только те, что новее 1 января, извлечет список всех подходящих счетов и пройдется по каждому счету для его загрузки.
Другой пример: если вы хотите автоматизировать покупку товаров в интернет-магазине, вы можете создать рабочий процесс, который сначала перейдет к нужному товару, затем добавит его в корзину. Во-вторых, он перейдет в корзину и проверит ее состояние. Наконец, он пройдет через процесс оформления заказа для покупки товаров.
Поддерживаемые функции рабочих процессов включают:
1. Задача браузера
1. Действие браузера
1. Извлечение данных
1. Проверка
1. Циклы For
1. Разбор файлов
1. Отправка электронных писем
1. Текстовые подсказки
1. Блок HTTP-запроса
1. Блок пользовательского кода
1. Загрузка файлов в блочное хранилище
1. (Скоро) Условные операторы
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/cd2caa0604f940415bfa00c130ec992ebedfbc7934ddf00df0bca03af2248677.png"/>
</p>
## Прямая трансляция
Skyvern позволяет транслировать область просмотра браузера на ваш локальный компьютер, чтобы вы могли видеть, что именно Skyvern делает в интернете. Это полезно для отладки и понимания того, как Skyvern взаимодействует с веб-сайтом, а также для вмешательства при необходимости.
## Заполнение форм
Skyvern изначально способен заполнять поля ввода на веб-сайтах. Передача информации через `navigation_goal` позволит Skyvern понять информацию и соответствующим образом заполнить форму.
## Извлечение данных
Skyvern также способен извлекать данные с веб-сайта.
Вы также можете указать `data_extraction_schema` непосредственно в основном запросе, чтобы сообщить Skyvern, какие именно данные вы хотите извлечь с веб-сайта в формате jsonc. Вывод Skyvern будет структурирован в соответствии с предоставленной схемой.
## Загрузка файлов
Skyvern также способен загружать файлы с веб-сайта. Все загруженные файлы автоматически выгружаются в блочное хранилище (если оно настроено), и вы можете получить к ним доступ через интерфейс.
## Аутентификация
Skyvern поддерживает ряд различных методов аутентификации, чтобы упростить автоматизацию задач за логином. Если вы хотите попробовать, свяжитесь с нами [по электронной почте](mailto:[email protected]) или в [discord](https://discord.gg/fG2XXEuQX3).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/bf10e8dfc389840023156f6e17cabb33c533b68af224a79e2f7cead75f449386.png"/>
</p>
### 🔐 Поддержка 2FA (TOTP)
Skyvern поддерживает ряд различных методов 2FA, позволяющих автоматизировать рабочие процессы, требующие 2FA.
Примеры включают:
1. 2FA на основе QR-кода (например, Google Authenticator, Authy)
1. 2FA на основе электронной почты
1. 2FA на основе SMS
🔐 Узнайте больше о поддержке 2FA [здесь](https://www.skyvern.com/docs/credentials/totp).
### Интеграции с менеджерами паролей
Skyvern в настоящее время поддерживает следующие интеграции с менеджерами паролей:
- [x] Bitwarden
- [x] Пользовательская служба учетных данных (HTTP API)
- [ ] 1Password
- [ ] LastPass
## Протокол контекста модели (MCP)
Skyvern поддерживает протокол контекста модели (MCP), позволяя использовать любую LLM, поддерживающую MCP.
См. документацию MCP [здесь](https://www.skyvern.com/docs/integrations/mcp#mcp-server)
## Интеграция с Zapier / Make.com / N8N
Skyvern поддерживает Zapier, Make.com и N8N, позволяя подключать ваши рабочие процессы Skyvern к другим приложениям.
* [Zapier](https://www.skyvern.com/docs/integrations/zapier)
* [Make.com](https://www.skyvern.com/docs/integrations/make.com)
* [N8N](https://www.skyvern.com/docs/integrations/n8n)
🔐 Узнайте больше о поддержке 2FA [здесь](https://www.skyvern.com/docs/credentials/totp).
# Примеры использования Skyvern в реальном мире
Нам нравится видеть, как Skyvern используется в реальных условиях. Вот несколько примеров того, как Skyvern используется для автоматизации рабочих процессов в реальном мире. Пожалуйста, открывайте PR, чтобы добавить свои собственные примеры!
## Загрузка счетов на многих различных веб-сайтах
[Запишитесь на демо, чтобы увидеть это вживую](https://meetings.hubspot.com/skyvern/demo)
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/6c78ce6d6edeac1f32acd6027e8e70a63ae0b2d6321bce67ff66897bf8cb1521.gif"/>
</p>
## Автоматизация процесса подачи заявок на работу
[💡 Посмотреть в действии](https://app.skyvern.com/tasks/create/job_application)
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/c3194a14defe1776d0a03e90134b0f80335ce1ed9fbe8aca58bfcfb70b8921c5.gif"/>
</p>
## Автоматизация закупок материалов для производственной компании
[💡 Посмотреть в действии](https://app.skyvern.com/tasks/create/finditparts)
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/6d03d69dfe77b8604b6b989267589b585b5c1db543bcf47cc1e396e1ae7a5c86.gif"/>
</p>
## Навигация по правительственным веб-сайтам для регистрации учетных записей или заполнения форм
[💡 Посмотреть в действии](https://app.skyvern.com/tasks/create/california_edd)
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/e60a5be96693d456bea4cba289dad73dc8c3d3e31746410c911ccf6a4a495f46.gif"/>
</p>
<!-- Пример поиска по организациям Делавэра x2 -->
## Заполнение случайных контактных форм
[💡 Посмотреть в действии](https://app.skyvern.com/tasks/create/contact_us_forms)
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13130/3ba9ff70e487d4c5f44732b7819d75a7b7ac7dfef84431703940f2b47e6efdda.gif"/>
</p>
```
---
[Read more](https://github.com/skyvern-ai/skyvern)