From Marketing Tools
SEO/GEO/AEO content pipeline for the Russian market: keyword research, writing, optimization and publishing longreads/landing pages under Yandex stack. Runs Python scripts for quality scoring, readability, key density with lemmatization and AI-trace removal.
How this skill is triggered — by the user, by Claude, or both
Slash command
/marketing-tools:seo-machine-ruThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Полный конвейер производства SEO-контента под российский поиск и AI-выдачу. Локализован под Яндекс-стек (Метрика/Вебмастер/Wordstat). Аналитические модули написаны под русский (морфология, читаемость, anti-AI на русском). Скилл **самодостаточен**: движок (скоринг/читаемость/плотность/чистка/упаковка) внутри, данные и публикацию подключаете своими (см. `.env.example`).
README.mdcontext/ai-citation-targets.mdcontext/internal-links-map.mdcontext/product.mdcontext/target-keywords.mdexamples/README.mdexamples/keywords.sample.jsonexamples/sample-article.mdexamples/sample-article.schema.jsonreferences/aeo-geo.mdreferences/agents-checklists.mdreferences/data-yandex-tilda.mdreferences/seo-guidelines-ru.mdreferences/wordstat-real-recipe.mdreferences/workflow.mdscripts/build_report_docx.pyscripts/content_scorer.pyscripts/content_scrubber.pyscripts/keyword_analyzer_ru.pyscripts/opportunity_scorer.pyПолный конвейер производства SEO-контента под российский поиск и AI-выдачу. Локализован под Яндекс-стек (Метрика/Вебмастер/Wordstat). Аналитические модули написаны под русский (морфология, читаемость, anti-AI на русском). Скилл самодостаточен: движок (скоринг/читаемость/плотность/чистка/упаковка) внутри, данные и публикацию подключаете своими (см. .env.example).
Перед любой задачей прочитай контекст продукта: context/product.md (заполняется под твой бренд/ICP/оффер). Это заменяет внешний marketing-context.
research, cluster).write, optimize, rewrite).Команда (фаза) запускает аналитические роли (references/agents-checklists.md) и Python-скрипты (scripts/).
| Фаза | Что делает | Чем | Выход |
|---|---|---|---|
| research | семантика + топ-10 Яндекса + гэпы + бриф | Wordstat (references/wordstat-real-recipe.md) → scripts/opportunity_scorer.py; роль keyword-mapper | бриф research/brief-<slug>.md |
| cluster | пиллар + 8-12 спутников + карта перелинковки | роль cluster-strategist + opportunity_scorer | research/cluster-<slug>.md |
| write | статья 1500-3000 слов, AEO-ready | роли + после: scrub → content_scorer.py (порог 70) | drafts/<slug>.md |
| optimize | финальный SEO-проход, 0-100 | seo_quality_rater_ru.py + роли seo-optimizer/meta-creator/internal-linker | отчёт + правки |
| rewrite | обновление старого материала | те же + диф изменений | rewrites/<slug>.md |
| audit | разбор URL/файла, почему не ранжируется | seo_quality_rater_ru.py + Вебмастер позиции | audits/<slug>.md |
| aeo | оптимизация под AI-цитирование | references/aeo-geo.md | план цитируемости |
| publish | публикация на сайт | ваш CMS (Tilda/WordPress/Headless) | пост/страница |
Подробный сценарий каждой фазы: references/workflow.md.
scripts/)Все скрипты — чистый stdlib (pymorphy2 опционально, есть fallback; requests/python-docx нужны для wordstat_fetch/docx). Запуск из папки scripts/.
| Скрипт | Что считает | Запуск |
|---|---|---|
content_scorer.py | композит 5 измерений (humanity/specificity/structure/seo/readability), порог 70, JSON для авто-ревайза | python content_scorer.py draft.md --kw "ключ" |
seo_quality_rater_ru.py | on-page SEO 0-100 по RU-гайдлайнам (объём, H2, мета, ссылки, плотность, AEO-intro) | python seo_quality_rater_ru.py draft.md --kw "ключ" |
readability_ru.py | Флеш-Оборнева + водность (Главред) + структура | python readability_ru.py draft.md |
keyword_analyzer_ru.py | плотность с лемматизацией, распределение, переспам | python keyword_analyzer_ru.py draft.md --kw "ключ1" "ключ2" |
content_scrubber.py | чистит невидимые Unicode + типографика RU (НЕ трогает ---/таблицы) | python content_scrubber.py draft.md --in-place |
opportunity_scorer.py | приоритет ключей (8 факторов, CTR-кривая Яндекса) | python opportunity_scorer.py keywords.json |
wordstat_fetch.py | реальные частоты Wordstat через internal API (headless, на cookie) | python wordstat_fetch.py kw.txt --cookie "..." |
wordstat_browser_snippet.js | тот же съём частот через browser_evaluate на залогиненной странице | paste в browser_evaluate |
build_report_docx.py | упаковка brief/cluster/draft в один Word-файл для стейкхолдера | python build_report_docx.py --title T --out r.docx --draft d.md |
Цикл write: написать → content_scrubber.py --in-place → content_scorer.py. Если composite < 70 — применить priority_fixes, переписать (до 2 итераций), затем seo_quality_rater_ru.py для финального скора.
references/wordstat-real-recipe.md + scripts/wordstat_*. Свой аккаунт Яндекса в .env..env). См. references/data-yandex-tilda.md.WebFetch/WebSearch/браузер) + листиклы-обзоры рынка.opportunity_scorer.py ест JSON-массив ключей {keyword, volume, position, intent, competition, cluster_size} — собери его из вывода Wordstat/Вебмастера.
| Файл | Когда |
|---|---|
references/workflow.md | пошаговый сценарий каждой фазы |
references/agents-checklists.md | аналитические роли (seo-optimizer, meta-creator, internal-linker, keyword-mapper, editor, cro-analyst, headline-generator, cluster-strategist и др.) как RU-чеклисты |
references/aeo-geo.md | оптимизация под AI-выдачу: Яндекс Нейро/Alice/GigaChat/ChatGPT/Perplexity + аудит цитирований + RU-каталоги |
references/seo-guidelines-ru.md | пороги: объём, плотность (с леммами), длины мета под Яндекс, читаемость |
references/data-yandex-tilda.md | откуда брать данные (Яндекс) и куда публиковать (ваш CMS) |
references/wordstat-real-recipe.md | рабочий съём реальных частот Wordstat (internal API getTable, логин, анти-завис браузера, suggest); Direct API обычно закрыт (error 58) |
context/)context/product.md — бренд/ICP/оффер/голос/уникальные данные (читать первым).context/target-keywords.md — ядро по кластерам (пиллар/кластер/лонг-тейл + интент + текущие позиции).context/internal-links-map.md — карта страниц для перелинковки.context/ai-citation-targets.md — где хотим цитироваться (RU-поверхности).examples/)examples/ — образец структуры артефактов прогона (keywords.json → brief → cluster → draft + schema → Word-отчёт). Брать как шаблон формата выходных файлов.error 58). Реальный способ — internal API POST /wordstat/api/getTable с залогиненного браузера (куки сами, CSRF не нужен). Свой аккаунт Яндекса — в .env, 2FA проходит владелец, сессия в профиле браузера сохраняется. Подробно — references/wordstat-real-recipe.md.content_scrubber.py: дефис-нормализация не трогает --- (frontmatter) и |---| (таблицы) — иначе ломались мета и таблицы.npx claudepluginhub jhamidun/claude-code-config-pack --plugin marketing-toolsBuilds a throwaway prototype to answer a design question about UI appearance or state/logic behavior. Guides you through two branches: interactive terminal app for logic validation, or multiple UI variations for visual exploration.