用 Electron + Puppeteer 把视频自动发布变成 AI Agent 可调用的 CLI 工具

本文预计阅读:5 分钟


一、我为什么要做这个工具

做矩阵号的人都有一个固定动作:视频剪好,打开6个 Tab,逐个上传、填标题、填标签、点发布。

一条视频,最快 15 分钟,遇上网速慢或者平台抽风,半小时就没了。

我当时的状态是:用 n8n 跑了一条自动化流程------AI 生成脚本、自动合成视频、自动生成封面,到最后一步"发布到平台",流程断了,还得人坐在那手动点。

市面上有易媒这类付费工具,但它们全是 GUI 黑盒,外部程序没有任何办法调度它。n8n 节点调不到,Claude Code 写不进去,你的 AI 流程到这一步只能停下来等人。

这就是 MatrixMedia 的出发点:不只是"自动点鼠标",而是让 AI Agent 能把发布视频当成一个普通命令来调用。

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


二、CLI 设计:让 AI Agent 能"读懂"这个工具

这是整个项目最核心的部分,其他功能都是围绕这里展开的。

统一入口

argv 里含 cli 子串就进入无 GUI 模式,Electron 窗口不会弹出来:

bash 复制代码
matrixmedia cli publish \
  -p dy \
  --phone 13800138000 \
  -f "/path/to/video.mp4" \
  -t "视频标题" \
  --tags "#标签1 #标签2"
echo "exit: $?"

这条命令跑完,AI Agent 只需要读 $?,就知道下一步该干什么。

exit code 规范

这是 AI Agent 能不能真正用起来的关键。设计了 4 个退出码:

code 含义
0 发布成功
1 未知异常
2 参数错误(比如 -p 传了不支持的平台)
3 业务失败(登录态过期、平台接口报错)

code 3 和 code 2 对 AI Agent 来说意义完全不同------2 说明要修命令,3 说明要先去重新登录。如果全部返回 1,Agent 根本判断不了下一步。

JSON stdout

查账号列表和发布历史,加 --json 会输出稳定结构的 JSON Array,没有任何噪音行混进去:

css 复制代码
matrixmedia cli accounts --json
# 输出:[{"platform":"dy","phone":"138xxxx","status":"active"}, ...]

这是给 n8n 的 JSON Parse 节点、或者 Claude Code 里的 shell 调用直接消费用的。不用正则解析,不会因为哪天加了一行 log 就崩。

4 个子命令

  • publish --- 发布单条视频
  • accounts --- 查登录账号和存活状态
  • history --- 查发布记录
  • schedule --- 登记定时任务

三、定时发布:调度引擎的实现

CLI 里有个 --publish-at 参数:

css 复制代码
matrixmedia cli publish \
  -p dy \
  --phone 13800138000 \
  -f "/path/to/video.mp4" \
  -t "视频标题" \
  --publish-at "2026-05-08 09:00:00"

这条命令执行后,任务被写入本地调度队列,到点自动触发 Puppeteer 去发布。

几个有意为之的设计边界:

不支持周期循环。 每条任务都必须明确指定时间。原因:矩阵号的发布节奏通常由上游 AI 流程决定,MatrixMedia 只负责"在指定时间把这条内容发出去",不替你决定"什么时候发"。

程序关闭期间错过的任务显示"过期",不补发。 补发一条过了时间的内容没有意义,平台算法已经错过了那个时间窗口。

与 n8n 配合的方式: n8n 跑完内容生成流程,最后一步 Execute Command 节点里传 --publish-at,整条链路不需要人在场。


四、AI 工具联动实战

n8n 场景

典型流程:HTTP 触发 → 视频生成 → Execute Command 调 matrixmedia cli publish → Switch 节点读退出码 → 0 走成功分支,3 走重登录分支,2 走报警分支。

这个流程里没有任何人工节点。

AI 编程助手场景

在上下文里描述 CLI 的用法和退出码含义,AI 编程助手就能直接生成正确的 shell 调用,也能在退出码不为 0 时写出正确的错误处理逻辑。

一个实际例子:让 AI 编程助手写一个发布脚本,生成的代码会自动处理 code 2(修参数)和 code 3(提示重新登录),不用人手动告诉它每个错误该怎么处理。

为什么这件事值得专门设计

现有的矩阵发布工具,哪怕 GUI 做得再好,对 AI Agent 来说都是不透明的。MatrixMedia 的 CLI 契约是专门为"被程序调用"设计的,不是把 GUI 功能硬加一个命令行入口。这是本质区别。


五、开源地址 + 路线图

GitHub:github.com/hanliang97/...

演示视频(B站):www.bilibili.com/video/BV1hQ...

当前版本 0.5.4,支持抖音 / 快手 / 百家号 / B站 / 头条 / 视频号。

CLI 契约已通过 22 条断言的自动化验证脚本(verify-cli.sh)覆盖,exit code 和 JSON stdout 有保障。

路线图上的下一步:

  • MCP Server --- 让 MatrixMedia 成为标准 MCP Tool,Cursor / Claude Desktop 直接调
  • Webhook 推送发布结果 --- 发布完成后主动通知上游流程,不用轮询
  • 更完整的 AI Agent SDK 封装

如果你在用 n8n / Claude Code / Cursor 搭自动化流程,又在做矩阵号,欢迎试试。有问题直接开 issue,中文优先。


相关推荐
冬奇Lab32 分钟前
Code Agent 解剖(11):Harness 设计之一——控制流
人工智能·开源
冬奇Lab1 小时前
开源项目第198期:Omarchy — DHH 打造的「意见鲜明」Linux 桌面系统
人工智能·开源·操作系统
记忆张量MemTensor4 小时前
产品更新|MemOS 现已支持 DeepSeek Harness 长期记忆接入
人工智能·typescript·开源·agent
ApacheSeaTunnel5 小时前
一个关于数据集成的真相:链路 Success 不等于数据真实可靠
大数据·开源·数据集成·seatunnel·技术分享·数据同步
容器魔方6 小时前
云容器引擎 CCE 2026-Q2 优化升级:AI 推理负载、备份中心、Gateway API能力全新上线!
人工智能·云原生·容器·开源
_xaboy6 小时前
低代码可视化表单设计器 FcDesigner 远程请求教程:GET POST 变量鉴权
低代码·开源·vue·表单·fcdesigner
江湖有缘7 小时前
Docker开源项目: 基于Ubuntu系统部署ExpenseOwl自托管记账工具实战教程
ubuntu·docker·开源
m4Rk_8 小时前
【论文阅读】Agent 记忆机制(50):PACE——按下一步预测价值动态分配历史记忆粒度
论文阅读·人工智能·学习·开源·github
小强闯江湖9 小时前
ViewCompose:让原生 Android View 进入声明式时代
android·开源·kotlin
记忆张量MemTensor9 小时前
MemOS Skill 上线|一句话即可接入 MemOS Cloud
大数据·数据库·人工智能·typescript·开源