Metadata-Version: 2.4
Name: iflow-mcp_cyanty-one-article-submission
Version: 0.1.0
Summary: A multi-platform article publishing web tool.
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: dotenv~=0.9.9
Requires-Dist: drissionpage==4.1.0.14
Requires-Dist: fastapi~=0.115.11
Requires-Dist: httpx==0.27.2
Requires-Dist: jinja2>=3.1.6
Requires-Dist: markdown2==2.5.1
Requires-Dist: mcp>=1.11.0
Requires-Dist: openpyxl~=3.1.5
Requires-Dist: psutil~=7.0.0
Requires-Dist: pydantic~=2.8.2
Requires-Dist: pyperclip~=1.9.0
Requires-Dist: pypinyin==0.53.0
Requires-Dist: python-dotenv~=1.0.1
Requires-Dist: python-multipart>=0.0.20
Requires-Dist: requests==2.32.3
Requires-Dist: tenacity~=9.0.0
Requires-Dist: uvicorn~=0.30.6
Requires-Dist: websocket-client~=1.8.0
Description-Content-Type: text/markdown

<h1 align="center">欢迎来到 Arcs-MCP 👋</h1>

[![python](https://img.shields.io/badge/Python-3.12-3776AB?logo=python&labelColor=61DAFB&style=for-the-badge)](https://github.com/Cyanty/Arcs-MCP)
[![fastapi](https://img.shields.io/badge/FastAPI-0.115.11-009688?logo=fastapi&labelColor=61DAFB&style=for-the-badge)](https://github.com/Cyanty/Arcs-MCP)
[![uv](https://img.shields.io/badge/uv-0.7.19-DE5FE9?logo=UV&labelColor=61DAFB&style=for-the-badge)](https://github.com/Cyanty/Arcs-MCP)
[![chrome](https://img.shields.io/badge/chrome-4285F4?logo=googlechrome&labelColor=61DAFB&style=for-the-badge)](https://github.com/Cyanty/Arcs-MCP)
[![license](https://img.shields.io/badge/License-Apache%202.0-blue?labelColor=61DAFB&style=for-the-badge)](https://github.com/Cyanty/Arcs-MCP)
[![mcp](https://img.shields.io/badge/MCP-412991?logo=modelcontextprotocol&labelColor=61DAFB&style=for-the-badge)](https://github.com/Cyanty/Arcs-MCP)
<a href="https://deepwiki.com/Cyanty/Arcs-MCP"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki" style="width: 150px; height: 29px;"></a>

---

# 支持MCP服务的多平台一键发布工具

## 📖 概述

如果有将文章分享发布到多个平台的需求，可以借助这个工具来简化这一流程。该发布工具支持MCP服务，可以让用户使用自然语言处理并实现文章在多个平台的一键式发布。

用户可以描述他们想要实现的效果，例如，“将这篇文章发布到CSDN上。”——工具会自动将文章发布到指定的发布源平台上。

## 🔑 前置条件

- 兼容 MCP 的 AI 客户端：Claude 桌面版、Gemini CLI、Cherry Studio 或其他 MCP 客户端。
- uv：一个现代的 Python 包安装器和解析器。

## 📦 安装与配置

### 1. 安装 uv 环境

这里推荐使用 [Cherry Studio](https://docs.cherry-ai.com/advanced-basic/mcp) 客户端来配置该工具的MCP服务，操作和环境配置会更加友好。Cherry Studio 还自带了 uv 环境的部署功能，用户可以一键完成安装。

> **Tips**：Cherry Studio 目前只使用内置的 [uv](https://github.com/astral-sh/uv) 和 [bun](https://github.com/oven-sh/bun)，**不会复用**系统中已经安装的 uv 和 bun。

也可选择**手动独立安装** uv 环境，使用命令行完成部署：

**macOS & Linux**

```sh
# 使用 `curl` 下载脚本并通过 `sh` 执行：
curl -LsSf https://astral.sh/uv/install.sh | sh

# 如果系统没有 `curl`，可以使用 `wget`：
wget -qO- https://astral.sh/uv/install.sh | sh
```

**Windows**

```sh
# 使用 `irm` 下载脚本并通过 `iex` 执行：
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```

### 2. 克隆仓库

1. 克隆仓库并切换至该目录：

```sh
git clone https://github.com/Cyanty/Arcs-MCP.git
cd Arcs-MCP
```

2. 复制环境配置文件：

```sh
cp .env.example .env
```

> **Tips**：部分平台支持 API 发布文章，可通过`.env`文件配置所需平台密钥。

3. 构建并运行服务：

```sh
uv run --directory your/path/to/Arcs-MCP server.py
```

### 3. 配置 MCP 客户端

配置您的 MCP 客户端，这里我们以 [Cherry Studio](https://docs.cherry-ai.com/advanced-basic/mcp) 的AI客户端工具为例。

- 在 `添加服务器` 按钮中点击 `快速创建` 选项，选择 *可流式传输的HTTP (streamableHttp) 类型* ，并添加如下URL：

```http
http://127.0.0.1:8001/submit/mcp
```

`快速创建`配置如下图所示：

![](https://raw.githubusercontent.com/Cyanty/images/main/collect/Snipaste_2025-07-15_10-56-27.png)

或者 采用JSON配置，

- 在 `添加服务器` 按钮中点击 `从JSON导入` 选项，将以下内容添加到配置文件中：

```json
{
  "mcpServers": {
    "SubmitArticleServer": {
      "type": "streamableHttp",
      "url": "http://localhost:8001/submit/mcp"
    }
  }
}
```

## 🚀 使用方法

> **Tips**：在开始之前，请确保您的 MCP 客户端已成功完成上述配置。

### 可用工具

可用工具一览：

![](https://raw.githubusercontent.com/Cyanty/images/main/collect/Snipaste_2025-07-15_11-20-14.png)

工具说明：

**help_open_browser**：帮助用户打开一次浏览器（MCP发布浏览器），例如："请帮我打开浏览器"，用户可通过此浏览器进行**账号登录**等操作。

**submit_verify_login**：校验所有发布源平台的账号登录状态，例如："请帮我验证所有平台的登录状态"，用户可通过此方法验证各平台账号登录状态及个人令牌/密钥是否有效。

**get_submit_toggle_switch**：获取当前各发布源的发布开关状态，例如："请告诉我当前各平台的发布开关状态"，发布开关用于为用户标识哪些平台是可以进行发布文章操作的。

**update_submit_toggle_switch**：更新各发布源平台的发布开关状态，例如："请开启CSDN平台的发布开关"，开启平台发布开关可用于发布文章到指定的平台。

**submit_article_content_prompt**：发布文章的文本内容到各平台，例如："将文章的文本内容发布到CSDN上"，等待发布操作完成，就可以在发布的平台上看到自己的文章了。

**submit_article_file_to_platforms**：通过文章的文件路径发布到各平台，例如："帮我把`/your/path/to/file-absolute-path`这篇文章发布到CSDN上"，等待发布操作完成，就可以在发布的平台上看到自己的文章了。

### 发布文章示例

> **Tips**：在发布之前，请确保您的 MCP发布浏览器及个人令牌/密钥 -> 处于登录或可用状态。

使用 [Cherry Studio](https://docs.cherry-ai.com/advanced-basic/mcp) 通过聊天的方式发布一篇文章到 CSDN 上。

在新建聊天窗口中，点击 MCP服务器，选中之前配置的 *SubmitArticleServer* MCP服务：

![](https://raw.githubusercontent.com/Cyanty/images/main/collect/Snipaste_2025-07-15_11-25-09.png)

在聊天框中输入，比如："帮我把这篇文章发布到CSDN上。文章的本地路径为：C:\\Users\\Administrator\\Desktop\\发布一篇文章测试.md"，等待大模型返回发布结果：

![](https://raw.githubusercontent.com/Cyanty/images/main/collect/submit_gif_01.gif)

该发布工具同时支持以文本内容的方式进行发布，不过由于集成的AI客户端工具处理方式差异，大模型可能会读取文章全部内容作为上下文，比较耗费Token，耗时也较长。这里推荐使用 *以文件路径的方式* 发布文章。

以文本内容的方式发布，聊天输入示例如下：

![](https://raw.githubusercontent.com/Cyanty/images/main/collect/Snipaste_2025-07-15_11-46-32.png)

## ⚡ 发布实现

该发布工具为MCP服务提供支持，通过整合各平台发布接口和自动化技术实现高效发布：

- **统一入口**：支持从.md文件直接导入内容，适配MCP服务实现异步并行发布

- **图片处理**：自动转换外链图片为平台兼容的图片链接地址

- **发布方式**：根据不同平台特性采用API调用或浏览器自动化两种策略

目前支持的发布平台（可自定义横向扩展其他平台）

|    平台    |        发布方式         |
| :--------: | :---------------------: |
|    CSDN    |       自动化发布        |
|    掘金    |  草稿API + 自动化发布   |
|   博客园   |     Metaweblog API      |
| 微信公众号 |  MD格式美化 + 开放API   |
|    知乎    | MD格式美化 + 自动化发布 |
| Halo自建站 |      API/令牌认证       |
|   ......   |                         |

除此之外，工具还提供了一个发布操作的web页面，用户可在浏览器页面上进行操作，上传本地.md格式文件实现各平台文章的发布。

如：访问 http://127.0.0.1:8001 ，发布页面如下：

![](https://raw.githubusercontent.com/Cyanty/images/main/collect/Snipaste_2025-07-15_14-22-09.png)

## 🤝 欢迎贡献

欢迎贡献！无论是修复 bug、添加新功能还是改进文档，都可以随时提交 Pull Request 或打开一个 issue。

## 📝 License

本项目遵循 [Apache License 2.0](https://opensource.org/licenses/Apache-2.0) 协议，完整文本见 [LICENSE](LICENSE) 文件。

