# Wildberries to Video Prompts Generator

Полный пайплайн для генерации промо-видео из товаров с Wildberries.

## Что делает

1. **Извлекает данные о товаре** с WB (через Playwright или ручной ввод)
2. **Подбирает лучшее фото** по критериям качества
3. **Генерирует промпты для nanobanana** — очистка от надписей + ресайз в 16:9
4. **Генерирует промпты для Veo3** — несколько вариантов видео (single-scene + two-act)

## Установка

```bash
# Базовые зависимости
pip install -r requirements.txt

# Установка Playwright (для автоматического скачивания данных с WB)
playwright install chromium
```

## Использование

### Вариант 1: Без браузера (быстро, fallback)

Генерирует URLs изображений по ID товара:

```bash
python wb_to_video_prompts.py "https://www.wildberries.ru/catalog/202372804/detail.aspx"
```

### Вариант 2: С Playwright (полные данные о товаре)

Открывает браузер и извлекает название, описание, все фото:

```bash
python wb_to_video_prompts.py --fetch "https://www.wildberries.ru/catalog/202372804/detail.aspx"
```

### Вариант 3: Ручной ввод

Если WB недоступен, вводите данные вручную:

```bash
python wb_to_video_prompts.py --manual
```

Введите JSON:
```json
{
  "name": "Сковорода гриль антипригарная",
  "type": "kitchenware",
  "url": "https://www.wildberries.ru/catalog/202372804/detail.aspx",
  "images": ["https://..."]
}
```

## Выход (Output)

Скрипт выдаёт JSON с тремя основными секциями:

### 1. Photo Selection (Выбор фото)

```json
"step_1_photo_selection": {
  "criteria": {
    "priority_1": "Clear product visibility - centered, well-lit",
    "priority_2": "Minimal text overlays",
    ...
  },
  "image_urls": ["https://basket-XX.wbbasket.ru/...1.webp", ...]
}
```

**Действия:**
- Скачайте первые 5-7 фото
- Выберите лучшее по критериям
- Это фото пойдёт на следующий шаг

### 2. Image Processing (Обработка в nanobanana)

```json
"step_2_image_processing": {
  "approach": "two_step_recommended",
  "step_1_cleanup": "Remove all text, watermarks...",
  "step_2_resize": "Extend this image to 16:9...",
  "combined_single_step": "1. Remove all text... 2. Extend to 16:9..."
}
```

**Действия:**
1. Зайдите на [nanobanana.ai](https://nanobanana.ai)
2. Загрузите выбранное фото
3. Скопируйте `step_1_cleanup` → запустите
4. Скопируйте `step_2_resize` → запустите
5. Или используйте `combined_single_step` для одного прохода

**Результат:** Чистое фото 16:9 без надписей

### 3. Video Generation (Генерация видео в Veo3)

```json
"step_3_video_generation": {
  "scenes": [
    {
      "id": "A1",
      "title": "Static Beauty Shot",
      "risk": "low",
      "veo3_prompt": "INT. STUDIO SETTING / SOFT DAYLIGHT //\n..."
    },
    {
      "id": "A2",
      "title": "Product with Rotation",
      "risk": "low-medium",
      "veo3_prompt": "..."
    },
    {
      "id": "B1",
      "format": "two-act",
      "veo3_prompt": "ACT 1...\n[FADE]\nACT 2..."
    }
  ]
}
```

**Действия:**
1. Зайдите на Veo3 (или Kling/syntx)
2. Загрузите обработанное фото (16:9)
3. Попробуйте каждый `veo3_prompt` — генерируйте 3-5 вариантов
4. Выберите лучший результат

**Рекомендации:**
- **A1 (Static)** — самый безопасный, минимум артефактов
- **A2 (Rotation)** — красивее, но больше риск деформации
- **B1 (Two-Act)** — самый эффектный, переход прячет артефакты

## Структура файлов

```
scripts/
├── wb_to_video_prompts.py    # Главный скрипт
├── wb_fetcher.py              # Playwright-fetcher для WB
├── requirements.txt           # Зависимости
└── README.md                  # Эта инструкция
```

## Workflow (от начала до конца)

```bash
# 1. Генерируем промпты
python wb_to_video_prompts.py --fetch "https://www.wildberries.ru/catalog/202372804/detail.aspx" > output.json

# 2. Открываем output.json
cat output.json

# 3. Скачиваем фото из step_1_photo_selection.image_urls[0]
wget "https://basket-05.wbbasket.ru/vol2023/part202372/202372804/images/big/1.webp"

# 4. Обрабатываем в nanobanana.ai
#    - Cleanup: используем step_2_image_processing.step_1_cleanup
#    - Resize: используем step_2_image_processing.step_2_resize
#    Сохраняем результат как "product_16x9.webp"

# 5. Генерируем видео в Veo3
#    - Загружаем product_16x9.webp
#    - Копируем промпт из step_3_video_generation.scenes[0].veo3_prompt
#    - Генерируем → скачиваем лучший вариант
```

## Примеры

Полные примеры выходных данных — см. `/examples/` в корне репозитория.

## Troubleshooting

### Playwright не работает
```bash
# Переустановите браузер
playwright install chromium --force

# Проверьте, что Chrome установлен
playwright install --help
```

### WB блокирует запросы
Используйте `--fetch` с headless=False (браузер откроется и вы увидите, что происходит):
```python
# В wb_fetcher.py измените:
browser = p.chromium.launch(headless=False)  # Было True
```

### Изображения не грузятся (404)
WB меняет CDN. Проверьте URL вручную в браузере или используйте `--fetch` для живых данных.

## Связанные файлы

- [`/prompts/claude_vision/product_to_video_prompt.md`](../prompts/claude_vision/product_to_video_prompt.md) — полный промпт-гайд для анализа фото
- [`/prompts/banananano/cleanup_prompts.md`](../prompts/banananano/cleanup_prompts.md) — библиотека промптов для очистки
- [`/prompts/video_generators/veo3_format.md`](../prompts/video_generators/veo3_format.md) — форматы для Veo3/Kling

## Автор

Проект для демонстрации пайплайна генерации видео.
Разработка: январь 2026
