mcpField
C
Content Distribution Mcp

Content Distribution Mcp

本地服务
automatelab.tech社交媒体42 天前更新

关于 Content Distribution Mcp

Content Distribution Mcp 将单篇内容分发到多个社交和发布渠道,并按平台限制调整版本、跟踪发布状态。它面向需要重复发布的 Agent 和团队,支持幂等重试、定时发布,以及部分渠道的浏览器接续。

主要功能

  1. 01发布到列出的八个渠道
  2. 02提供各渠道格式提示
  3. 03安排和执行队列中的帖子
  4. 04跟踪各渠道的帖子状态
  5. 05幂等重试发布
  6. 06为部分渠道返回浏览器撰写链接

适用场景

  1. 01将产品公告分发到多个渠道
  2. 02安排帖子稍后发布
  3. 03检查某渠道的发布是否成功

MCP 相关

提供发布、定时、状态查询、渠道提示、配置档案和 subreddit 数据等八个 MCP 工具。MCP 客户端通过 stdio 连接;LinkedIn、Medium 和 X/Twitter 使用浏览器撰写页面作为后备。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"content-distribution-mcp-automatelab-tech": {
"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>",
"REDDIT_CLIENT_ID": "<REDDIT_CLIENT_ID>",
"REDDIT_CLIENT_SECRET": "<REDDIT_CLIENT_SECRET>",
"REDDIT_USERNAME": "<REDDIT_USERNAME>",
"REDDIT_PASSWORD": "<REDDIT_PASSWORD>",
"BLUESKY_IDENTIFIER": "<BLUESKY_IDENTIFIER>",
"BLUESKY_PASSWORD": "<BLUESKY_PASSWORD>",
"DISTRIBUTION_BACKEND": "<DISTRIBUTION_BACKEND>",
"DISTRIBUTION_BACKEND_DIR": "<DISTRIBUTION_BACKEND_DIR>"
}
}
}
}
启动命令npx -y @automatelab/content-distribution-mcp
需要配置的环境变量
DEV_TO_API_KEY密钥DEV.to API key for publishing articles
HASHNODE_TOKEN密钥Hashnode personal access token
HASHNODE_PUBLICATION_IDHashnode publication ID
GITHUB_TOKEN密钥GitHub personal access token for GitHub Discussions
GITHUB_DISCUSSION_REPOGitHub repo for Discussions in owner/repo format
REDDIT_CLIENT_ID密钥Reddit OAuth app client ID
REDDIT_CLIENT_SECRET密钥Reddit OAuth app client secret
REDDIT_USERNAMEReddit account username
REDDIT_PASSWORD密钥Reddit account password
BLUESKY_IDENTIFIERBluesky handle (e.g. you.bsky.social)
BLUESKY_PASSWORD密钥Bluesky app password
DISTRIBUTION_BACKENDState backend (default: yaml)
DISTRIBUTION_BACKEND_DIRDirectory for YAML state files (default: ~/.distribution-mcp)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@automatelab/content-distribution-mcp2.2.1

工具

8

收录的工具列表 · 更新于 3 周前

参数类型必填说明
contentobject是
content.idstring是稳定标识符,例如 'my-post@2026-05-20'。与 channel 一起用作幂等键;每篇内容必须唯一。
content.tagsarray否规范标签列表;每个渠道适配器都会对其进行规范化、截断,或转换为平台标签语法。
content.titlestring是内容标题;在大多数渠道中用作帖子标题。
content.authorstring是作者显示名称;在支持作者信息的渠道中用作作者元数据。
content.body_mdstring是Markdown 格式的完整正文。每个渠道适配器都会根据平台要求进行转换或截断。
content.subtitlestring否可选副标题;用于 Hashnode 和 DEV.to 的副标题字段;不支持副标题的渠道会忽略此字段。
content.cta_blockstring否可选的行动号召区块,会追加到支持此功能的渠道的帖子正文中;格式为 Markdown。
content.cover_imagestring否封面图片的可选 URL;用作 Hashnode 和 DEV.to 上的页眉图片;如果没有可用图片,请省略。
content.canonical_urlstring否权威来源的规范 URL;在 DEV.to 和 Hashnode 中设置为 canonical_url,以便通过 SEO 指明原文;首次发布到该渠道时请省略。
content.source_task_idstring否可选跟踪 ID(例如 Notion 任务 ID);会存储在发布状态中以便关联,但绝不会发送到平台。
variantsarray是
profile_namestring是分发配置的名称(凭据存储)。使用 profile.list 查找可用名称。

