multi-platform-publisher
Publish content to X/Twitter, LinkedIn, WeChat, and Xiaohongshu with one command
Install / Use
claude mcp add mguozhen -- npx -y github:mguozhen/multi-platform-publisherIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of multi-platform-publisher
multi-platform-publisher scores 81/100 on our quality scale, 3445th of 4,632 Development & Engineering skills we index.
Its MCP Server is 15 KB long, well organised into 25 sections with 9 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 43 days ago, so multi-platform-publisher is actively maintained.
- Our last check on 2026-10-18 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
multi-platform-publisher compared with similar skills
All 4 of these similar skills score higher than multi-platform-publisher; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| multi-platform-publisher (this skill)by mguozhen | 81 | 10 | 43d ago | MCP Server |
| taste-skillby Leonxlnx | 100 | 111.4k | 2d ago | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 109.8k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 79.1k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 70.2k | 1d ago | CLAUDE.md |
Frequently asked questions
- How do I install multi-platform-publisher?
- Run
claude mcp add mguozhen -- npx -y github:mguozhen/multi-platform-publisher. The install tabs above show the steps for each supported agent. - Which AI agents does multi-platform-publisher work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is multi-platform-publisher safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is multi-platform-publisher still maintained?
- The repository was last updated 43 days ago, so multi-platform-publisher is actively maintained.
Skill content
View source on GitHubPer-platform output gallery
The same input piece, reshaped by each adapter — real published assets, not mockups.
X / Twitter — threads, not the same text
<p align="center"> <a href="docs/screenshots/twitter-published.png"> <img src="docs/screenshots/twitter-published.png" alt="X / Twitter published thread" width="78%"> </a> </p>The Twitter adapter strips markdown, splits at 270 chars with numbering, and chains the post as a thread. Inline images and the original URL are preserved.
LinkedIn — clean paragraphs, 3000-char cap
<p align="center"> <a href="docs/screenshots/linkedin-placeholder.svg"> <img src="docs/screenshots/linkedin-placeholder.svg" alt="LinkedIn post output preview" width="78%"> </a> </p>LinkedIn gets a professional-register rewrite: no markdown artifacts, real paragraph breaks, hashtag block at the end. (Real post screenshot lands here after the next campaign — the adapter is live today.)
WeChat Official Account — HTML draft, never auto-published
<p align="center"> <a href="docs/screenshots/wechat-published.png"> <img src="docs/screenshots/wechat-published.png" alt="WeChat Official Account article cover" width="60%"> </a> </p>WeChat is safety-locked to the draft box — publish_to_platforms returns a draft_id, never a public URL. You review and tap publish in the Official Account dashboard. The image above is the cover art generated for a real MPP article; the body is rendered as styled HTML by adapters/wechat_adapter.py.
Xiaohongshu — emoji, tags, and an 8-slide carousel
<p align="center"> <a href="docs/screenshots/xhs-cover.png"><img src="docs/screenshots/xhs-cover.png" alt="XHS cover" width="22%"></a> <a href="docs/screenshots/xhs-card-1.png"><img src="docs/screenshots/xhs-card-1.png" alt="XHS card 1" width="22%"></a> <a href="docs/screenshots/xhs-card-2.png"><img src="docs/screenshots/xhs-card-2.png" alt="XHS card 2" width="22%"></a> <a href="docs/screenshots/xhs-card-3.png"><img src="docs/screenshots/xhs-card-3.png" alt="XHS card 3" width="22%"></a> </p> <p align="center"> <a href="docs/screenshots/xhs-card-4.png"><img src="docs/screenshots/xhs-card-4.png" alt="XHS card 4" width="22%"></a> <a href="docs/screenshots/xhs-card-5.png"><img src="docs/screenshots/xhs-card-5.png" alt="XHS card 5" width="22%"></a> <a href="docs/screenshots/xhs-card-6.png"><img src="docs/screenshots/xhs-card-6.png" alt="XHS card 6" width="22%"></a> <a href="docs/screenshots/xhs-card-7.png"><img src="docs/screenshots/xhs-card-7.png" alt="XHS card 7" width="22%"></a> </p>Xiaohongshu's native format is image-text with a cover + carousel + 1000-char body. The XHS adapter injects emoji, appends topic tags, and respects the cap. The 8-card set above is the actual XHS post for multi-platform-publisher itself — published via the same MCP tool you're about to install.
TL;DR
One piece of content in. Thirteen platform-native posts out.
┌───────────────────────────────┐
┌──────────────┐ │ content adaptation engine │
│ Markdown │──┐ │ per-platform: length, format, │
│ or inline │ │ │ tone, hashtags, threads │
└──────────────┘ ├────────────▶───────────────────────────────┤
┌──────────────┐ │ │ API adapters browser auto │
│ + images │──┘ │ X · LinkedIn HN · Reddit │
└──────────────┘ │ WeChat · XHS note · Substack│
└───────────────┬───────────────┘
│
┌─────────────────────────────────────────┼─────────────────────┐
▼ ▼ ▼ ▼
X / Twitter thread LinkedIn post WeChat HTML draft Xiaohongshu note
Dev.to · Qiita YouTube Hacker News · Reddit note.com · Substack
- Inputs — a Markdown file or inline text, optional images
- Engine —
utils/content_adapter.pyreshapes per platform (char limits, threads, HTML, emoji, tags) - Three surfaces — an MCP server (
python -m mcp_server), a one-command CLI (main.py), and the super-writer content pipeline behind it (topic → AI draft → human review → publish)
Quick start
Option A — As an MCP server (recommended for Agent use)
# 1. Install
git clone https://github.com/mguozhen/multi-platform-publisher
cd multi-platform-publisher && pip3 install -r requirements.txt
# 2. Register with your agent (one line)
claude mcp add mpp -- python -m mcp_server
# 3. Set credentials for the platforms you want (env or ~/.openclaw/openclaw.json)
export TWITTER_API_KEY="..." LINKEDIN_ACCESS_TOKEN="..."
export WECHAT_APPID="..." XHS_COOKIE="..."
Then in any MCP-capable agent:
Use the
mppMCP server to publish~/post.mdto X and LinkedIn, and preview the WeChat draft first.
The agent calls adapt_content (free preview), then publish_to_platforms, and returns the per-platform results.
Option B — One-command CLI
python3 main.py publish --file article.md --platforms all
python3 main.py publish --content "My post about #AI" --platforms twitter,linkedin
Option C — Preview first (dry run)
python3 main.py publish --content "My post" --dry-run
Shows exactly how the content will be reshaped for each platform — no posting.
Option D — Utility commands
python3 main.py list-platforms # platforms + credential status
python3 main.py validate # check credentials for every configured platform
MCP tools
| # | Tool | Input | When to use |
|---|---|---|---|
| 1 | publish_to_platforms | content/file_path, platforms[], images[], dry_run | Default — adapt + publish (or dry-run) to N platforms in one call |
| 2 | adapt_content | content/file_path, platform? | Preview the reshape per platform — free, no network |
| 3 | list_supported_platforms | (none) | Pre-flight: who is available, with what limits |
| 4 | validate_credentials | platform | "Are my keys set?" — no network call |
All tools return JSON-serializable dicts. Errors come back in a structured shape with type + suggested_action + retryable — see docs/errors.md.
Capability manifest: .well-known/agent-capabilities.json.
Supported platforms
Two surfaces. The publisher (main.py + MCP) covers four platforms over official APIs. The super-writer pipeline adds nine more through dedicated publishers.
| Platform | Surface | Auth | Output | |---|---|---|---| | X / Twitter | publisher | OAuth 1.0a | Tweets, threads, image + video upload | | LinkedIn | publisher | OAuth 2.0 | Posts, articles, images | | WeChat Official Account | publisher | API token | HTML article → draft box | | Xiaohongshu (小红书) | publisher | Cookie | Image-text note | | Dev.to | super-writer | REST API | English dev article | | Qiita | super-writer | REST API | Japanese dev article | | YouTube | super-writer | Data API v3 | Video + Shorts | | Hacker News | super-writer | browser automation | Link / text submission | | Reddit | super-writer | browser automation | Subreddit post | | note.com | super-writer | browser automation | Japanese essay | | Substack | super-writer | browser automation | English long-form + Notes | | 抖音 / Douyin | super-writer | browser automation | Short video | | 视频号 / Channels | super-writer | manual | 1–3 min video |
Publishing red lines are respected: WeChat stops at the draft box (never auto-publishes), Xiaohongshu and Reddit run human-in-the-loop, and risky platforms surface a confirmation step. See
super-writer/playbooks/.
Content adaptation
The same source is reshaped, not just truncated:
- X / Twitter — strips Markdown, splits into 270-char tweets, builds numbered threads
- LinkedIn — professional register, clean paragraphs, up to 3,000 chars
- WeChat — styled HTML article rendered into a draft (manual publish in the dashboard)
- Xiaohongshu — casual tone, emoji injection, topic tags, 1,000-char cap
- Dev.to / Qiita — front-matter + tags, English / Japanese dev framing
- Substack / note.com — long-form essay + short Notes
Each is testable in isolation via adapt_content(content=..., platform=...).
The super-writer pipeline
super-writer/ is a complete one-person self-media production line:
topic gacha → AI draft (persona-locked) → cover + layout → Telegram review → multi-platform publish
super-writer/tools/gacha.py— topic selector, aggregates 5 sources with scoringsuper-writer/tools/telegram-bridge/— human-in-the-loop review bridge + per-platform publisherssuper-writer/tools/{hn,note,reddit}_publish.py— browser-automation publishers for API-less platformssuper-writer/playbooks/— 15 platform / content-type writing playbookssuper-writer/platform-roadmap.md— live / queued / manual platform statussuper-writer/persona.md— account persona
vs. the alternatives
| | multi-platform-publisher | Buffer / Hootsuite | Typefully | Manual posting |
|---|---|---|---|---|
| Per-platform content adaptation | ✅ reshapes tone + format | ⚠️ same text everywhere | ⚠️ Twitter-only | ✅ but by hand |
| Agent-callable (MCP) | ✅ 4 MCP tools | ❌ | ❌ | ❌ |
| Dry-run preview | ✅ adapt_content (free) | ⚠️ limited | ✅ Twitter only | n/a |
| WeChat / Xiaohongshu / Dev.to / Qiita | ✅ | ❌ | ❌ | ✅ |
| Content pipeline (topic → draft → review) | ✅ super-writer | ❌ | ❌ | ❌ |
| Per-platform failure isolation | ✅ | ❌ batch fails as one | n/a | n/a |
| Cost | free, MIT | $6–99/mo | $12.50/mo | free |
| Open source | ✅ | ❌ | ❌ | — |
Architecture
multi-platform-publisher/
├── mcp_server.py # MCP entrypoint — 4 tools (publish, adapt, list, validate)
├── main.py # CLI entrypoint + orchestrator
├── adapters/
│ ├── base_adapter.py # abstract base: publish() / validate() / upload_image()
│ ├── twitter_adapter.py # X / Twitter — OAuth 1.0a
│ ├── linkedin_adapter.py # LinkedIn — OAuth 2.0
│ ├── wechat_adapter.py # WeChat Official Account — API token
│ └── xiaohongshu_adapter.py # Xiaohongshu — cookie
├── utils/
│ ├── config_loader.py # env > openclaw.json > config.json
│ ├── content_adapter.py # per-platform content transformation
│ ├── image_handl
Truncated for display — read the full file on GitHub.
Related Skills
taste-skill
111.4kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
Agent-Reach
109.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
79.1kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
70.2kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
