使用项目 weixingongzhonghao-publisher 的 CLI 工具,将文章发布到微信公众号草稿箱。
按以下优先级确定 weixingongzhonghao-publisher 的项目根目录( PROJECT_DIR):
当前工作目录:检查是否存在 package.json 且 name 为 weixingongzhonghao-publisher。
环境变量:如 process.env.WECHAT_PUBLISHER_DIR 存在且包含有效的 package.json。
用户主目录:检查 ~/workspace/weixingongzhonghao 或 ~/weixingongzhonghao 是否存在有效的 package.json。
以上都未找到:提示用户先执行以下命令之一: bash
# 方式 A:克隆仓库到当前目录
git clone https://github.com/lixinran2015/weixingongzhonghao.git
cd weixingongzhonghao
# 方式 B:设置环境变量(如果仓库在其他位置)
export WECHAT_PUBLISHER_DIR=/path/to/weixingongzhonghao
一旦找到 PROJECT_DIR,后续所有 npm run 命令都必须在 PROJECT_DIR 下执行(通过 Bash 的 cwd 或在命令前加 cd PROJECT_DIR &&)。
在 PROJECT_DIR 下运行:
bash
ls node_modules/.bin/playwright
如不存在,运行:
bash
cd PROJECT_DIR && npm install && npx playwright install chromium
确定 Cookie 路径: bash
cd PROJECT_DIR && node -e "const p=require('path'); console.log(p.join(process.env.HOME||process.env.USERPROFILE,'.config','weixingongzhonghao','cookies.json'))"
检查 Cookie 是否有效: bash
cd PROJECT_DIR && npm run check:login
cd PROJECT_DIR && npm run login:这会打开浏览器等待用户扫码,登录成功后自动保存 Cookie。用户可能通过以下几种方式提供内容:
如果路径是相对路径,先基于当前工作目录解析为绝对路径。
然后直接在 PROJECT_DIR 下使用 --file 模式:
bash
cd PROJECT_DIR && npm run publish -- --file <absolute-path> [--title "标题"]
标题优先级: --title 参数 > HTML <title> 标签 > 文件名
帮用户生成临时 HTML 文件到 PROJECT_DIR/articles/ 目录:
读取 PROJECT_DIR/articles/ 下现有文件,确定可用文件名(如 articles/untitled-1.html)
将内容包装成基础 HTML 结构: html
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>用户提供的标题</title></head>
<body>...用户内容...</body>
</html>
使用 Write 写入 PROJECT_DIR/articles/untitled-N.html
然后以 --file 方式调用发布
如果用户明确要求使用某个 yaml 配置: bash
cd PROJECT_DIR && npm run publish -- --config <path>
--debug 参数(显示浏览器窗口,slowMo 1000ms)。成功:返回草稿链接、耗时,并祝贺用户。
失败:
PROJECT_DIR/logs/screenshots/ 下最新的错误截图(按修改时间排序)cookies/cookies.json 被 git 跟踪,立即提醒用户取消跟踪。