当前位置: 首页 > news >正文

如何搭建「热点资讯 → 微信公众号」自动发布系统

本文是一篇通用教程,介绍如何从零搭建类似 StockNewsPublisher 的系统:定时抓取公开资讯,生成图文,推送到微信公众号。不绑定特定服务器或账号,可按需替换数据源与部署环境。


一、系统能做什么

典型流程:

定时任务 → 抓取热点数据 → 组装 HTML 文章 → 微信草稿箱 → (可选)API 自动发布

适用场景:

  • 股市/财经早报

  • 行业资讯汇总

  • 运营类公众号的半自动内容更新


二、为什么需要后端服务器

微信公众号的AppSecret、access_token、发布接口只能在服务端安全使用:

  • 不能写进 Android/iOS App(会泄露)

  • 不能纯前端网页调用(跨域 + 密钥暴露)

因此标准架构是:

[可选手机 App] ──HTTP──► [你的 Python/Node 后端] ──HTTPS──► [微信 API] │ [数据源 API]

手机 App不是必须的;只要后端在云服务器上 7×24 运行,就能每天自动执行。


三、前置条件

3.1 公众号

  1. 已注册微信公众号(订阅号或服务号)

  2. 管理员能登录 微信开发者平台

  3. 获取AppIDAppSecret(路径:我的业务 → 公众号 → 基础信息 → 开发密钥)

  4. 后端服务器公网 IP加入API IP 白名单(同页开发密钥)

3.2 服务器

任选其一:

  • 云厂商 Linux 虚拟机(阿里云、腾讯云等)

  • 家庭/NAS 机器(需有公网 IP 或内网穿透,且 IP 能加入微信白名单)

建议配置:1 核 1G 内存即可;系统 Ubuntu 22.04 / CentOS 7+。

3.3 本地开发环境(可选)

  • Python 3.10+

  • Git


四、搭建步骤概览

1. 准备公众号 AppID / AppSecret / IP 白名单 2. 克隆或复制项目代码 3. 配置 backend/.env 4. 本地试运行验证 5. 部署到云服务器 + systemd 开机自启 6. 手动触发一次发布,检查草稿箱或已发文章 7. 确认定时任务在目标时间执行

五、本地试运行

以 StockNewsPublisher 为例(其他框架思路相同):

cd StockNewsPublisher/backend python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt cp .env.example .env # 编辑 .env,填写微信与管理员账号 uvicorn app.main:app --host 0.0.0.0 --port 8000

浏览器访问:

http://127.0.0.1:8000/health

应看到wechat_configured: true(填好微信配置后)。

测试发布

# 登录 curl -X POST http://127.0.0.1:8090/api/login \ -H "Content-Type: application/json" \ -d '{"username":"123","password":"123"}' ​ # 发布(替换 TOKEN) curl -X POST http://127.0.0.1:8000/api/publish \ -H "Authorization: Bearer TOKEN"

然后登录 微信公众平台 →内容管理 → 草稿箱,确认是否出现新文章。


六、部署到 Linux 服务器

6.1 上传代码

方式任选:

  • scp/rsync上传backend/目录

  • 使用项目自带的deploy.py(SSH + 自动打包)

  • Git 在服务器上git clone

目标目录示例:/opt/stock-news-publisher/backend

6.2 安装依赖

cd /opt/stock-news-publisher/backend python3 -m venv venv ./venv/bin/pip install -r requirements.txt cp .env.example .env nano .env # 填写生产配置

6.3 使用 systemd 守护进程

创建/etc/systemd/system/stock-news-publisher.service

[Unit] Description=Stock News Publisher API After=network.target ​ [Service] Type=simple WorkingDirectory=/opt/stock-news-publisher/backend Environment=PATH=/opt/stock-news-publisher/backend/venv/bin ExecStart=/opt/stock-news-publisher/backend/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000 Restart=always RestartSec=5 ​ [Install] WantedBy=multi-user.target

启用:

systemctl daemon-reload systemctl enable stock-news-publisher systemctl start stock-news-publisher systemctl status stock-news-publisher

6.4 防火墙

# firewalld 示例 firewall-cmd --add-port=8000/tcp --permanent firewall-cmd --reload

生产环境建议前面加Nginx + HTTPS,仅暴露 443 端口。


七、核心配置说明

.env中常用项:

ADMIN_USERNAME=admin ADMIN_PASSWORD=请改为强密码 JWT_SECRET=请改为随机长字符串 ​ WECHAT_APP_ID=wxXXXXXXXX WECHAT_APP_SECRET=xxxxxxxx ​ SCHEDULE_HOUR=8 SCHEDULE_MINUTE=0 TIMEZONE=Asia/Shanghai
配置作用
SCHEDULE_HOUR/MINUTE每天几点执行,改后需systemctl restart
TIMEZONE定时时区,国内用Asia/Shanghai
WECHAT_*微信接口凭证

八、微信发布权限(常见问题)

8.1 草稿 vs 自动发布

微信提供两类能力:

  1. 草稿箱draft/add)— 多数已开通开发者的账号可用

  2. 发布接口freepublish/submit)— 需账号具备相应权限

若 API 返回48001 api unauthorized

  • 草稿通常已经创建成功

  • 需到公众平台草稿箱手动发表

  • 或使用已认证的企业主体服务号以开通完整发布能力

8.2 AppSecret 在哪里

2025 年 12 月起,不再从 mp.weixin.qq.com 的「基本配置」查看,而是:

微信开发者平台 → 我的业务 → 公众号 → 基础信息 → 开发密钥

忘记 Secret 只能重置,旧 Secret 立即失效。

8.3 IP 白名单

