我用 Puppeteer 把发掘金文章这步也自动化了——附 CLI 和 MCP 接口

我用 Puppeteer 把发掘金文章这步也自动化了------附 CLI 和 MCP 接口

预计阅读:5 分钟


一、视频发布自动化了,但图文这一步还是断的

MatrixMedia 之前做的事情:用 CLI 和 MCP 把视频发布变成 AI 可以直接调用的操作。n8n 流程走完,一条命令发到 7 个平台,不用人盯着。

但我自己跑这套流程的时候发现,视频那边通了,图文这边还是卡着。

写完一篇掘金文章,要打开编辑器、填标题、粘贴正文、选分类、搜标签、点发布------每次都是同一套动作,区别只是内容不同。

能不能也做成一条命令?

这就是这个版本做的事:给 MatrixMedia 加了图文发布能力,先从掘金开始。


二、CLI:新增 publish-article 子命令

视频发布用的是 publish,图文发布是一个平级的新子命令 publish-article

最简用法:

bash 复制代码
matrixmedia cli publish-article \
  -p juejin \
  --phone 13800138000 \
  -t "我用 Puppeteer 把发掘金文章这步也自动化了" \
  -f ./article.md \
  --tags "前端 electron"

正文支持两种方式:传文件路径(.md.txt),或者直接把内容塞进 --content。两种方式二选一,给 AI 生成的内容直接管道过来很方便。

完整参数:

scss 复制代码
-p, --platform <id>   平台:juejin / jj / 掘金(当前仅支持掘金)
-t, --title <text>    文章标题(必填)
    --content <text>  文章正文;与 --file 至少提供一个
-f, --file <path>     Markdown 正文文件路径;与 --content 至少提供一个
    --cover <path>    封面图片路径
    --phone <id>      账号手机号
    --category <name> 分类,默认"前端"
    --tags <text>     标签,多个用空格分隔
    --summary <text>  文章摘要
    --publish-at <t>  定时发布,格式 "YYYY-MM-DD HH:mm:ss"

退出码和视频发布保持一致:0 成功、1 未知异常、2 参数错误、3 业务失败(比如登录态过期)。AI Agent 读退出码的逻辑不用改。


三、Puppeteer 操控掘金编辑器:两个实现细节

掘金编辑器不是普通 <textarea>,它用的是 CodeMirror。这里有两个坑。

坑一:正文不能用 page.type

CodeMirror 底层有自己的输入处理,用 Puppeteer 的 page.type() 直接输入,文字会丢、乱序,几百字的文章输进去可能只剩一半。

实际解法是走剪贴板:

javascript 复制代码
async function pasteText(page, text) {
  const originalClipboardText = clipboard.readText();
  const modifierKey = process.platform === 'darwin' ? 'Meta' : 'Control';
  try {
    clipboard.writeText(text);
    await page.keyboard.down(modifierKey);
    await page.keyboard.press('KeyV');
  } finally {
    await page.keyboard.up(modifierKey).catch(() => {});
    clipboard.writeText(originalClipboardText);
  }
}

粘贴前把原剪贴板内容存起来,粘完还原------不污染用户的剪贴板。

坑二:标签是下拉搜索选择,不是自由输入

掘金的标签字段需要:输入关键字 → 等下拉出现 → 点击选项。直接 page.type 后回车,标签不会真正被选中,发布时就报"请选择标签"。

实现上要等下拉渲染、匹配到选项再 click()

javascript 复制代码
await page.type(TAG_INPUT_SELECTOR, tag, { delay: 50 });
await page.waitForTimeout(800);  // 等掘金接口返回下拉
// 在 DOM 里找到匹配项,点击

如果下拉里找不到这个标签(比如拼写问题),就退化到直接 Enter,避免整个流程卡死。


四、MCP:新增 publish_article 工具

MCP Server 里同步加了 publish_article 工具,参数结构和 CLI 对应:

typescript 复制代码
{
  name: 'publish_article',
  description: '发布掘金文章,需要已登录掘金账号',
  inputSchema: {
    properties: {
      platform: { type: 'string', enum: ['juejin'] },
      phone:    { type: 'string', description: '账号手机号' },
      title:    { type: 'string' },
      content:  { type: 'string', description: '正文内容,与 file 二选一' },
      file:     { type: 'string', description: 'Markdown 文件路径,与 content 二选一' },
      cover:    { type: 'string', description: '封面图路径' },
      category: { type: 'string' },
      tags:     { type: 'string' },
      summary:  { type: 'string' },
      publishAt: { type: 'string' },
    },
    required: ['platform', 'phone', 'title'],
  }
}

接了 MCP 之后,在 Hermes 里说一句:

"把 /path/to/article.md 发到掘金,标题是'XXX',标签前端,账号 138xxxx"

Hermes 调 publish_article → 底层拉起 Puppeteer → 发布完返回结果。全程不用打开 MatrixMedia 的 GUI。


五、后面准备加的:知乎和公众号

掘金先做,主要因为我自己用、方便测试。

知乎 的图文发布流程类似,编辑器也是 CodeMirror,预计迁移成本不大。

微信公众号 相对麻烦------不是纯网页操作,需要另开 BrowserWindow 模拟登录,还有图片上传限制要处理,正在调研。

如果你用知乎或公众号发文章、有兴趣一起踩坑,欢迎到 GitHub 开 issue。


六、总结

这个版本做的事:

  1. 加了 publish-article 子命令,支持掘金图文发布,CLI 和 MCP 都能调
  2. Puppeteer 操控 CodeMirror 编辑器:正文走剪贴板粘贴、标签走下拉搜索点选
  3. 退出码和 JSON stdout 约定不变,原来接 AI 流程的地方不用改
  4. 知乎和公众号在路线图上,掘金是第一个

开源地址:github.com/hanliang97/...

如果你在用 AI 工具写文章、又在做矩阵号,或者也在研究怎么用 Puppeteer 操控这类富文本编辑器,欢迎看看代码,有问题直接开 issue,中文优先。

代码对你有用的话,点个 Star,这是对开源项目最直接的支持。


字数统计:约 1650 字

相关推荐
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(75):TiMem——用时间记忆树实现长期记忆的层级巩固
论文阅读·人工智能·学习·开源·github
今夕资源网4 小时前
一只鹈鹕骑着单车闯海岛:开源 3D 网页游戏《鹈鹕骑车》体验与部署教程 github开源
开源·github·ai智能测试题·ai智能测试
flash俊杰7 小时前
Electron 安全纵深:contextIsolation、最小暴露面与 CSP 防线
electron
枫叶丹47 小时前
开源还是开权重:2026 年 AI 模型战争的控制权之争
人工智能·chatgpt·开源·agent·codex
小弥儿19 小时前
GitHub今日热榜 | 2026-09-18:腾讯双项目上榜
学习·开源
集智飞行19 小时前
实战从零把一个package发布成 ROS2 官方包
开源
caoerzhong20 小时前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源
冬奇Lab20 小时前
开源项目第222期:security-audit — Cloudflare 的安全审计 Skill,把 Coding Agent 变成六阶段安全审计器
人工智能·开源·资讯
m4Rk_21 小时前
【论文阅读】Agent 记忆机制(74):CompassMem——从相似度检索走向事件图上的记忆导航
论文阅读·人工智能·学习·开源·github
wflynn1 天前
GitHub 日榜趋势速报 | 2026-09-18
开源·github