wechat-mp-publisher
v2.0.2远程微信公众号发布技能。通过 HTTP MCP 解决家用宽带 IP 变动问题,支持大文件上传、多主题排版与一键发布。
Security Scan
OpenClaw
Suspicious
high confidencePurpose & Capability
技能名与描述匹配其实现:通过远程 wenyan-mcp 发布微信文章,所需二进制 (mcporter, curl, jq) 与功能相符。但注册表元数据没有声明任何必需的环境变量或主凭证,尽管脚本在运行时明确需要 WECHAT_APP_ID 和 WECHAT_APP_SECRET —— 这是声明与实际所需不一致。
Instruction Scope
运行时说明与脚本会:读取技能根目录的 wechat.env(包含 AppID/Secret)、检查本地依赖、读取 $HOME/.openclaw/mcp.json 并将凭证随发布请求通过 mcporter 转发给远程 MCP 服务。这在功能上合理但会把敏感凭证传给远端,需要信任远端。更令人担忧的是 scripts/setup.sh 会从 $HOME/.openclaw/workspace/TOOLS.md 提取并导出凭证——这会访问一个全局/集中存放的文件,可能包含其他敏感信息,且与 SKILL.md 中“凭证隔离”的表述矛盾。
Install Mechanism
安装通过 Node 包 (mcporter) 提供 mcporter 二进制:这是常见做法但属于第三方 npm 包安装(中等风险)。没有看到从不可信 URL 下载或解压任意归档的高风险行为。建议在安装前核验 mcporter 包的来源与版本。
Credentials
技能在元数据未声明任何 required env,但脚本明确需要 WECHAT_APP_ID 和 WECHAT_APP_SECRET(必需)。此外 scripts/setup.sh 会读取并导出 TOOLS.md 中的凭证,这意味技能能访问并依赖一个可能含有多种密钥的全局文件。技能还允许在 mcp.json 中配置可选 X-API-Key,但这些凭证与注册信息未对应列出。总体上请求/访问的凭证与声明不一致,可能导致凭证意外暴露。
Persistence & Privilege
技能没有设置 always:true,也不会修改其他技能或系统级设置。脚本仅在运行时读取/导出变量(setup.sh 导出仅当前 shell 会话有效)。须注意:因技能可被代理自主调用(默认允许),把敏感凭证发送到远端会放大风险——尤其是在远端未被充分信任时。
What to consider before installing
简明建议(安装前请考虑):
- 信任边界:此技能会把你的 WECHAT_APP_ID 与 WECHAT_APP_SECRET 作为字段传送到远程 wenyan-mcp 服务(通过 mcporter)。只有在你信任并控制该远端 MCP 服务或确认对方是受信任部署时才应提供真实凭证。
- 元数据不一致:技能注册信息未声明必需的环境变量,但脚本确实需要 WECHAT_APP_ID/WECHAT_APP_SECRET。不要盲目把凭证放入全局文件。
- 避免集中凭证泄露:scripts/setup.sh 会从 $HOME/.openclaw/workspace/TOOLS.md 读取凭证。若你把其他敏感密钥放在 TOOLS.md,安装/使用此脚本可能会无意中暴露或读取这些密钥。建议不要把真实凭证放在公用/全局文件中;优先使用技能根目录下的 wechat.env,并把它设置为仅限技能访问的受限文件。
- 代码与包审查:在安装 mcporter npm 包前,查看该包的源(GitHub 仓库或 npm 页面)以确认其来源和维护者;审阅 mcporter 的实现或使用受信任版本。
- 最小化测试:先用一个测试/临时的公众号账号或临时凭证进行试验,确认发布流程与远端行为,再迁移到生产凭证。
- 网络与白名单:按说明需把远端 MCP 的公网 IP 加入微信后台白名单。确保你了解谁能访问该远端服务器及其日志策略。
- 可替代方案:如果不愿将凭证发送给第三方远端,可考虑在你可控的 VPS 上自行部署 wenyan-mcp,或改用本地直接发布(若可行)。
如果你希望我,我可以:
1) 列出 wechat.env.example 的确切字段与格式;
2) 帮你审阅 mcporter 包的源地址(若提供);
3) 给出如何把凭证限制到技能目录(文件权限/SELinux 等)的具体步骤。Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
🚀 Clawdis
Binsmcporter, curl, jq
Install
安装 MCP 客户端 (mcporter)
Bins: mcporter
npm i -g mcporterlatest
微信公众号远程发布 (Remote Publisher - Compliance Optimized)
核心痛点解决:家用宽带 IP 频繁变动,无法固定添加到公众号白名单?
本技能通过远程 wenyan-mcp 服务中转,让你的本地 OpenClaw 也能稳定发布文章,无需本地 IP 权限!
🌟 架构优势
- IP 漫游无忧:仅需将远程 MCP 服务器 IP 加入白名单,无论你在家里、咖啡厅还是 4G 热点,都能随时发布。
- 合规隔离:凭证与系统配置分离,避免污染全局
TOOLS.md。 - 依赖自检:脚本运行时自动检查
jq、mcporter和wenyan-cli。 - 灵活配置:支持自定义 MCP 配置文件路径。
⚙️ 快速配置
1. 准备凭证 (wechat.env)
在技能根目录下复制 wechat.env.example 为 wechat.env 并填入公众号凭证:
cp wechat.env.example wechat.env
nano wechat.env
内容示例:
export WECHAT_APP_ID="wx..."
export WECHAT_APP_SECRET="cx..."
# Optional: 指定 MCP 配置文件 (默认 $HOME/.openclaw/mcp.json)
# export MCP_CONFIG_FILE="/path/to/your/mcp.json"
2. 连接远程服务 (mcp.json)
确保你的 mcp.json 指向远程 MCP 实例:
{
"mcpServers": {
"wenyan-mcp": {
"name": "公众号远程助手",
"transport": "sse",
"url": "http://<your-remote-server-ip>:3000/sse",
"headers": {
"X-API-Key": "<optional-api-key>"
}
}
}
}
🚀 使用指南
方式 A: 智能助手 (推荐)
直接对我说:
"帮我把
path/to/article.md发布到公众号,使用默认主题。"
我会自动:
- 读取
wechat.env获取凭证 - 检查本地环境 (
mcporter,jq) - 调用远程 MCP 完成发布
方式 B: 命令行脚本 (高级)
我们提供了封装好的脚本 scripts/publish-remote.sh,体验与本地 CLI 一致:
# 赋予执行权限
chmod +x scripts/publish-remote.sh
# 发布文章 (自动加载 wechat.env)
./scripts/publish-remote.sh ./my-post.md
# 指定主题 (lapis)
./scripts/publish-remote.sh ./my-post.md lapis
📝 Markdown 规范
与标准 wenyan-cli 一致,头部必须包含元数据:
---
title: 我的精彩文章
cover: https://example.com/cover.jpg
---
# 正文开始
...
提示:cover 推荐使用图床链接,以确保远程服务器能正确下载封面。
🛠️ 故障排查
| 现象 | 原因 | 解决方案 |
|---|---|---|
| Dependencies Missing | 缺少 jq 或 mcporter | 请确保系统已安装这些工具 |
| Config Not Found | 未找到 wechat.env | 请按照步骤 1 创建并配置 |
| IP not in whitelist | 远程服务器 IP 未加白 | 登录公众号后台 -> 基本配置 -> IP 白名单,添加 MCP 服务器的公网 IP |
Comments
Loading comments...
