用 AI 自动整理 GitHub 热榜,并推送到微信公众号草稿箱

最近折腾了一套小工作流:让 AI 自动抓取 GitHub 最近一周涨星比较快的开源项目,整理成适合微信公众号阅读的文章,再推送到公众号草稿箱。
这套流程目前还在继续完善,源码和文档还没到可以直接丢出来的程度。等后面稳定一点,我会整理到 Git 仓库里。这里先把整体思路记录下来,算是阶段性复盘。
为什么要做这个
GitHub Trending 很适合当技术雷达。
但如果每周都手动整理一遍,其实挺麻烦。大概流程是这样:
1 | 打开 GitHub Trending |
这些步骤里,真正值得花时间的是判断项目有没有价值,以及怎么把它解释给读者听。
至于抓数据、补字段、整理格式、上传草稿这些重复动作,更适合交给脚本和 AI。
我想要的效果很简单:以后只要说一句:
1 | 生成本周 GitHub 涨星榜公众号草稿 |
后面的事情就自动跑完。
想达到的效果
理想状态下,这条工作流需要自动完成这些事:
- 抓取 GitHub Weekly Trending。
- 补充 GitHub API 里的元数据。
- 生成网页预览版。
- 生成微信公众号兼容的 HTML。
- 准备封面图。
- 上传正文图片和封面图到微信。
- 创建微信公众号草稿。
- 返回草稿
media_id。
如果想让封面更好看,也可以让 AI 先生成提示词,再去 Gemini 这类工具里生成图片。
这个流程不是为了“完全自动发文章”,而是为了把麻烦的步骤提前处理好,最后还是由人来预览和决定要不要发布。
整体流程
整个链路可以拆成五层:
1 | GitHub Trending |
再展开一点,大概是:
1 | 1. 抓取 GitHub Trending weekly 页面 |
这里面最关键的是分清楚:哪些事情需要判断,哪些事情只是稳定执行。
AI 更适合做理解、总结、改写;脚本更适合做抓取、上传、校验和接口调用。
为什么要生成三份 HTML
这里主要是因为公众号编辑器比较特殊。
普通网页里可以随便写 CSS、JS、布局,怎么舒服怎么来。但微信公众号编辑器和图文 API 会过滤很多东西,尤其是外部 CSS、复杂布局和脚本。
所以我把最终产物拆成了三个版本。
网页预览版
路径类似:
1 | public/index.html |
这个版本主要给自己看,样式可以自由一点,适合本地预览,也方便以后部署成静态页面。
数据看板版
路径类似:
1 | public/index-dashboard.html |
这个版本更像一个快速扫榜的表格或看板。项目数量多的时候,看板比长文章更适合快速筛选。
公众号内联样式版
路径类似:
1 | articles/wechat-article-inline.html |
这个版本才是真正要推到公众号草稿箱里的正文。
它需要遵守几个限制:
1 | 不用 JavaScript |
公众号排版最麻烦的地方就在这里:你本地看着正常,不代表丢进公众号后还正常。
微信公众号 API
公众号这边主要用到几个接口:
1 | 获取 access_token |
实际跑下来,草稿接口最实用。
直接发布接口不一定有权限。我测试时,草稿创建是正常的,但发布接口返回过:
1 | 48001 api unauthorized |
这说明当前公众号没有开放发布接口权限。
不过这反而让我觉得流程更安全:自动化负责把草稿准备好,人最后再进后台预览、检查、发布。
公众号文章毕竟是发给读者看的,最后一步还是留给人判断比较稳。
环境变量
敏感信息统一放在 .env 里:
1 | WECHAT_APP_ID=你的公众号AppID |
仓库里只提交 .env.example,不提交真实 .env。
.gitignore 里至少要有:
1 | .env |
还有一个小坑:.env 最好确认是 UTF-8 编码。
如果标题、摘要里出现类似 杩欎竴... 或者一堆问号,先别急着怀疑微信 API,大概率是本地环境变量文件编码坏了。
AI 和脚本怎么分工
这套流程里,我不想让 AI 完全自由发挥。
比较舒服的方式是:让它做适合它的部分。
比如这些交给 AI:
1 | 根据 README 和项目描述概括适用人群 |
而确定性强、需要稳定执行的部分交给脚本:
1 | 抓取数据 |
这个分工挺重要。
AI 负责理解和表达,脚本负责稳定执行。两边边界清楚,整套流程才不会飘。
封装成 Codex Skill
这次我把流程封装成了一个 Codex Skill,名字叫:
1 | github-trending-wechat |
Skill 里记录了完整流程:
1 | 什么时候触发 |
这样下次就不用从头解释需求。
我只要说:
1 | 用 github-trending-wechat 技能,生成本周涨星榜公众号草稿。 |
它就能按固定流程继续往下走。
这也是我觉得 AI 工具真正好用的地方:不是每次都重新聊天,而是把有效流程沉淀下来。
一键调用
项目里目前核心是两个脚本:
1 | scripts/generate-weekly-article.mjs |
第一个负责生成文章:
1 | node scripts/generate-weekly-article.mjs |
第二个负责检查配置和推送草稿:
1 | node scripts/wechat-push.mjs check |
后面还可以封装成 npm 命令:
1 | npm run generate |
这样就比较接近“一键生成草稿”了。
封面图怎么处理
封面图我目前考虑两种路线。
本地生成
用脚本生成一张简单的科技风封面。
优点是稳定、可控,不依赖第三方服务,适合自动化任务。
第三方生图
如果想让公众号好看一点,可以让 AI 先生成图片提示词,然后去 Gemini 这类工具里生成图。
这次的提示词方向大概是:
1 | 科技信息图海报 |
如果自动化程度再往前推,也可以让 Codex 操作 Chrome:
1 | 打开指定 Chrome Profile |
这一步不是必须的,但确实能让文章观感好不少。
当前进度
目前已经跑通的部分:
1 | GitHub Trending 抓取 |
还可以继续优化:
1 | 更稳定地解析 GitHub Trending |
最后
这套东西本质上不是让 AI 替我发文章。
更准确地说,是把重复、机械、容易出错的步骤交给 AI 和脚本,把人的注意力留给判断和表达。
我觉得这会是个人内容工作流很重要的方向:
人负责品味和决策,AI 负责执行和整理。
等这套流程再完善一点,我会把源码整理开源。
公众号
如果你也对 AI 自动化、开源项目整理、个人内容工作流这些东西感兴趣,可以关注我的公众号。





