content-distribution — MCP-сервер для Claude Code
Раздаёт один текст по DEV.to, Hashnode, Reddit, Bluesky и другим площадкам: агент готовит варианты под каждый канал, сервер их публикует.
claude mcp add content-distribution -e DEV_TO_API_KEY=<DEV_TO_API_KEY> -e HASHNODE_TOKEN=<HASHNODE_TOKEN> -e GITHUB_TOKEN=<GITHUB_TOKEN> -e REDDIT_CLIENT_ID=<REDDIT_CLIENT_ID> -e REDDIT_CLIENT_SECRET=<REDDIT_CLIENT_SECRET> -e REDDIT_PASSWORD=<REDDIT_PASSWORD> -e BLUESKY_PASSWORD=<BLUESKY_PASSWORD> -- npx -y @automatelab/content-distribution-mcpЧто делает content-distribution
Сервер принимает готовые варианты текста — переписанные заголовки, обрезанное тело, теги под площадку — и раскладывает их по каналам. Внутри нет вызовов LLM: только адаптеры под devto, hashnode, github-discussions, reddit, bluesky и браузерный фолбэк. Состояние хранится в YAML-файлах в ~/.distribution-mcp.
Публикация идемпотентна по паре content.id и channel: повторный вызов post_publish вернёт уже полученный live_url и не дёрнет API площадки второй раз. Отложенные варианты с schedule_at лежат в ~/.distribution-mcp/scheduled.yaml и отправляются вызовом post_drain — его можно повесить на cron.
Учётные данные лежат в профиле ~/.distribution-mcp/profiles.yaml. LinkedIn, Medium и Twitter/X работают иначе: вместо публикации сервер возвращает needs_browser и ссылку на форму создания поста, ключи для них не нужны. Нужен Node.js 18 или новее. В версии 2.2.0 инструменты переименовали из плоских (publish, schedule) в точечные (post_publish, post_schedule) — если в ваших промптах или нодах n8n остались старые имена, их придётся поправить.
Какие задачи решает
- опубликовать одну статью сразу на нескольких площадках
- собрать варианты текста под лимиты и правила каждого канала
- не публиковать дубль при повторном запуске агента
- отложить посты на нужное время и отправить их из cron
- узнать, где именно уже вышел материал и по какой ссылке
Примеры запросов агенту
- Опубликуй статью
n8n-webhook-setupв devto и в сабреддит ClaudeAI - Поставь этот пост на завтра на 9 утра и остальное выложи сейчас
- Покажи, что уже опубликовано по этому материалу и где
Как установить content-distribution
Командой платформы
claude mcp add content-distribution -e DEV_TO_API_KEY=<DEV_TO_API_KEY> -e HASHNODE_TOKEN=<HASHNODE_TOKEN> -e GITHUB_TOKEN=<GITHUB_TOKEN> -e REDDIT_CLIENT_ID=<REDDIT_CLIENT_ID> -e REDDIT_CLIENT_SECRET=<REDDIT_CLIENT_SECRET> -e REDDIT_PASSWORD=<REDDIT_PASSWORD> -e BLUESKY_PASSWORD=<BLUESKY_PASSWORD> -- npx -y @automatelab/content-distribution-mcpВместо <…> подставьте свои значения. Ещё 8 переменных окружения — в README сервера
Командой платформы
codex mcp add content-distribution --env DEV_TO_API_KEY=<DEV_TO_API_KEY> --env HASHNODE_TOKEN=<HASHNODE_TOKEN> --env HASHNODE_PUBLICATION_ID=<HASHNODE_PUBLICATION_ID> --env GITHUB_TOKEN=<GITHUB_TOKEN> --env GITHUB_DISCUSSION_REPO=<GITHUB_DISCUSSION_REPO> -- npx -y @automatelab/content-distribution-mcpВместо <…> подставьте свои значения. Ещё 8 переменных окружения — в README сервера
Файл настроек
{
"mcpServers": {
"content-distribution": {
"command": "npx",
"args": [
"-y",
"@automatelab/content-distribution-mcp"
],
"env": {
"DEV_TO_API_KEY": "<DEV_TO_API_KEY>",
"HASHNODE_TOKEN": "<HASHNODE_TOKEN>",
"HASHNODE_PUBLICATION_ID": "<HASHNODE_PUBLICATION_ID>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"GITHUB_DISCUSSION_REPO": "<GITHUB_DISCUSSION_REPO>"
}
}
}
}Вместо <…> подставьте свои значения. Ещё 8 переменных окружения — в README сервера
Файл настроек
{
"servers": {
"content-distribution": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@automatelab/content-distribution-mcp"
],
"env": {
"DEV_TO_API_KEY": "<DEV_TO_API_KEY>",
"HASHNODE_TOKEN": "<HASHNODE_TOKEN>",
"HASHNODE_PUBLICATION_ID": "<HASHNODE_PUBLICATION_ID>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"GITHUB_DISCUSSION_REPO": "<GITHUB_DISCUSSION_REPO>"
}
}
}
}Вместо <…> подставьте свои значения. Ещё 8 переменных окружения — в README сервера
Командой платформы
gemini mcp add -e DEV_TO_API_KEY=<DEV_TO_API_KEY> -e HASHNODE_TOKEN=<HASHNODE_TOKEN> -e HASHNODE_PUBLICATION_ID=<HASHNODE_PUBLICATION_ID> -e GITHUB_TOKEN=<GITHUB_TOKEN> -e GITHUB_DISCUSSION_REPO=<GITHUB_DISCUSSION_REPO> content-distribution npx -y @automatelab/content-distribution-mcpВместо <…> подставьте свои значения. Ещё 8 переменных окружения — в README сервера
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о content-distribution
Как установить content-distribution в Claude Code?
Выполните `claude mcp add content-distribution -e DEV_TO_API_KEY=<DEV_TO_API_KEY> -e HASHNODE_TOKEN=<HASHNODE_TOKEN> -e GITHUB_TOKEN=<GITHUB_TOKEN> -e REDDIT_CLIENT_ID=<REDDIT_CLIENT_ID> -e REDDIT_CLIENT_SECRET=<REDDIT_CLIENT_SECRET> -e REDDIT_PASSWORD=<REDDIT_PASSWORD> -e BLUESKY_PASSWORD=<BLUESKY_PASSWORD> -- npx -y @automatelab/content-distribution-mcp`. Переменные окружения подставьте свои.
Что делает content-distribution?
Публикует подготовленные варианты текста в DEV.to, Hashnode, GitHub Discussions, Reddit и Bluesky, а для LinkedIn, Medium и Twitter/X возвращает ссылку на форму создания поста. Состояние и расписание хранит в YAML-файлах.
Нужны ли ключи для всех площадок?
Нет. Заполняйте только те, что собираетесь использовать: LinkedIn, Medium и Twitter/X обходятся без учётных данных, потому что публикуются через браузер.