Some checks failed
Run tests and pre-commit / Run tests and pre-commit hooks (push) Has been cancelled
Run tests and pre-commit / Frontend Lint and Build (push) Has been cancelled
Publish Fern Docs / run (push) Has been cancelled
Update OpenAPI Specification / update-openapi (push) Has been cancelled
- Implemented full Russian translation (ru) for 8 major pages - Added LanguageSwitcher component with language detection - Translated: Navigation, Settings, Workflows, Credentials, Banner, Examples - Fixed API endpoint path: changed to use sans-api-v1 client for /v1/ endpoints - Fixed CORS: added http://localhost:8081 to ALLOWED_ORIGINS - Added locales infrastructure with i18next and react-i18next - Created bilingual JSON files (en/ru) for 4 namespaces - 220+ translation keys implemented - Backend CORS configuration updated in .env - Documentation: I18N implementation guides and installation docs
11 KiB
11 KiB
✅ 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 года)
x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJvcmdfZGV2ZWxvcG1lbnQiLCJleHAiOjE4MDMxNDc3MDMsImlhdCI6MTc3MTYxMTcwM30.HcAprOMAuMpB-_QSZWiRG642FNezc9fepIQn0OFKH-E
Organization
- ID:
org_development - Name: Development Organization
Сохранен в .env
SKYVERN_API_KEY=eyJhbGc...
📡 API Endpoints (проверены и работают)
Создание задачи
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
Проверка статуса
curl "http://localhost:8000/v1/runs/{run_id}" \
-H "x-api-key: YOUR_JWT_TOKEN"
Полный список endpoints
POST /v1/run/tasks- создать задачуPOST /v1/run/workflows- запустить workflowGET /v1/runs/{run_id}- статус выполненияGET /v1/runs/{run_id}/timeline- timeline задачиPOST /v1/runs/{run_id}/cancel- отменить задачуGET /v1/workflows- список workflowsPOST /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 (рекомендуется)
# В .env добавить:
HTTP_PROXY=http://your-vpn:port
HTTPS_PROXY=http://your-vpn:port
2. Переключиться на другую LLM модель
# Отключить 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 (если есть ключ)
ENABLE_ANTHROPIC=true
ANTHROPIC_API_KEY=sk-ant-...
LLM_KEY=ANTHROPIC_CLAUDE_SONNET
4. Локальная LLM через Ollama
# Установить 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 (если остановлен)
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
cd /home/vodorod/dorod/skyvern/skyvern-frontend
npm run dev
# Откроется на http://localhost:5173
Запустить Docker сервисы (если остановлены)
cd /home/vodorod/dorod/skyvern
docker compose -f docker-compose.deps.yml up -d
Проверить статус всех сервисов
# 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
tail -f backend.log
Остановить backend
pkill -f "uvicorn skyvern.forge.api_app:app"
Перезапустить PostgreSQL
docker restart skyvern-postgres
Выполнить миграции (если добавлены новые)
source .venv/bin/activate
alembic upgrade head
Создать новую организацию
# В 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 проблемы)
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"
}'
Заполнение формы
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
}'
Извлечение структурированных данных
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
- Создать webhook node в n8n
- Получить URL:
https://your-n8n.com/webhook/skyvern-callback - Добавить в Skyvern задачу:
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"
}'
- n8n получит JSON с результатами после завершения
📚 Дополнительная документация
- Официальная документация: https://www.skyvern.com/docs
- GitHub: https://github.com/Skyvern-AI/skyvern
- Discord: https://discord.gg/skyvern-ai
✅ Чеклист готовности
- Backend запущен и отвечает на запросы
- PostgreSQL работает (42 таблицы)
- Redis работает
- Playwright Chromium установлен
- JWT токен сгенерирован и сохранён
- API endpoints работают (создание/статус задач)
- Frontend зависимости установлены
- OpenAI API настроен (нужен VPN/прокси или другая LLM)
- Frontend запущен (необязательно, можно работать через API)
🚨 Следующие шаги
-
РЕШИТЬ ПРОБЛЕМУ С OpenAI:
- Настроить VPN/прокси для OpenAI API
- OR переключиться на Anthropic/Ollama
- OR использовать OpenRouter (https://openrouter.ai)
-
Запустить frontend:
cd skyvern-frontend && npm run dev -
Создать первую успешную задачу (после решения п.1)
-
Настроить интеграцию с n8n для автоматизации
-
Применить для traktorodetal.ru парсинга
🎉 СИСТЕМА ГОТОВА К РАБОТЕ после решения OpenAI проблемы!