mcpField
C
Content Distribution Mcp

Content Distribution Mcp

ローカル
automatelab.techソーシャルメディア43 日前に更新

Content Distribution Mcp について

Content Distribution Mcpは、1つのコンテンツを複数のソーシャル・公開チャネルに配信し、各プラットフォームに合わせた形式と公開状態を管理します。繰り返し投稿を行うエージェントやチーム向けで、冪等な再試行、予約投稿、一部チャネルのブラウザー引き継ぎに対応します。

主な機能

  1. 01記載された8チャネルへの公開
  2. 02チャネルごとの形式ヒント
  3. 03予約投稿とキューの実行
  4. 04チャネル別の投稿状態追跡
  5. 05冪等な公開再試行
  6. 06一部チャネルのブラウザー作成リンク

活用シーン

  1. 01製品告知を複数チャネルに配信
  2. 02投稿を後の時刻に予約
  3. 03チャネルでの公開成功を確認

MCP 対応

公開、予約、状態確認、チャネルヒント、プロファイル、subreddit情報を扱う8つの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

コンテンツをプラットフォームごとに書き直すことなく、あらゆる場所に公開できます。

1つのコンテンツを8つ以上のチャネル(DEV.to、Hashnode、GitHub Discussions、Reddit、Bluesky、LinkedIn、Medium、Twitter)に配信するMCPサーバーです。プラットフォームに応じた自動調整、冪等な公開、コミュニティごとのスパム対策ルール、一元的な状態管理に対応しています。

解決する課題

コンテンツを大量に作成して公開するには、多くの手間がかかります。

  • 形式の違い:Redditでは書式が削除され、Twitterには文字数制限があり、DEV.toは埋め込みやリッチメディアに対応しています。それぞれに合わせて文章を調整する必要があります。
  • プラットフォームのルール:サブレディットではクールダウンやフレアの指定が求められます。コミュニティには投稿パターンや自動モデレーターによる制限があります。LinkedInでは外部リンクの表示が抑制されます。
  • 状態の混乱:どの投稿がどこで公開されたのか。公開が途中で失敗した場合はどうなるのか。Redditの投稿がスパムフィルターによって自動削除されたのか。

このMCPが配信の複雑さを処理します。核となるメッセージを一度書けば、プラットフォームに合わせたバリエーションを生成し、安全に各所へ公開できます。

仕組み

  1. エージェントがチャネルごとの文章のバリエーション(タイトルの書き換え、テキストの短縮、プラットフォームに適したタグ、対象読者に合わせたトーン)を生成します。
  2. このMCPが、冪等性、OAuth、APIの再試行、スケジュール設定を使って各バリエーションを公開し、プラットフォームの制約を自動的に適用します。
  3. プラットフォームごとの内容はあなたが決めます。MCPはチャネルごとのヒント(文字数制限、タグの語彙、クールダウン)を返しますが、創作上の判断はあなたに委ねます。

内部でLLMを呼び出すことはありません。特定の環境に閉じ込められたエージェントもありません。大規模なマルチプラットフォームコンテンツ配信用の、シンプルな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 Profileから認証情報を読み込みます。

# ~/.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は作成画面のURLとともに needs_browser を返すため、認証情報は不要です。

MCPツール一覧

8つのツールがあり、ドット記法の名前で階層構造をたどれます(post.*、channel.*、profile.*、subreddit.*)。各ツールは outputSchema(呼び出し元がレスポンスの型をチェックできます)と、MCPの annotations(読み取り専用/破壊的操作/冪等/オープンワールドのヒント)を宣言します。サーバー内部でLLMを呼び出すことはありません。

ツール目的
post_publish即時公開。(content.id, channel) に対して冪等です
post_scheduleバリエーションを schedule_at に登録し、残りを即時公開します
post_drain現在公開時刻を迎えている予約済み投稿をすべて実行します — cronから実行してください
post_statusコンテンツまたはチャネルのチャネルごとの状態
post_unpublish可能な範囲で削除します(DEV.toでは非公開に設定され、ほかは異なる場合があります)
channel_hintsチャネルごとのメタデータ:文字数制限、Markdown対応状況、タグの語彙
profile_list設定済みのDistribution Profileの名前
subreddit_listSubreddit Catalog:クールダウン、フレアの語彙、最終投稿日時

v2.2.0の破壊的変更。 ツール名が、フラットな名前(publish、schedule、...)からドット記法(post_publish、post_schedule、...)に変更されました。旧名を参照しているプロンプト、エージェントスキル、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 を返します

エージェント呼び出しの例

// 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 を再実行すると、プラットフォーム API を再度呼び出さず、既存の live_url をすぐに返します。失敗した場合も安全に再試行できます。

スケジュール設定

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

または、エージェントから 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 スタックの一部

  • agency-os — コントロールプレーン
  • content-distribution-mcp — このパッケージ
  • automatelab.tech — ブログとチュートリアル

ライセンス

MIT

メンテナンスと検証

解釈上の制限、該当する場合の現在のツール名、再現可能な検証方法については、メンテナンスガイドを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。