书接上回,话说前两天我上线了自己的博客站,是一个基于Astro写的静态博客,页面风格偏向于苹果的Liquid Glass风格,有点个性,可以看看我上一篇文正《我的Liquid Glass主题博客改版上线了》。
本来计划是把博客作为一个内容备份中心,主要同步自己的公众号文章,同时写一些零碎的内容。
写一个公众号同步助手
最开始我是手动更新的,复制粘贴了几篇过去。操作几次之后发现,这种方式真的有点费劲儿,效率极低。于是我就写了一个公众号同步助手,帮我把公众号的内容自动同步到博客站上。
现在还是一个半成品,但我还是想分享一下开发思路,一方面是做个记录,另一方面也想着万一有高手指点一二呢。好了,首先得把想法变成理论,然后有理论才能实践。
问题的关键是:怎么获取公众号的文章列表?目前,公众号并没有提供一个公开页面能直接列出所有文章,所以只能另寻他路。
官方文档
一开始我想到的是看有没有官方 API 可用,查了一下文档,居然还真有一个叫“获取已发布的消息列表”的接口。
我兴奋地写了个 demo 试了下,结果死活拿不到数据。后来仔细一看才发现,这个接口只对企业主体且已认证的公众号开放 ,个人号不在服务范围内——无语死了,白高兴一场。
后台页面接口
既然官方 API 不行,那就只能“曲线救国”。网上查了一圈资料,发现有一种方式可以从公众号后台的页面接口拿到数据。它的原理是模拟后台请求,需要获取一些认证信息,比如 fingerprint、token 和 cookie,然后手动拼装请求链接,就可以拿到文章列表了。
当然,这种方式也有很多限制,比如需要登录、token 会过期、cookie 会失效、甚至要频繁手动更新这些参数……但好在,这个工具只是我自己用,所以够用了。
拿到文章列表后,下一步就是解析数据,把文章标题、作者、发布日期等字段提取出来。至于正文内容,则是通过文章链接访问详情页,再解析页面内容。
数据抓取完成后,我会把内容保存到本地,然后一键生成 Markdown 文件。因为我的博客内容是托管在 GitHub 上的,只要把 Markdown 文件 push 上去,Netlify 就会自动构建并部署,博客就完成更新了。
整体流程
整个流程大概是这样的:
流程还挺丝滑的。目前,我已经把最难的部分——文章列表接口的获取 搞定了,成功拿到了数据,并且已经写了一个简单的管理页面用来查看和处理文章内容。
接下来要做的就是把文章内容转成 Markdown 格式。这一步其实也不简单,因为原始文章是 HTML 格式的,转 Markdown 需要设定一套合理的转换规则,还要处理样式、图片、引用等等问题,这块还得仔细琢磨。
OK,今天就先写到这儿。后面进展顺利的话,我再来跟大家更新一波。
