命令行(CLI)说明
在保留图形界面的前提下,同一可执行文件支持 CLI 子命令。入口为参数中出现 cli。
故障排除
若启动时报 require('electron') 异常 且类型为 string,多半是环境变量 ELECTRON_RUN_AS_NODE 被设为 1。在该模式下 Electron 以纯 Node 运行,require('electron') 只会得到可执行文件路径。请在本终端执行 unset ELECTRON_RUN_AS_NODE,或在命令前显式清空后再启动,例如:
ELECTRON_RUN_AS_NODE= electron . cli publish --helpyarn dev 已尝试在子进程中清除该变量;若仍异常,请检查 shell 配置(如 .zshrc)是否全局导出了 ELECTRON_RUN_AS_NODE。
CLI 登录
与 GUI getCookie / LocalVideoPublish 对齐的最小闭环,当前支持抖音和视频号两个平台。
通用机制
- 会话:
partition形如persist:<手机号段><平台名>,与账号树、webview 一致。 - Cookie 持久化:登录成功后自动
cookies.flushStore()+flushStorageData(),确保 CLI 与 GUI 共用同一userData下的persist:分区。 - 终端扫码:CLI 自动捕获二维码并在终端展示,用户扫码后继续轮询登录 Cookie。
- 退出:检测到 Cookie 后关窗;超时 / 用户关窗返回码 3。
抖音 CLI 登录
- 登录判定:轮询
https://creator.douyin.com下 Cookiepassport_assist_user。 - 窗口模式:默认屏外隐藏窗口 + 终端二维码;支持
--puppeteer-headless无头模式。 --show会被忽略(不弹窗)。
electron . cli login -p dy --phone 13800138000视频号 CLI 登录
- 登录判定:轮询
https://channels.weixin.qq.com下 Cookiesessionid,检测与旧值不同的新 sessionid 即为登录成功(支持重复登录)。 - 窗口模式:默认透明窗口(
opacity: 0)+ 终端二维码;支持--show弹出可见登录窗口。 - UA 注入:通过 puppeteer CDP
page.setUserAgent()在导航前设置微信 UA,覆盖主 frame + iframe 所有请求。 - QR 提取:遍历所有 frame(含 wujie micro-frontend 的
login-for-iframe),从img.qrcode的data:URL 直接解码。 - 不支持
--puppeteer-headless。
# 终端二维码(默认,无弹窗)
electron . cli login -p sph --phone 13800138000
# 弹出登录窗口
electron . cli login -p sph --phone 宠物 --showLinux / SSH 环境
无显示器或 SSH 环境下请用 xvfb-run -a 提供虚拟显示:
xvfb-run -a ./矩媒.AppImage cli login -p dy --phone 13800138000若 stdout 不是 TTY(如管道重定向),终端截图可能无法正常展示,请在可交互终端中执行。参数见 cli login --help。成功后再执行 cli publish。
发布视频
# 开发(项目根目录,需先 yarn dev 或已 build:dir)
electron . cli publish -p dy --phone 13800138000 -f /path/to/video.mp4 -t "标题"
# Windows 安装包产物
"矩媒.exe" cli publish -p dy --phone 13800138000 -f C:\video.mp4 -t "标题"参数摘要
与界面 本地视频发布(LocalVideoPublish.vue → buildVideoPayload / handleBatchPublish)同一套字段:
| 参数 | 对应 GUI / 载荷字段 |
|---|---|
-p / --platform | 发布平台 |
-f / --file | 本地视频路径 → filePath、data.textOtherName(文件名无扩展名) |
--phone / --partition | 会话分区,与账号树一致 |
-t / --title | 视频标题(必填)→ data.bt1 |
--name / --book-name | 名称(任务记录名)→ bookName;省略时默认与视频文件名(无扩展名)一致 |
--bt2 | 概括短标题 → data.bt2;省略时默认与视频标题一致(视频号等场景) |
--tags / --bq | 视频标签 → data.bq |
--address | 地址 → data.address(仅百家号) |
--publish-at | 一次性定时发布,格式 YYYY-MM-DD HH:mm:ss;创建后立即进入发布历史 |
--show | 当前 CLI 会忽略,仍后台运行 |
--no-close-window | CLI 下无效,仅与 GUI 显示窗口场景有关 |
--draft | 保存到平台草稿箱,不直接发布 |
--sph-product-id | 视频号商品上架快捷参数(商品编号);其他平台忽略 |
--sph-link-type | 视频号链接类型,当前支持 none / product;其他平台忽略 |
--sph-link-value | 视频号商品编号;可单独传(默认按商品上架) |
完整说明请执行:
<应用> cli publish --help退出码
| 码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 未捕获异常 |
| 2 | 参数错误 |
| 3 | 任务失败(如未登录、上传失败) |
| 4 | 视频号链接添加失败,视频已转存草稿,需人工检查 |
视频号商品上架并保存草稿:
electron . cli publish -p sph --phone 13800138000 -f /path/to/video.mp4 \
-t "视频标题" --bt2 "视频号短标题" --draft \
--sph-product-id 10000591263144视频号链接参数属于视频号专属能力。即使误传给抖音、B 站等其他平台,也会被忽略,不会阻断任务。
注意事项
- 登录态:CLI 与 GUI 共用同一
partition会话(userData固定为matrix-video)。抖音和视频号可使用cli login在终端完成扫码登录;其它平台可先在 GUI 登录,或保证该partition已有有效 Cookie。 - 与 GUI 同时运行:CLI 模式不会申请单实例锁;若与 GUI 同时使用同一账号 partition,可能导致会话冲突,建议错峰使用。
- 进程生命周期:CLI 仍会启动一个 Electron 主进程,只是不显示 GUI。命令完成、参数失败或业务失败后会主动退出;执行发布期间进程存在属于正常现象。
- 启动诊断:终端会依次输出 Puppeteer 初始化、Electron ready、CLI 参数识别和最终退出码。初始化超过 15 秒会以退出码
1结束并打印明确错误,不会无限静默等待。 - 登录失效:视频号发布页若跳转到
channels.weixin.qq.com/login.html,CLI 会立即提示重新登录并以退出码3结束,不再按普通 URL 不匹配重复重试。 - 定时发布:
--publish-at "YYYY-MM-DD HH:mm:ss"只支持一次性明确时间点,不支持每日/每周/每月。定时任务会写入发布历史,状态为“等待定时发布”;如果应用关闭导致错过执行时间,下次启动会标记为“任务过期”,可在视频管理中重新发布。 - Linux 打包:使用
yarn build:linux生成 AppImage(需在本机构建环境安装相应依赖)。
发布掘金文章
掘金文章发布复用 GUI 中已登录的掘金账号会话,--phone / --partition 需要与界面里的掘金账号一致。正文可以直接传入 --content,也可以通过 --file / -f 读取本地 .md / .txt 文件;至少提供一个,同时提供时优先使用 --content。
electron . cli publish-article -p juejin --phone 13800138000 -t "文章标题" --file ./post.md
electron . cli publish-article -p juejin --phone 13800138000 -t "文章标题" --content "正文内容" --tags "前端 electron"
electron . cli publish-article -p juejin --phone 13800138000 -t "文章标题" --file ./post.md --publish-at "2026-05-13 10:00:00"参数摘要
| 参数 | 说明 |
|---|---|
-p / --platform | 发布平台,当前支持 juejin / jj / 掘金 |
--phone / --partition | 会话分区,与 GUI 掘金账号一致 |
-t / --title | 文章标题 |
--content | 文章正文,至少与 --file / -f 提供一个;同时提供时优先使用 --content |
-f / --file | .md / .txt 正文文件,至少与 --content 提供一个;同时提供时优先使用 --content |
--cover | 可选封面图片 |
--category | 分类,默认“前端” |
--tags | 空格分隔标签,默认“前端 electron” |
--summary | 可选摘要,不传则由掘金自动生成 |
--publish-at | 一次性定时发布,格式 YYYY-MM-DD HH:mm:ss |
构建命令
yarn build:Windows x64 NSISyarn build:mac:macOS dmg(x64,Apple Silicon 通过 Rosetta 运行)yarn build:linux:Linux AppImageyarn build:all:Windows + Linux + macOS
