Skip to content

joohw/gzh-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gzh-cli:基于微信官方 API 的公众号草稿 CLI

gzh-cli 是一个面向微信公众号发布工作流的 TypeScript 命令行工具。当前版本通过微信公众平台官方 draft/add API 创建公众号草稿,并提供可复用的本地登录会话;freepublish 提交与发布状态轮询正在开发中。

项目坚持 API-first:能通过微信官方 API 完成的操作,不使用浏览器自动化代替。草稿创建与正式发布保持分离,未来的发布命令也会轮询发布状态,不会把 freepublish/submit 成功误判为文章已经发布。

功能

  • 持久化登录:gzh login
  • 环境诊断:gzh doctor
  • 使用微信官方草稿 API 创建单篇图文草稿:gzh draft create
  • 支持 HTML 字符串或本地 HTML 文件作为正文
  • 支持作者、摘要、原文链接和评论权限参数

使用前提

  • Node.js 20 或更高版本
  • 已认证的微信公众号
  • 账号已具备草稿相关 API 权限
  • 用于创建草稿的 WECHAT_MP_ACCESS_TOKEN
  • 已上传到微信素材库的封面图 media_id

不同公众号类型、认证状态和接口权限可能不同。执行草稿或发布命令前,请先在微信公众平台确认当前账号拥有相应 API 权限。

安装

npm 包发布后,可通过以下命令全局安装:

npm install -g @joohw/gzh-cli

当前尚未发布到 npm Registry 时,可从源码运行:

git clone https://github.com/joohw/gzh-cli.git
cd gzh-cli
npm ci
npm run build
node dist/cli/index.js help

快速开始

先检查当前 CLI 状态:

gzh doctor

如需登录微信公众平台并复用本地登录态:

gzh login --timeout 120

创建草稿前设置 Access Token:

export WECHAT_MP_ACCESS_TOKEN='your-access-token'

然后创建微信公众号草稿:

gzh draft create \
  --title '测试文章' \
  --thumb-media-id 'THUMB_MEDIA_ID' \
  --content-file ./article.html \
  --author 'Joo' \
  --digest '这是一篇测试草稿' \
  --source-url 'https://example.com/post' \
  --need-open-comment true

命令成功后会输出草稿 media_id 和微信公众平台编辑地址。创建草稿不会自动发布文章。

命令参考

gzh help

显示帮助和当前可用命令。

gzh version

显示当前版本。

gzh doctor

显示登录、草稿 API 和发布能力的实现状态。

gzh login

gzh login [--timeout <>]

打开微信公众平台登录页,并将登录状态保存在本地 Chrome 配置目录中。该浏览器登录能力用于需要网页会话的辅助场景,不是草稿和发布操作的默认路径。

gzh draft create

gzh draft create \
  --title <标题> \
  --thumb-media-id <mediaId> \
  (--content <HTML> | --content-file <path>) \
  [--author <作者>] \
  [--digest <摘要>] \
  [--source-url <链接>] \
  [--need-open-comment <true|false>] \
  [--only-fans-can-comment <true|false>]

--content--content-file 只能选择一个。正文必须是微信图文消息接口可接受的 HTML。

工作原理

HTML 正文 + 封面 media_id
            │
            ▼
微信官方 draft/add API
            │
            ▼
草稿 media_id + 编辑地址

规划中的正式发布流程为:

草稿 media_id → freepublish/submit → publish_id → 轮询发布状态 → 确认成功或失败

常见问题

为什么创建草稿后没有自动发布?

微信草稿与正式发布是两个不同阶段。当前版本只实现草稿创建,避免在没有明确确认的情况下发布内容。

为什么不直接自动操作浏览器发布?

官方 API 的行为更稳定、结果更容易验证。项目只在登录等必要场景使用浏览器能力。

Access Token 应该放在哪里?

通过环境变量 WECHAT_MP_ACCESS_TOKEN 提供。不要把 Access Token、Cookie 或其他公众号凭据提交到 Git 仓库。

thumb-media-id 从哪里获得?

它是已经上传到微信素材库的封面图素材 ID。当前版本暂未提供素材上传命令。

开发

npm ci
npm run build
npm test
node dist/cli/index.js help

路线图

  • gzh publish submit --media-id <id>
  • gzh publish status --publish-id <id>
  • 发布状态自动轮询与失败原因输出
  • 素材上传和账号 API 权限诊断

安全说明

  • 不要提交 Access Token、Cookie 或浏览器用户数据目录。
  • 建议使用最小必要权限的微信公众平台凭据。
  • 正式发布功能完成后,仍应在发布前核对目标账号和草稿内容。

License

MIT

About

WeChat Official Account API-first CLI for drafts and publishing workflows

Topics

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors