---
name: scrape-aa
description: Скрапить данные Artificial Analysis (бенчмарки, цены, метаданные моделей)
             и обновить data/aa_models.json. Оркестрирует три скрипта последовательно.
argument-hint: "[--limit N] [--skip-done] [--benchmarks-only]"
user-invocable: true
---
# /scrape-aa

Пример: `/scrape-aa` — полный цикл
Пример: `/scrape-aa --skip-done` — только недостающие данные
Пример: `/scrape-aa --limit 20` — первые 20 моделей (для теста)

## Предусловия

- Зависимости установлены: `pip install -r requirements.txt` (из корня репо)
- Переменные окружения в `.env` в рабочей директории: `HF_TOKEN` (опционально)
- Firecrawl CLI доступен (используется `aa_benchmarks_scraper.py`)

## Алгоритм

### Шаг 1 — Bulk scraping (список моделей + базовые данные)

```bash
python scrape-aa/aa_bulk_scraper.py --output data/aa_models.json
```

Если добавляется `--resume` — продолжит с последней позиции.
Если добавляется `--benchmarks-only` — пропустить этот шаг.

Собирает для каждой модели:
- AA listing: intelligence index, params, context window, price, speed
- AA detail page: benchmark scores (JSON-LD + interact fallback)
- HF config.json: архитектурные параметры

Ожидаемый результат: `data/aa_models.json` с базовым списком моделей.

### Шаг 2 — Обогащение метаданными

```bash
python scrape-aa/aa_enrich_metadata.py --data data/aa_models.json
```

Добавляет из HuggingFace API:
- `license` — из cardData.license / тегов `license:xxx`
- `modalities` — из pipeline_tag + архитектурных хинтов HF config
- `thinking_mode` — определяется из display_name / aa_slug

### Шаг 3 — Бенчмарки (Selenium/Firecrawl)

```bash
python scrape-aa/aa_benchmarks_scraper.py [--limit N] [--skip-done]
```

Скрапит индивидуальные benchmark scores для каждой модели.
`--skip-done` — пропускает модели у которых уже есть benchmark данные.

### Шаг 4 — Обновить дашборд

После завершения всех трёх шагов — запустить `/update-dashboard`.

## Обработка ошибок

| Ситуация | Действие |
|----------|----------|
| Шаг 1 упал на середине | Перезапустить с `--resume` |
| 429 от HF API | Скрипты сами делают retry с backoff; подождать |
| Модель без HF страницы | Записывается с `hf_config: null`, не критично |
| Firecrawl недоступен | `aa_benchmarks_scraper` упадёт; остальные шаги независимы |

## Флаги

| Флаг | Описание |
|------|----------|
| `--limit N` | Обработать только первые N моделей (тест) |
| `--skip-done` | Пропустить модели с уже заполненными данными |
| `--benchmarks-only` | Только шаг 3 (бенчмарки) |
| `--resume` | Продолжить bulk scraping с последней позиции |

## Выходные файлы

- `data/aa_models.json` — основной файл (обновляется на месте)
- Лог в stdout с временными метками

## После завершения

Вывести сводку:
```
✓ Artificial Analysis scraping complete
  Всего моделей: N
  С бенчмарками: M
  С лицензией:   K
  Файл: data/aa_models.json
```

Затем предложить `/update-dashboard`.
