Files
portal/docs/marketing/README.md
T
Дмитрий 4a64d6a7e1 chore(security): mask supplier phone-junk in ПИЛОТ.md + accept history FPs + fix ADR link
- ПИЛОТ.md: phone-junk "79135XXXXXX" замаскирован (supplier CSV project-колонка,
  не ПДн клиента; §5.2). +RU jargon в cspell-words.txt.
- .gitleaksignore: +8 fingerprints исторических ru-phone-unmasked + маска в комментарии.
- docs/marketing/README.md: fix битой ADR-015 ссылки + markdownlint.
2026-05-23 09:47:18 +03:00

139 lines
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# C1 Marketing Tooling — Home Doc
**Раздел карты:** C1 «Маркетинг и привлечение»
**Версия:** 1.0 от 22.05.2026
**Кросс-ссылки:** [Tooling §4.4958](../Tooling_v8_3.md) · [ADR-015](../adr/015-marketing-tooling.md) · [Spec](../superpowers/specs/2026-05-22-c1-marketing-tooling-design.md) · [Plan](../superpowers/plans/2026-05-22-c1-marketing-tooling.md) · [marketing-vet.md](../security/marketing-vet.md)
---
## Карта раздела — 10 узлов (#74–83)
| # | Узел | Категория | Описание |
|---|---|---|---|
| 74 | **analytics-dashboard** (reuse #19 Superpowers + #10 Boost) | reuse | Анализ конверсий воронки и когорт прямо из кода/БД через Boost — без нового инструмента |
| 75 | **seo-content** (reuse #66 laravel-backend-patterns + #60 context7) | reuse | SEO-метаданные в роутах Laravel, структурированные данные; context7 для актуальных стандартов |
| 76 | **utm-tracking** (reuse #47 openapi-mcp-server) | reuse | UTM-параметры через OpenAPI-спеку портала — обогащение сделок источником трафика |
| 77 | **ad-creative** (reuse #46 Design plugin + #45 Universal Icons MCP) | reuse | Генерация креативов и UX-копирайт для рекламных материалов |
| 78 | **marketing-metrika** | analytics | Яндекс Метрика MCP — посещаемость, источники, конверсии (READ-ONLY) |
| 79 | **marketing-wordstat** | research | Яндекс Wordstat MCP — ключевые слова, поисковый спрос РУ-рынка (Wordstat only) |
| 80 | **marketing-telegram** | social | Telegram MCP — публикации, планирование и аналитика Telegram-каналов Лидерры |
| 81 | **marketing-postiz** | social | Postiz MCP — кросс-постинг в соцсети (self-hosted AGPL; **DEFERRED до self-host**) |
| 82 | **marketing-dataforseo** | research | DataForSEO API MCP — SERP/SEO аналитика (**DEFERRED**, платный, post-Б-1) |
| 83 | **marketing-unisender** | email | Unisender Go MCP — email-рассылки (**DEFERRED**, обёртка не готова; SMTP уже в стеке) |
---
## Что ставим сейчас vs DEFERRED
### Установлено / проволочено в `.mcp.json` (Task 4)
| # | Инструмент | npm-пакет | Статус в `.mcp.json` |
|---|---|---|---|
| 78 | Yandex Metrika MCP | `yandex-metrika-mcp` (MIT) | Активный entry `marketing-metrika` |
| 79 | Yandex Wordstat MCP | `yandex-wordstat-mcp` (MIT) | Активный entry `marketing-wordstat` |
| 80 | Telegram MCP | `github:chigwell/telegram-mcp` (Apache-2.0) | Активный entry `marketing-telegram` |
| 81 | Postiz MCP | `postiz-mcp` (лицензия под ветом) | Закомментированный skeleton `_comment_postiz_skeleton` |
**Что нужно от заказчика перед использованием #78/#79:**
1. Получить OAuth-токен на [oauth.yandex.ru](https://oauth.yandex.ru), приложение с доступом к Метрике/Директ (scope read-only).
2. Добавить в `.env.local` (gitignored): `YANDEX_OAUTH_TOKEN=y0_AgA...`
**Что нужно для #80 (Telegram):**
1. Зарегистрировать выделенный Telegram-аккаунт для Лидерры (не личный).
2. Получить `TELEGRAM_API_ID` и `TELEGRAM_API_HASH` на [my.telegram.org/apps](https://my.telegram.org/apps).
3. Сгенерировать `TELEGRAM_SESSION_STRING` один раз через GramJS или Telethon.
4. Добавить все три значения в `.env.local`.
### DEFERRED
| # | Причина отсрочки |
|---|---|
| 81 Postiz | Требует self-host `gitroomhq/postiz-app`; лицензия `antoniolg/postiz-mcp` не верифицирована (см. Open vet notes) |
| 82 DataForSEO | Платный API; активировать post-Б-1 (регистрация ООО, реквизиты) |
| 83 Unisender Go | SMTP уже настроен в стеке (фирменная почта liderra.ru); отдельная MCP-обёртка — отдельный ADR |
---
## Постура безопасности
### #78 Metrika — READ-ONLY analytics
- OAuth-токен запрашивается с минимальными правами: `y.metrika.direct.read` (чтение Метрики).
- **Никаких мутирующих вызовов** через MCP: цели, фильтры, настройки счётчиков — только через Яндекс UI.
- Токен хранится в `.env.local` (gitignored), не в `.mcp.json`.
### #79 Wordstat — Wordstat only, без Direct-мутаций
- IS9-постура: Wordstat-инструменты (keyword research, trends) разрешены.
- **Direct-инструменты мутации** (создание кампаний, изменение ставок, управление объявлениями) — **запрещены** (MKT8: нет автоматических трат рекламного бюджета без явного подтверждения заказчика).
- Один OAuth-токен на #78 и #79 — read-only scope достаточен для обоих.
### #80 Telegram — выделенный аккаунт (MKT8)
- Session String — эквивалент полного доступа к аккаунту. Хранить только в `.env.local`.
- **Обязателен выделенный аккаунт Лидерры**, не личный аккаунт Дмитрия: если SESSION_STRING утечёт — только бизнес-аккаунт под угрозой.
- Публикации в Telegram-каналах через MCP — только после явного подтверждения содержания.
### #81 Postiz — internal-only, AGPL-3.0
- `gitroomhq/postiz-app` лицензирован AGPL-3.0: использование разрешено для внутренних нужд Лидерры без изменения кода.
- **Запрещено**: модифицировать исходный код Postiz без публикации изменений (AGPL требование).
- `antoniolg/postiz-mcp` лицензия — под ветом (см. ниже).
---
## Postiz self-host инструкция
Когда будет готово (после Б-1 и верификации лицензии):
```bash
# 1. Клонировать репозиторий
git clone https://github.com/gitroomhq/postiz-app
cd postiz-app
# 2. Запустить через Docker Compose (рекомендуемый способ)
cp .env.example .env
# Отредактировать .env: DATABASE_URL, REDIS_URL, JWT_SECRET, BACKEND_INTERNAL_URL
docker-compose up -d
# 3. Открыть UI на http://localhost:5000, создать аккаунт
# 4. Подключить соцсети (VK, Telegram, Instagram и др.) в разделе Integrations
# 5. Получить API Key в настройках Postiz
# 6. Добавить в .env.local:
# POSTIZ_API_URL=http://localhost:5000
# POSTIZ_API_KEY=<ключ из Postiz UI>
```
Документация Postiz: [docs.postiz.com](https://docs.postiz.com)
Для активации MCP-entry — раскомментировать `_comment_postiz_skeleton` в `.mcp.json` согласно инструкции внутри.
> AGPL-3.0 обязательства: Лидерра использует Postiz в исходном виде для внутренних нужд (self-hosted). Никаких модификаций исходного кода без публикации изменений. Внешним пользователям SaaS не предоставляется.
---
## Open vet notes
| Риск | Статус | Действие |
|---|---|---|
| `antoniolg/postiz-mcp` лицензия | **NOT VERIFIED** | Перед активацией: проверить `LICENSE` файл в репозитории [github.com/antoniolg/postiz-mcp](https://github.com/antoniolg/postiz-mcp); если MIT — активировать; если AGPL/GPL — консультация юриста |
| `telegram-mcp` npm-пакет (0.1.20, Proprietary) | Не использован | Используем `github:chigwell/telegram-mcp` (Apache-2.0) напрямую, не npm-вариант |
| Yandex OAuth широкий scope | Низкий | Scope `y.metrika.direct.read` — только чтение; Директ-мутации через MCP вне постуры |
| SESSION_STRING утечка | Средний | Хранить только в `.env.local` (gitignored); ротировать при подозрении |
---
## Cross-refs
- **Tooling Прил. Н §4.49–58** — полный реестр 10 узлов C1 с 9-атрибутными блоками
- **ADR-015** — решения интеграции C1 (IS1–IS9 маркетинг-вет, MKT1–MKT8 ограничения)
- **Spec** — `docs/superpowers/specs/2026-05-22-c1-marketing-tooling-design.md`
- **Plan** — `docs/superpowers/plans/2026-05-22-c1-marketing-tooling.md`
- **marketing-vet.md** — `docs/security/marketing-vet.md` — провенанс-вет каждого внешнего инструмента
- **routing-off-phase.md** — задача «маркетинг-аналитика» → `marketing-metrika`; «ключевые слова» → `marketing-wordstat`; «Telegram-канал» → `marketing-telegram`
- **PSR_v1 R10.1** — реестр off-phase инструментов (блок 1 C1-категория)
- **Pravila §13.2** — off-phase marketing-tooling абзац