# ✅ SKYVERN УСТАНОВЛЕН И РАБОТАЕТ! **Дата установки:** 20 февраля 2026 г. **Система:** Ubuntu, Python 3.12.3, Node.js v20.19.5 **Режим:** Source (не Docker) для полной кастомизации --- ## 🎯 Что установлено и работает ### Backend (FastAPI + Uvicorn) - ✅ РАБОТАЕТ - **Адрес:** http://localhost:8000 - **Процесс:** background (PID в `ps aux | grep uvicorn`) - **Логи:** `backend.log` в корне проекта - **Swagger API:** http://localhost:8000/docs - **OpenAPI schema:** http://localhost:8000/openapi.json ### Frontend (React + Vite) - ⏹️ ГОТОВ К ЗАПУСКУ - **Команда:** `cd skyvern-frontend && npm run dev` - **Адрес:** http://localhost:5173 (после запуска) - **Зависимости:** 672 пакета установлено ### Database (PostgreSQL 16) - ✅ РАБОТАЕТ - **Адрес:** localhost:5433 - **Credentials:** skyvern / skyvern - **Контейнер:** `skyvern-postgres` - **Таблиц:** 42 (созданы через Alembic migrations) ### Cache (Redis 7) - ✅ РАБОТАЕТ - **Адрес:** localhost:6380 - **Контейнер:** `skyvern-redis` - **Статус:** healthy ### Browser Automation - ✅ ГОТОВ - **Playwright:** установлен (Chromium 145.0.7632.6) - **Режим:** headless (настраивается в .env) --- ## 🔑 API Аутентификация ### JWT Token (валиден до 2027 года) ```bash x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJvcmdfZGV2ZWxvcG1lbnQiLCJleHAiOjE4MDMxNDc3MDMsImlhdCI6MTc3MTYxMTcwM30.HcAprOMAuMpB-_QSZWiRG642FNezc9fepIQn0OFKH-E ``` ### Organization - **ID:** `org_development` - **Name:** Development Organization ### Сохранен в .env ```bash SKYVERN_API_KEY=eyJhbGc... ``` --- ## 📡 API Endpoints (проверены и работают) ### Создание задачи ```bash curl -X POST http://localhost:8000/v1/run/tasks \ -H "Content-Type: application/json" \ -H "x-api-key: YOUR_JWT_TOKEN" \ -d '{ "prompt": "Extract the main heading text", "url": "https://example.com", "max_steps": 3, "proxy_location": "NONE" }' ``` **Ответ:** JSON с `run_id`, `status`, `app_url` ### Проверка статуса ```bash curl "http://localhost:8000/v1/runs/{run_id}" \ -H "x-api-key: YOUR_JWT_TOKEN" ``` ### Полный список endpoints - `POST /v1/run/tasks` - создать задачу - `POST /v1/run/workflows` - запустить workflow - `GET /v1/runs/{run_id}` - статус выполнения - `GET /v1/runs/{run_id}/timeline` - timeline задачи - `POST /v1/runs/{run_id}/cancel` - отменить задачу - `GET /v1/workflows` - список workflows - `POST /v1/workflows` - создать workflow (YAML/JSON) - `GET /v1/browser_sessions` - browser сессии - `POST /v1/credentials` - сохранить credentials **Полная документация:** http://localhost:8000/docs --- ## ⚠️ Известная проблема: OpenAI API ### Симптом ``` APIError: OpenAIException - Country, region, or territory not supported ``` ### Причина OpenAI блокирует API запросы из России (даже без прокси). ### Решения #### 1. **Использовать VPN/прокси для OpenAI API** (рекомендуется) ```bash # В .env добавить: HTTP_PROXY=http://your-vpn:port HTTPS_PROXY=http://your-vpn:port ``` #### 2. **Переключиться на другую LLM модель** ```bash # Отключить OpenAI в .env: ENABLE_OPENAI=false # Включить альтернативу (например, OpenRouter или локальная модель): OPENAI_COMPATIBLE_API_KEY=your-key OPENAI_COMPATIBLE_API_URL=https://openrouter.ai/api/v1 LLM_KEY=OPENAI_COMPATIBLE # вместо OPENAI_GPT4_TURBO ``` #### 3. **Использовать Anthropic Claude** (если есть ключ) ```bash ENABLE_ANTHROPIC=true ANTHROPIC_API_KEY=sk-ant-... LLM_KEY=ANTHROPIC_CLAUDE_SONNET ``` #### 4. **Локальная LLM через Ollama** ```bash # Установить Ollama curl -fsSL https://ollama.com/install.sh | sh # Запустить модель ollama run llama2 # В .env: OPENAI_COMPATIBLE_API_URL=http://localhost:11434/v1 LLM_KEY=OPENAI_COMPATIBLE ``` --- ## 🚀 Запуск системы ### Запустить backend (если остановлен) ```bash cd /home/vodorod/dorod/skyvern source .venv/bin/activate # Через nohup (background) nohup uvicorn skyvern.forge.api_app:app --host 0.0.0.0 --port 8000 > backend.log 2>&1 & # OR через скрипт: ./start-backend.sh ``` ### Запустить frontend ```bash cd /home/vodorod/dorod/skyvern/skyvern-frontend npm run dev # Откроется на http://localhost:5173 ``` ### Запустить Docker сервисы (если остановлены) ```bash cd /home/vodorod/dorod/skyvern docker compose -f docker-compose.deps.yml up -d ``` ### Проверить статус всех сервисов ```bash # Backend curl http://localhost:8000/docs | head -5 # Database docker exec skyvern-postgres psql -U skyvern -d skyvern -c "SELECT 1;" # Redis docker exec skyvern-redis redis-cli ping ``` --- ## 📂 Структура проекта ``` /home/vodorod/dorod/skyvern/ ├── .env # Конфигурация (с JWT токеном) ├── .venv/ # Python virtual environment ├── backend.log # Логи backend (тут смотреть ошибки!) ├── start-backend.sh # Скрипт запуска backend ├── start-frontend.sh # Скрипт запуска frontend ├── docker-compose.deps.yml # PostgreSQL + Redis ├── skyvern/ # Исходники backend │ ├── forge/ # FastAPI application │ │ ├── api_app.py # MODIFIED: добавлен app instance │ │ └── sdk/ # SDK и модели │ ├── config.py # Настройки приложения │ └── cli/ # CLI команды ├── skyvern-frontend/ # React + Vite frontend │ ├── src/ │ ├── package.json │ └── node_modules/ (672 pkgs) ├── alembic/ # Database migrations └── INSTALLATION-COMPLETE.md # Документация установки ``` --- ## 🔧 Полезные команды ### Проверить логи backend ```bash tail -f backend.log ``` ### Остановить backend ```bash pkill -f "uvicorn skyvern.forge.api_app:app" ``` ### Перезапустить PostgreSQL ```bash docker restart skyvern-postgres ``` ### Выполнить миграции (если добавлены новые) ```bash source .venv/bin/activate alembic upgrade head ``` ### Создать новую организацию ```python # В Python venv: python3 << EOF import jwt, time secret_key = "dev-secret-key-change-in-production" # Из .env payload = { 'sub': 'org_your_new_org', 'exp': int(time.time()) + (365 * 24 * 3600), 'iat': int(time.time()) } token = jwt.encode(payload, secret_key, algorithm='HS256') print(f"New JWT: {token}") EOF # Затем в PostgreSQL: docker exec skyvern-postgres psql -U skyvern -d skyvern -c " INSERT INTO organizations (organization_id, organization_name, created_at, modified_at) VALUES ('org_your_new_org', 'Your Organization', NOW(), NOW()); INSERT INTO organization_auth_tokens (id, organization_id, token_type, token, valid, created_at, modified_at) VALUES ('token_new', 'org_your_new_org', 'api', 'YOUR_JWT_TOKEN', true, NOW(), NOW()); " ``` --- ## 🎓 Примеры использования ### Простой парсинг (после решения OpenAI проблемы) ```bash curl -X POST http://localhost:8000/v1/run/tasks \ -H "Content-Type: application/json" \ -H "x-api-key: $SKYVERN_API_KEY" \ -d '{ "prompt": "Go to hackernews.com and extract titles of top 5 posts", "url": "https://news.ycombinator.com", "max_steps": 5, "proxy_location": "NONE" }' ``` ### Заполнение формы ```bash curl -X POST http://localhost:8000/v1/run/tasks \ -H "Content-Type: application/json" \ -H "x-api-key: $SKYVERN_API_KEY" \ -d '{ "prompt": "Fill the contact form with name John, email john@example.com", "url": "https://example.com/contact", "max_steps": 10 }' ``` ### Извлечение структурированных данных ```bash curl -X POST http://localhost:8000/v1/run/tasks \ -H "Content-Type: application/json" \ -H "x-api-key: $SKYVERN_API_KEY" \ -d '{ "prompt": "Extract product information", "url": "https://amazon.com/dp/B08N5WRWNW", "data_extraction_schema": { "type": "object", "properties": { "title": {"type": "string"}, "price": {"type": "number"}, "rating": {"type": "number"} } } }' ``` --- ## 🔗 Интеграция с n8n ### Webhook trigger в n8n 1. Создать webhook node в n8n 2. Получить URL: `https://your-n8n.com/webhook/skyvern-callback` 3. Добавить в Skyvern задачу: ```bash curl -X POST http://localhost:8000/v1/run/tasks \ -H "Content-Type: application/json" \ -H "x-api-key: $SKYVERN_API_KEY" \ -d '{ "prompt": "Extract data", "url": "https://target-site.com", "webhook_url": "https://your-n8n.com/webhook/skyvern-callback" }' ``` 4. n8n получит JSON с результатами после завершения --- ## 📚 Дополнительная документация - **Официальная документация:** https://www.skyvern.com/docs - **GitHub:** https://github.com/Skyvern-AI/skyvern - **Discord:** https://discord.gg/skyvern-ai --- ## ✅ Чеклист готовности - [x] Backend запущен и отвечает на запросы - [x] PostgreSQL работает (42 таблицы) - [x] Redis работает - [x] Playwright Chromium установлен - [x] JWT токен сгенерирован и сохранён - [x] API endpoints работают (создание/статус задач) - [x] Frontend зависимости установлены - [ ] OpenAI API настроен (нужен VPN/прокси или другая LLM) - [ ] Frontend запущен (необязательно, можно работать через API) --- ## 🚨 Следующие шаги 1. **РЕШИТЬ ПРОБЛЕМУ С OpenAI:** - Настроить VPN/прокси для OpenAI API - OR переключиться на Anthropic/Ollama - OR использовать OpenRouter (https://openrouter.ai) 2. **Запустить frontend:** ```bash cd skyvern-frontend && npm run dev ``` 3. **Создать первую успешную задачу** (после решения п.1) 4. **Настроить интеграцию с n8n** для автоматизации 5. **Применить для traktorodetal.ru парсинга** --- **🎉 СИСТЕМА ГОТОВА К РАБОТЕ после решения OpenAI проблемы!**