当前位置: 首页 > 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.rkmt.cn/news/1370343.html

相关文章:

  • 交通运输部公路局:2026年春节假期公路交通服务保障典型案例集
  • BilibiliDown:解放你的B站收藏夹,让精彩视频永不消失
  • Windows网络性能评估终极指南:iperf3-win-builds深度解析与实战应用
  • 【Google官方未公开】Gemini免费层底层计费逻辑揭秘:按token粒度精算,92%用户多花了37%配额
  • taotoken助力企业将内部知识库问答系统接入大模型
  • 每日一个开源项目 #110:ai-engineering-from-scratch - 从零构建 AI 工程全栈能力
  • DeepSeek工具调用失败率突增237%?紧急发布:2024Q3工具注册中心变更公告与向后兼容迁移方案(72小时倒计时)
  • 基于SpringBoot的流浪动物救助与领养系统毕业设计源码
  • Palworld存档迁移终极解决方案:palworld-host-save-fix完整教程
  • VideoSrt:重新定义本地化视频字幕生成的技术架构与实践范式
  • 如何高效使用Monitorian:3个智能自动化技巧解放你的双手
  • 从0到1跑通DeepSeek-Coder:火山引擎Serverless推理服务全流程(含Code Interpreter沙箱安全加固步骤)
  • DeepSeek本地部署性能压测报告:单A10 24G实现实时流式响应<320ms(附Prometheus+Grafana监控看板模板)
  • UnityExplorer终极指南:免费开源的Unity游戏调试神器
  • 【DeepSeek端侧部署黄金标准】:基于Jetson Orin NX的12.8 TOPS实测基准,附可复现的ONNX Runtime+Vulkan后端配置清单
  • 从实验到生产:在CentOS 7上配置vsftpd实现安全用户隔离上传(含SELinux策略调整)
  • 别选错高定木作 2026年热门高定木作TOP10实力解析 - 打我的的
  • 以技术管控替代人为约束,夯实煤矿安全生产根基 ——结合山西沁源5·22瓦斯爆炸事故剖析矿山安全管控升级方案
  • 如何快速掌握网络性能测试工具:面向新手的完整指南
  • 5大AI音频处理神器:OpenVINO插件让Audacity变身专业音频工作站 [特殊字符]
  • ARM开发环境DS-5内存优化与JVM配置实战
  • 2026年最新亲测15款降AIGC平台红黑榜!
  • 使用curl命令快速测试taotoken的openai兼容接口连通性与模型响应
  • UnrealPakViewer深度解析:可视化分析虚幻引擎Pak文件的终极指南
  • 2026 东莞房屋漏水不用愁!雨中匠人免费上门检测,本地专业防水公司常年TOP1!卫生间免砸砖防水,快速解决您的烦恼。权威!靠谱!稳定!售后无忧!!! - 防水百科
  • 2026 西安添价收品牌首饰回收报价透明 依照品相定级不会刻意压低价格 - 薛定谔的梨花猫
  • 2026 宜昌房屋漏水不用愁!雨中匠人免费上门检测,本地专业防水公司常年TOP1!卫生间免砸砖防水,快速解决您的烦恼。权威!靠谱!稳定!售后无忧!!! - 防水百科
  • 别再硬啃课本了!用Python+NumPy手搓一个遗传算法,5分钟搞定函数最大值求解
  • PerfView诊断.NET内存泄漏的四层穿透法
  • 2026 东营房屋漏水不用愁!雨中匠人免费上门检测,本地专业防水公司常年TOP1!卫生间免砸砖防水,快速解决您的烦恼。权威!靠谱!稳定!售后无忧!!! - 防水百科