详细介绍

content-distribution-mcp

随处发布内容,无需针对每个平台反复改写。

一个 MCP 服务,可将单篇内容分发到 8 个以上的渠道(DEV.to、Hashnode、GitHub Discussions、Reddit、Bluesky、LinkedIn、Medium、Twitter),并提供自动适配各平台、幂等发布、针对各社区的反垃圾规则以及集中式状态管理。

解决的问题

大规模创建和发布内容往往处处受阻:

  • 格式各异:Reddit 会移除格式,Twitter 有字符数限制,DEV.to 支持嵌入内容和富媒体。每个平台都需要定制文案。
  • 平台规则:Subreddit 会强制执行冷却期和 flair 要求。社区有自己的发帖模式和自动审核门槛。LinkedIn 会降低含外部链接帖子的曝光。
  • 状态混乱:哪些帖子已在哪些平台上线?如果发布中途失败怎么办?Reddit 上的帖子是否被垃圾信息过滤器自动移除了?

这个 MCP 服务负责处理分发的复杂性。只需编写一次核心内容,即可生成各平台专属版本,并安全地发布到各处。

工作原理

  1. 你的 Agent 为各渠道生成专属文案版本(改写标题、精简文本、添加适合平台的标签,并匹配受众语气)。
  2. 此 MCP 服务 通过幂等处理、OAuth、API 重试和定时发布来发布各个版本,并自动遵守平台限制。
  3. 由你决定 要向哪些平台发布什么内容。MCP 服务会返回各渠道提示(字符数限制、标签词汇、冷却期),但创意决策仍由你掌控。

内部不会调用大模型。没有封闭的 Agent。只有一个简洁的 API,可大规模分发内容到多个平台。

安装

npx -y @automatelab/content-distribution-mcp

也可以将它永久添加到你的 MCP 宿主。

接入 MCP 宿主

Claude Code — 添加到 .claude/mcp.json:

{
  "mcpServers": {
    "content-distribution": {
      "command": "npx",
      "args": ["-y", "@automatelab/content-distribution-mcp"]
    }
  }
}

Claude Desktop — 添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "content-distribution": {
      "command": "npx",
      "args": ["-y", "@automatelab/content-distribution-mcp"]
    }
  }
}

n8n — 使用 MCP Client 节点,通过 stdio 指向 npx -y @automatelab/content-distribution-mcp。

Cursor / Windsurf / 任何 MCP 宿主 — 使用相同的 npx -y @automatelab/content-distribution-mcp 模式。

配置凭据

服务会从存储在 ~/.distribution-mcp/profiles.yaml 中的分发配置文件读取凭据:

# ~/.distribution-mcp/profiles.yaml
default:
  credentials:
    DEV_TO_API_KEY: "your-devto-api-key"
    HASHNODE_TOKEN: "your-hashnode-token"
    HASHNODE_PUBLICATION_ID: "your-pub-id"
    GITHUB_TOKEN: "ghp_..."
    GITHUB_DISCUSSION_REPO: "owner/repo"
    REDDIT_CLIENT_ID: "..."
    REDDIT_CLIENT_SECRET: "..."
    REDDIT_USERNAME: "..."
    REDDIT_PASSWORD: "..."
    BLUESKY_IDENTIFIER: "you.bsky.social"
    BLUESKY_PASSWORD: "..."
  subreddits:
    - ClaudeAI
    - LocalLLaMA

只需为你打算使用的渠道设置凭据。LinkedIn、Medium 和 Twitter/X 会返回 needs_browser 以及撰写页面 URL,无需凭据。

MCP 工具概览

共有八个工具,采用点号分隔的名称构成可导航的树状结构(post.*、channel.*、profile.*、subreddit.*)。每个工具都声明了 outputSchema(调用方可对响应进行类型检查)和 MCP annotations(只读 / 破坏性 / 幂等 / 开放世界提示)。服务内部不会调用大模型。

