seo-factory-mcp
MCP server for SEO content factory and blog growth cycle, enabling content publishing with validation, interlinking, search query mining, and content audits.
README
seo-factory-mcp
MCP-сервер + скиллы для Claude Code: SEO контент-фабрика и цикл роста блога — без сервера и крона, агент запускается когда вы просите.
Работает с любым сайтом, реализующим zaytsv-совместимый article-API
(см. контракт):
переписали клон под другую тематику, оставили эндпоинты — подключается одной
командой add_site. Сайтов может быть несколько.
- 📝 Публикация с валидацией — errors блокируют, warnings предупреждают: FAQ-секция (FAQPage-разметка), обложка первой картинкой (переживает PUT), title ≤60, description ≤160, внутренние ссылки
- 🔗 Перелинковка — тематический скоринг (тот же, что виджет «Читайте также» на сайте): статьи-сироты без входящих ссылок + доноры, готовые markdown-сниппеты
- 🔍 Майнинг «второй страницы» — сопоставление запросов Яндекс.Вебмастера со статьями: что дожать, что написать (пара к MCP yandex-marketing)
- 🧾 Контент-аудит — без FAQ, короткие, без обложки, мало ссылок
- 📦 Без зависимостей — чистый Node ≥18, ставится и запускается сразу
Установка
Вариант A — плагин Claude Code (рекомендуется: тулы + скиллы-плейбуки):
/plugin marketplace add skiddgoddamn/seo-factory-mcp
/plugin install seo-factory@seo-factory
Вариант B — любой MCP-клиент через npx (только тулы, без скиллов) — см. examples/.mcp.json.
Подключение сайта
- Откройте
<ваш-сайт>/articles/api, создайте токен (видzmcp_…, показывается один раз). - Скажите агенту: «подключи сайт https://ваш-сайт.ru с токеном zmcp_…» — он вызовет
add_site(валидирует контракт и токен живыми запросами; невалидное не сохраняется). - Конфиг:
~/.seo-factory-mcp/config.json(несколько сайтов, дефолтный,articlePathдля блога не на/articles,yandexHostдля цикла роста,hiddenTagsдля скрытых тем).
Быстрый старт без add_site: env SEO_FACTORY_BASE_URL (+ SEO_FACTORY_TOKEN).
Read-only тулы (аудиты, списки, подбор ссылок) работают и вовсе без токена.
Использование
напиши и опубликуй статью про выбор CRM для малого бизнеса
Скилл seo-content-factory проверит дубли, соберёт перелинковку, напишет текст с FAQ и обложкой, провалидирует и опубликует.
что дожать в блоге по данным поиска?
Скилл seo-growth-loop возьмёт запросы позиций 8–30 из Вебмастера (если подключён yandex-marketing MCP), найдёт сирот, соберёт приоритизированный план и исполнит.
Тулы (13)
| Тул | Что делает |
|---|---|
setup |
статус конфига и живой auth-probe по всем сайтам + онбординг |
add_site |
добавить/обновить сайт (живая валидация; alias, articlePath, yandexHost, hiddenTags) |
list_articles |
лёгкий список с фильтрами (tag/query), скрытые помечаются |
get_article |
полная статья по slug (id для update/delete — в ответе) |
publish_article |
валидация → POST; финальный slug/URL из ответа |
update_article |
resolve по slug → PUT; ловит затирание обложки; 403-готча |
delete_article |
⚠️ confirm:true; предупреждает: IndexNow об удалении не узнаёт |
upload_image |
картинка → URL (вставить  первой строкой = обложка) |
validate_article |
офлайн-линтер: errors/warnings/facts |
audit_orphans |
статьи-сироты + доноры (граф «Читайте также») |
audit_content |
аудит полных тел: FAQ/длина/обложка/ссылки |
suggest_links |
тематически близкие + готовые сниппеты перелинковки |
match_queries |
запросы Вебмастера → «дожать slug» / «написать новую» |
Большие входы/выходы — через файлы (contentFile, queriesFile, saveToFile),
чтобы не гнать мегабайты через контекст модели.
Сосуществование с zaytsv-mcp
У zaytsv-mcp есть простые article_*
тулы на тот же API. Если установлены оба плагина — для статей предпочитайте
seo-factory: здесь валидация, защита обложки от PUT-затирания и перелинковка;
article_* в zaytsv-mcp остаются для быстрых правок без SEO-обвязки.
Разработка
npm run check # синтаксис всех .mjs
npm test # 18 юнитов (node --test) + smoke по stdio
Тесты уводят конфиг в temp через SEO_FACTORY_CONFIG_DIR — живой
~/.seo-factory-mcp/config.json не трогается.
Публикация: тег vX.Y.Z → GitHub Actions (ассерт синка версий → тесты →
npm publish --provenance).
Безопасность
- Токен
zmcp_…даёт полный доступ к аккаунту сайта (не только статьи). Не коммитьте его; в конфигах клиентов храните ссылку${SEO_FACTORY_TOKEN}, не значение. - Файл конфига пишется с mode 0600 (на Windows это no-op — при необходимости ограничьте доступ ACL).
add_siteне сохраняет токен, не прошедший живую проверку; отзыв — на<сайт>/articles/api.
Лицензия
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.