Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

公众号草稿推送 · 微信云托管方案(免 IP 白名单,一劳永逸)

用「微信云托管 + 开放接口服务」把文章自动推送到公众号草稿箱。 云托管容器内调用微信 API 不需要配置 IP 白名单(官方机制),彻底摆脱 "家庭宽带动态 IP / 代理节点轮换导致白名单失效"的问题。

架构

本机(每天 20:00 计划任务)
  └─ client/push_wechat_draft.py  ──POST 图文──▶  微信云托管服务 /push
                                                      │ 开放接口服务(免鉴权)
                                                      ▼
                                              api.weixin.qq.com
                                              add_material / uploadimg / draft/add
                                                      │
                                                      ▼
                                                 公众号草稿箱(不自动发布)

文件结构

wechat-cloud/
├── app.py                      # 云托管服务端(Flask,/push 接口)
├── Dockerfile                  # 构建镜像
├── requirements.txt
├── container.config.json       # 云托管服务配置(端口 80)
└── client/
    └── push_wechat_draft.py    # 本机推送脚本(纯 Python 标准库,零依赖)

一、部署到微信云托管(一次性的,约 20 分钟)

1. 开通云托管

  • 打开 https://cloud.weixin.qq.com ,用公众号管理员微信扫码登录
  • 首次进入会提示选择「小程序/公众号」→ 选公众号
  • 提示新建环境 → 填环境名称(如 wechat-push),按提示开通(会引导绑定 腾讯云账号/支付方式用于按量计费,免费体验额度内不扣费

2. 创建服务

  • 控制台 → 服务列表 → 【新建服务】
  • 服务名称:wechat-push开启「允许公网访问」(本机脚本要走公网调它)

3. 上传代码(二选一)

  • 方式 A(GitHub/Gitee 流水线):把 wechat-cloud/ 目录内容推到一个 Git 仓库(Dockerfile 必须在仓库根目录),在服务详情 → 流水线 → 新建流水线 → 选你的仓库 → 构建发布
  • 方式 B(本地部署):安装微信云托管 CLI(文档见云托管控制台),在 wechat-cloud/ 目录执行部署命令,把代码/镜像推到云托管

4. 服务配置

  • 端口填 80(必须与 Dockerfile 的 EXPOSE 80 一致)
  • CPU/内存用默认即可(0.25 核 / 0.5G 足够,每天就推一篇)

5. ⚠️ 关键:开启「开放接口服务」(免白名单的开关)

  1. 控制台 → 云调用 → 微信令牌权限配置,添加以下接口(逐个添加):
    • /cgi-bin/material/add_material
    • /cgi-bin/media/uploadimg
    • /cgi-bin/draft/add
  2. 打开「开放接口服务」开关
  3. 重新构建/发布一个新版本(开关开启后创建的版本才生效!)
  4. 验证:服务日志里请求应带 x-openapi-seqid 头(说明走了云调用链路)

6. 拿到公网访问域名

  • 服务详情 → 版本列表 → 当前版本 → 复制「公网访问域名」 (形如 https://wechat-push-xxxx.service.tcloudbase.com

二、本机测试推送(部署完成后)

python client/push_wechat_draft.py "<文章HTML绝对路径>" "https://你的公网域名"

成功返回 {"ok": true, "media_id": "..."} → 去公众号后台草稿箱查看。

三、每天自动推送(Windows 计划任务)

  1. 打开「任务计划程序」→ 创建基本任务
  2. 触发器:每天 20:05(等 20:00 文章生成完)
  3. 操作:
    • 程序:python.exe(建议用绝对路径)
    • 参数:"D:\a project\自媒体\公众号\wechat-cloud\client\push_wechat_draft.py" "<当天文章HTML>" "https://你的公网域名"
    • 起始于:D:\a project\自媒体\公众号\wechat-cloud\client
  4. 若当天文章路径带日期,可在参数里写死当天日期,或用批处理动态拼

计费说明(重要)

  • 微信云托管按量计费(CPU/内存 × 运行时长,100ms 粒度),有免费体验 额度;每天 1 篇推文的调用量极小,基本都在免费额度内
  • 服务配了 minNum: 0 → 没请求时自动缩到 0,不运行就不计费
  • 建议在云托管控制台设置费用预警,避免意外超支
  • 防意外:正文图单张建议 < 5MB(云调用单请求上限 32MiB)

常见问题

  • 接口返回 40164(IP 不在白名单):说明没走开放接口服务——检查第 5 步 开关是否开启、接口是否加入令牌权限配置、版本是否在开启后重新构建
  • 请求超时:云调用单次上限 30s,图片过大时先压缩再传
  • 没有封面/push 支持 cover 字段上传封面图(比百家号强,公众号封面 可以 API 设置);不传封面时微信会用正文首图兜底

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages