# Horoshop Content Fill

> Заполнение пустых полей карточек товаров в магазине на Хорошопе через API. Используй ВСЕГДА когда пользователь просит "заполнить пустые описания", "сгенерировать описания товаров", "дополнить карточки", "массово прописать short description / marketplace description", "найти товары с пустыми полями". Скилл сканирует каталог через `catalog/export`, находит товары с пустыми `description`, `short_des…

- **Type:** Skill
- **Install:** `agentstack add skill-igorshutko-horoshop-claude-skill-horoshop-content-fill`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [IgorShutko](https://agentstack.voostack.com/s/igorshutko)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [IgorShutko](https://github.com/IgorShutko)
- **Source:** https://github.com/IgorShutko/horoshop-claude-skill/tree/main/horoshop-content-fill
- **Website:** https://www.targetplus-agency.com/

## Install

```sh
agentstack add skill-igorshutko-horoshop-claude-skill-horoshop-content-fill
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Horoshop Content Fill

Массовое заполнение пустых полей карточек товара через API.

## Когда применять

- «Заполни пустые описания»
- «Сгенерируй описания товаров»
- «Дополни карточки на хорошопе»
- «Найди товары без description»
- «Прописать marketplace_description массово»

## Что заполняет

| Поле | Когда заполнять | Длина |
|---|---|---|
| `description.` | пусто или ` | пусто | 100-200 симв, plain text |
| `marketplace_description.` | пусто | 50-150 симв, plain text, для фидов |

**Не трогаем:**
- Поля которые уже заполнены и >минимума (не переписываем)
- `seo_title`/`seo_description`/`h1_title` — это в `horoshop-full-audit` (`--fix seo`)
- `mod_title` — это в `horoshop-full-audit` (`--fix mod-title`)
- `characteristics` — нельзя автогенерировать (это физические параметры товара)

## Pipeline

```
[1] Вводные: домен + креды (если auth не прошёл — инструкция создать API-юзера)
        ↓
[2] Сбор контекста про магазин:
    - Бренд / название
    - Категория товаров (текстиль / электроника / косметика / ...)
    - Тон (B2C разговорный / B2B формальный)
    - Целевая аудитория
        ↓
[3] Запуск find_gaps.py — сканирует каталог, формирует gaps.json
        ↓
[4] Claude (в основном чате) читает gaps.json + references/content_templates.md
    Генерирует тексты для каждого товара
    Сохраняет в proposed_content.json
        ↓
[5] apply_content.py --preview-only — показывает diff первых 3-5 товаров
        ↓
[6] После одобрения: apply_content.py — импорт через catalog/import пакетно
```

## Шаг 1 — Вводные

Спроси у пользователя:
1. **Домен** магазина
2. **Креды** API-юзера (если нет — выдай инструкцию из `references/api_admin_setup.md`)
3. **Бренд / название магазина** — нужно для генерации (например «MyBrand»)
4. **Тон** — формальный или разговорный
5. **Особенности магазина** — что подчёркиваем (свой пошив, доставка 1 день, гарантия и т.д.)

## Шаг 2 — Auth check

Стандартно: POST `/api/auth/`. Если фейл — инструкция создать API-юзера.

## Шаг 3 — Поиск пустых полей

```bash
mkdir -p content_
cd content_
HOROSHOP_DOMAIN= HOROSHOP_LOGIN= HOROSHOP_PASSWORD= \
  python3 ${SKILL_DIR}/scripts/find_gaps.py
```

Опции:
- `--from-file catalog.json` — читать каталог из локального файла (если уже выгружен)
- `--min-desc-len 200` — порог длины description чтобы считать «пусто-эквивалент» (default 200)
- `--field description,short_description,marketplace_description` — какие поля проверять (default все три)

Output:
- `catalog.json` — выгруженный каталог
- `gaps.json` — товары с пустыми полями + контекст

Скрипт также печатает сводку:
```
Главных товаров: 44
Пустых description: 12
Пустых short_description: 8
Пустых marketplace_description: 31

→ Всего товаров с пустыми полями: 35
→ gaps.json: 
```

## Шаг 4 — Генерация контента (Claude в основном чате)

Это **самый важный шаг**. Прочитай:
1. `gaps.json` — что нужно заполнить
2. `references/content_templates.md` — структура и требования
3. `references/prompt_recipes.md` — как генерировать (тон, паттерны, чего избегать)

Сгенерируй для каждого товара тексты на основе:
- `title` — название товара
- `characteristics` — заполненные характеристики
- `brand`, `category`, `price`
- `existing_description` — если есть (для подражания стилю)
- Контекст магазина от пользователя (бренд, тон, особенности)

Сохрани результат в `proposed_content.json`:
```json
[
  {
    "article": "1234",
    "description": "...Особливості...",
    "short_description": "...",
    "marketplace_description": "..."
  }
]
```

**Важно:**
- Не выдумывай характеристики которые не указаны
- Не переписывай уже заполненные поля без явной просьбы
- Описания на украинском (или язык магазина) — соблюдай мультиязычность
- Без AI-стоп-слоп (см. `references/prompt_recipes.md` или подключай скилл `stop-slop`)

## Шаг 5 — Превью

```bash
python3 ${SKILL_DIR}/scripts/apply_content.py --preview-only
```

Показывает первые 3-5 товаров: текущее → новое. Пользователь смотрит, говорит «заходит» / «переделай».

Если не заходит — попроси пользователя сказать что не так (тон, длина, факты), скорректируй промпт, перегенерируй `proposed_content.json`, снова preview.

## Шаг 6 — Импорт

После одобрения:

```bash
python3 ${SKILL_DIR}/scripts/apply_content.py
```

Запросит подтверждение `(y/N)`, затем импортирует пакетно через `catalog/import` (батчи по 50). Лог сохраняется в `fix_content_.json`.

## Tone of voice

Лаконично, без воды. Spike-стиль. Цифры — главное.

## Reference files

- `references/content_templates.md` — структура полей (что должно быть в description, какая длина, что в short)
- `references/prompt_recipes.md` — паттерны генерации, чего избегать, тональность
- `references/horoshop_help.md` — выжимка из справки Хорошопа: текстовые поля карточки, что в `description` vs `short_description` vs `marketplace_description`, SEO шаблоны, code 11, Шаблон даних. **Цитируй её при превью/отчётах со ссылками на источник.**

## Что НЕ делать

- ❌ Не записывать через API без `--preview-only` сначала
- ❌ Не переписывать уже заполненные поля если пользователь явно не попросил
- ❌ Не выдумывать характеристики (материал, страна, размер) — только то, что в `characteristics`
- ❌ Не дублировать функционал `horoshop-full-audit` (пустые SEO-поля и mod_title — там)
- ❌ Не генерировать тексты с AI-стоп-слоп паттернами («буквально», «по сути», «при этом», «является» и т.д.)

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [IgorShutko](https://github.com/IgorShutko)
- **Source:** [IgorShutko/horoshop-claude-skill](https://github.com/IgorShutko/horoshop-claude-skill)
- **License:** MIT
- **Homepage:** https://www.targetplus-agency.com/

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-igorshutko-horoshop-claude-skill-horoshop-content-fill
- Seller: https://agentstack.voostack.com/s/igorshutko
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
