# content-distribution

Раздаёт один текст по DEV.to, Hashnode, Reddit, Bluesky и другим площадкам: агент готовит варианты под каждый канал, сервер их публикует.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 5
- Автор: AutomateLab-tech
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/AutomateLab-tech/content-distribution-mcp
- Обновлён: 2026-06-08
- HTML: https://affpapa.org/nevibecode/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 остались старые имена, их придётся поправить.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `DEV_TO_API_KEY`, `HASHNODE_TOKEN`, `HASHNODE_PUBLICATION_ID`, `GITHUB_TOKEN`, `GITHUB_DISCUSSION_REPO`, `REDDIT_CLIENT_ID`, `REDDIT_CLIENT_SECRET`, `REDDIT_USERNAME`, `REDDIT_PASSWORD`, `BLUESKY_IDENTIFIER` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
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

**Командой платформы**
```bash
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 сервера

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "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 сервера

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "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 CLI

**Командой платформы**
```bash
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 сервера

## Когда брать
- опубликовать одну статью сразу на нескольких площадках
- собрать варианты текста под лимиты и правила каждого канала
- не публиковать дубль при повторном запуске агента
- отложить посты на нужное время и отправить их из cron
- узнать, где именно уже вышел материал и по какой ссылке

## Примеры запросов агенту
- Опубликуй статью `n8n-webhook-setup` в devto и в сабреддит ClaudeAI
- Поставь этот пост на завтра на 9 утра и остальное выложи сейчас
- Покажи, что уже опубликовано по этому материалу и где

## Похожие
- [social-content](https://affpapa.org/nevibecode/skills/openclaudia-social-content.md) — скилл · 508 установок
- [social-publisher](https://affpapa.org/nevibecode/skills/social-publisher.md) — скилл · 5600 установок
- [technical-article-writer](https://affpapa.org/nevibecode/skills/technical-article-writer.md) — скилл · 4700 установок

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