调用服务端 API 时,请求来源 IP 必须在白名单内。 若服务器换 IP 或迁移,记得同步更新。


九、定时任务原理

本项目使用APScheduler的 Cron 触发器:

  • 服务启动时注册「每天 HH:MM 执行」

  • 到点自动:抓数据 → 生成文章 → 调微信接口

  • 无需 crontab,也无需外部再调 HTTP

修改时间 = 改.env+ 重启服务,通过/healthschedule字段验证。


十、可选:Android 客户端

App 仅用于:

  • 在手机上查看今日热点

  • 手动点「立即发布」

日常自动发布不依赖 App。若只做自动早报,可只部署后端。

安装 APK 后,登录页填写:

  • 服务器地址:http://你的服务器IP:8000

  • 用户名/密码:与.envADMIN_*一致


十一、自己换数据源

若要改成别的资讯(科技、体育等),只需替换news_service.py中的抓取逻辑:

  1. 找到稳定、允许抓取的 HTTP API 或 RSS

  2. 解析为统一结构:titlesummaryurl

  3. _build_article_html()中渲染成 HTML

  4. 其余微信发布流程可复用

注意遵守目标网站 robots 协议与服务条款。


十二、检查清单(上线前)

  • .env中密码、JWT、AppSecret 已修改,且未提交 Git
  • 微信 IP 白名单已添加服务器公网 IP
  • /health返回wechat_configured: true
  • 手动/api/publish能在草稿箱看到文章
  • journalctl无持续报错
  • 定时时间/health显示正确
  • 明确账号是否有 API 自动发布权限;若无,运营流程包含「草稿箱人工发表」

十三、延伸阅读

  • 微信公众号 — 新增草稿

  • 微信公众号 — 发布草稿

  • 开发接口管理迁移说明


十四、免责声明

  • 资讯内容来源于第三方公开数据,不构成投资建议

  • 自动化发布需遵守微信公众平台运营规范

  • 请合法合规使用爬虫与 API,尊重数据源版权与访问限制


基于 StockNewsPublisher 项目实践整理,可按同样思路扩展到其他资讯类公众号场景。

http://www.jsqmd.com/news/878510/

相关文章:

  • 机器学习能耗评估工具对比:芯片传感器与估算模型实战解析
  • 从开机到登录:你的Linux系统在UEFI幕后都经历了什么?一次完整的“灵魂之旅”拆解
  • CentOS 7 Minimal安装后,别急着装图形界面!先试试这个命令搞定粘贴和联网
  • 2026年最新亲测15款降AIGC平台红黑榜!
  • 基于SpringBoot的校园心理健康匿名互助社区毕设源码
  • 告别卡顿!手把手教你用UltraISO搞定OpenEuler 22.03 LTS U盘安装(含BIOS安全启动避坑)
  • 随机微分方程与网络扩散模型:模拟阿尔茨海默病病理传播的不确定性
  • 2026 揭阳房屋漏水不用愁!雨中匠人免费上门检测,本地专业防水公司常年TOP1!卫生间免砸砖防水,快速解决您的烦恼。权威!靠谱!稳定!售后无忧!!! - 防水百科
  • 为什么92%的DeepSeek私有化部署在上线3个月内遭遇资源越界?一文讲透隔离配置黄金参数
  • 初创团队如何借助 Taotoken 以可控成本快速验证 AI 产品创意
  • 从云服务器到树莓派:不同场景下Linux IP地址类型的管理与查看技巧(ip/nmcli实战)
  • 工业AI质检如何通过标准化数据集实现技术跨越?
  • 破解行业共性管控难题,推动矿山安全体系迭代升级 ——基于视频孪生无感定位的矿山安全体系革新技术方案
  • 【Sora 2时间轴精修终极指南】:从0.01秒关键帧微调到运动矢量对齐,Adobe Premiere Pro + DaVinci Resolve双平台实操手册
  • 基于SpringBoot的流浪动物救助与领养系统毕业设计源码
  • 2026 南宁房屋漏水不用愁!雨中匠人免费上门检测,本地专业防水公司常年TOP1!卫生间免砸砖防水,快速解决您的烦恼。权威!靠谱!稳定!售后无忧!!! - 防水百科
  • 免费视频下载神器VideoDownloadHelper:3分钟快速上手完整指南
  • 告别TeamViewer!在Ubuntu 22.04上安装向日葵远程控制的完整保姆级教程
  • 利用 Taotoken 模型广场为你的 Agent 应用挑选合适模型
  • 别选错高定木作 2026年热门高定木作TOP10实力解析 - 打我的的
  • 基于SpringBoot的献血预约与血库管理系统毕设
  • 基于蒙特卡洛模拟与高斯过程回归的复杂聚合物散射数据分析
  • 【计算机毕业设计】基于Springboot的智能家居系统+万字文档
  • 初创团队如何利用Taotoken Token Plan有效控制大模型试错成本
  • 当主要模型服务波动时如何利用Taotoken快速切换备用模型
  • 边缘AI最后一公里卡点曝光:DeepSeek在RK3588上OOM崩溃、KV Cache错位、Tokenizer同步丢失(附5行patch修复代码)
  • 2026惠州搬家公司哪家专业靠谱?5 家精细化服务口碑推荐 - 从来都是英雄出少年
  • 2026 柳州房屋漏水不用愁!雨中匠人免费上门检测,本地专业防水公司常年TOP1!卫生间免砸砖防水,快速解决您的烦恼。权威!靠谱!稳定!售后无忧!!! - 防水百科
  • 从零构建全球生活便利指数:基于因子分析与随机森林插补的数据工程实践
  • SpringBoot+Vue电影票购买系统源码+论文