工具用途
post_publish立即发布;基于 (content.id, channel) 实现幂等
post_schedule将各版本加入 schedule_at 队列,其余内容立即发布
post_drain发布所有当前到期的定时帖子——可通过 cron 运行
post_status查询某篇内容或渠道的各渠道状态
post_unpublish尽力删除(DEV.to 会取消发布;其他平台各不相同)
channel_hints各渠道元数据:字符数限制、Markdown 支持情况、标签词汇
profile_list已配置的分发配置文件名称
subreddit_listSubreddit 目录:冷却期、flair 词汇、上次发帖时间

v2.2.0 破坏性变更。 工具已从扁平名称(publish、schedule……)更名为点号分隔的名称(post_publish、post_schedule……)。请更新任何引用旧名称的提示词、Agent 技能或 n8n 节点。

渠道

渠道键层级身份验证
devto自动DEV_TO_API_KEY
hashnode自动HASHNODE_TOKEN + HASHNODE_PUBLICATION_ID
github_discussions自动GITHUB_TOKEN + GITHUB_DISCUSSION_REPO
reddit自动门控REDDIT_CLIENT_ID/SECRET/USERNAME/PASSWORD
bluesky自动BLUESKY_IDENTIFIER + BLUESKY_PASSWORD
linkedin浏览器回退返回 needs_browser + 撰写页面 URL
medium浏览器回退返回 needs_browser + 撰写页面 URL
twitter / x浏览器回退返回 needs_browser + 撰写页面 URL

Agent 调用示例

// post_publish tool
{
  "content": {
    "id": "n8n-webhook-setup@2026-05-20",
    "title": "How to set up an n8n webhook",
    "body_md": "...",
    "tags": ["automation", "n8n", "tutorial"],
    "canonical_url": "https://yourblog.com/n8n-webhook-setup",
    "author": "You"
  },
  "variants": [
    {
      "channel": "devto:main",
      "title": "How to set up an n8n webhook",
      "body": "...",
      "tags": ["automation", "n8n", "tutorial", "devops"],
      "canonical_url": "https://yourblog.com/n8n-webhook-setup",
      "extras": {}
    },
    {
      "channel": "reddit:ClaudeAI",
      "title": "Built a webhook automation with n8n",
      "body": "Here's how I set it up...",
      "tags": [],
      "extras": { "flair": "Project" }
    }
  ],
  "profile_name": "default"
}

幂等性

使用相同的 content.id + channel 组合重新运行 post_publish,会立即返回现有的 live_url,不会再次调用平台 API。失败时可以安全重试。

定时发布

带有 schedule_at 的变体(采用带时区的 ISO-8601 格式,例如 "2026-05-21T09:00:00+00:00")会存储在 ~/.distribution-mcp/scheduled.yaml 中,并在下一次调用 post_drain 时执行。通过 cron 运行 drain:

# fire due posts every 5 minutes
*/5 * * * * npx -y @automatelab/content-distribution-mcp drain

也可以直接从 Agent 调用 post_drain MCP 工具。

环境变量

变量默认值用途
DISTRIBUTION_BACKENDyaml状态后端(v1 中仅支持 yaml)
DISTRIBUTION_BACKEND_DIR~/.distribution-mcpYAML 状态文件所在目录

要求

  • Node.js 18 或更高版本

架构

Agent (Claude Code / n8n / Cursor / any MCP host)
  │  generates per-channel copy, calls MCP tools
  ▼
content-distribution-mcp  (this package, stdio transport)
  │  no LLM calls — pure I/O
  ├── adapters/   devto · hashnode · github-discussions · reddit · bluesky · browser
  └── backends/   yaml (post log · profiles · schedule queue · subreddit catalog)

兼容任何 MCP 客户端

没有任何特定于 Anthropic 的代码。验证:

grep -ri "anthropic" node_modules/content-distribution-mcp/dist/  # returns nothing

属于 AutomateLab 技术栈

许可证

MIT

维护与验证

有关解释限制、当前工具名称(如适用)以及可复现验证,请参阅维护指南。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。