---
name: article-writer
description: Написание SEO-статей для публикации на Lidfly. Сбор семантики через Wordstat, генерация текста и обложки, удаление AI-маркеров, публикация. Используй когда пользователь просит написать статью, создать материал или подготовить контент для публикации.
metadata: {"openclaw":{"emoji":"📝","requires":{"anyBins":["npx"],"env":["YANDEX_DIRECT_TOKEN","LIDFLY_TOKEN"]}}}
---

# Article Writer (MCP)

Полный цикл SEO-статьи: тема — семантика — текст — картинка — анти-AI — публикация на Lidfly.

Используй этот навык когда задача связана с написанием и публикацией статьи на Lidfly:
- Сбор семантического ядра через Wordstat
- Подготовка текста статьи по выбранным ключевым фразам
- Генерация обложки через `generate_ad_image` (Gemini Flash / nano banana 2)
- Удаление AI-маркеров перед публикацией (используй скилл `ai-markers-remove`)
- Публикация готовой статьи на Lidfly

## Подключение к MCP-серверам

Нужны два эндпоинта одного сервера:

- **Яндекс Директ + Wordstat:** `https://direct-mcp.aatex.ru/mcp`, заголовок `Authorization: Bearer $YANDEX_DIRECT_TOKEN`
- **Lidfly (публикация + `generate_ad_image`):** `https://direct-mcp.aatex.ru/mcp/lidfly`, заголовок `Authorization: Bearer $LIDFLY_TOKEN`

Если клиент не поддерживает HTTP MCP напрямую, используйте мост:

```bash
npx -y mcp-remote https://direct-mcp.aatex.ru/mcp/lidfly --header "Authorization: Bearer $LIDFLY_TOKEN"
```

## Workflow

Строгая последовательность шагов. На каждом шаге 2-5 — **останавливайся и спрашивай пользователя**, не иди дальше без подтверждения.

### Шаг 1. Тема статьи

Если тема не задана в промпте — спросить: «О чём статья? Сформулируй тему и, если есть, аудиторию/угол подачи».

### Шаг 2. Семантическое ядро через Wordstat

1. Собрать 3-5 базовых фраз по теме.
2. Для каждой — вызвать `wordstat_top_requests` (получить до 128 связанных запросов с частотностью).
3. Отсеять мусор: частотность < 30, чужие бренды, нерелевантные; информационные запросы оставлять.
4. Сгруппировать по смыслу, вывести топ-20-30 таблицей (Фраза / Частотность / Интент).
5. Спросить: «Какие фразы использовать? Минимальный объём статьи — 8000 символов, оставить или другой?»
6. Дождаться ответа.

### Шаг 3. Написание статьи

Структура: H1 с главным ключевиком — лид (150-250 симв., ключевик в первых 100 словах) — 4-8 блоков H2 — H3 внутри H2 где нужна детализация — итог + CTA — опциональный FAQ 3-5 вопросов.

Правила: объём не менее минимума (по умолчанию 8000 символов без пробелов), плотность ключевых 1-2%, главная фраза в H1/первом абзаце/одном из H2/заключении, разная длина предложений, без AI-клише «в современном мире», «важно отметить», «следует подчеркнуть».

Перед сохранением — юр. проверка по `LEGAL.md`.

Сохранить в `data/articles/<slug>-draft.md`, показать пользователю превью и подтвердить.

### Шаг 4. Промпт для картинки

Генерация — через `generate_ad_image` (эндпоинт `lidfly`). Квота: 5 бесплатных вызовов/месяц, далее 6 ₽ с баланса **за вызов** (не за файл). Один вызов может отдать до 6 файлов через `crop_to`.

Формула промпта (русский работает): **объект + стиль + фон + освещение + палитра**. Текст/надписи на картинке НЕ просить — кириллица рисуется плохо, заголовок пойдёт через настройки публикации.

Перед генерацией — вызвать `get_recent_images({ limit: 10 })` (read-only, без списаний), если подходящий `public_url` уже есть — использовать его.

Показать пользователю промпт и формат (по умолчанию `lidfly_hero_1920x1080`), спросить: «Генерировать? (да/нет/править/добавить пропорции)».

### Шаг 5. Генерация картинки

```
generate_ad_image({
  prompt: "<согласованный промпт>",
  format: "lidfly_hero_1920x1080",
  crop_to: [<опциональные доп. пропорции>]
})
```

Правила:
- Один вызов = одно списание, независимо от числа файлов
- Каждый `crop_to` должен помещаться в `format` по обеим осям
- При 504 **не ретрай вслепую** — сначала `get_recent_images({ limit: 5 })`, если свежая запись с нужным `batch_id` есть — взять её `public_url`, иначе повторить

Забрать `public_url`, отдать напрямую в поле обложки при публикации или через `lidfly_upload_image(subdomain, image_url)` если нужен хостинг в домене сайта.

### Шаг 6. Удаление AI-маркеров

Применить скилл `ai-markers-remove` к тексту. Результат — `data/articles/<slug>-final.md`, оригинальный `-draft.md` не трогать.

### Шаг 7. Публикация на Lidfly

1. Найти инструмент публикации статьи в `lidfly` (ключевые: `create`, `post`, `article`, `publish`).
2. Передать title, content, cover_image (`public_url`), tags/keywords, description (150-160 символов из лида).
3. Получить URL опубликованной статьи.
4. Отдать пользователю URL + пути к файлам.

## Чеклист перед публикацией

- Тема подтверждена
- Ключевые фразы выбраны пользователем
- Объём не менее 8000 символов без пробелов (или другого согласованного минимума)
- Структура H1/H2/H3 на месте, ключевик в первом абзаце
- Юр. проверка по `LEGAL.md` пройдена
- Черновик сохранён в `<slug>-draft.md`
- Картинка согласована (или явно пропущена)
- AI-маркеры убраны (финал в `<slug>-final.md`)
- Публикация успешна, URL получен

## Правила безопасности

- Никогда не выводи токены в ответах, логах, файлах.
- Перед публикацией — всегда сверяться с `LEGAL.md` (запрещённые термины, «лучший», «№1», гарантии без оснований).
- Не публиковать без подтверждения пользователя на финальном шаге.

## Кросс-ссылки

- `ai-markers-remove` — правила удаления AI-паттернов (шаг 6)
- `demand-research` — расширенное исследование семантики и интента
- `seo-optimizer` — пост-публикационный SEO-аудит title/meta/schema
- `LEGAL.md` — юридическая проверка контента
- `METRIKA-ADS-RULES.md` — правила Wordstat API
