给微信公众号生成 RSS 订阅源
众所周知, 微信公众号比较封闭, 爬取也有一定门槛, 对于 RSS 重度用户来说很不友好, 加上如今订阅号的推送也是乱序时间轴的, 作为在推荐算法的重重包围下做挣扎的一员, 希望在此借助 Github 为同好提供有限的订阅服务.
收录的公众号均来自网友提交或者采集自公开榜单, 不代表任何立场; 所有内容均为手动抄录, 未进行任何逆向工程.
本指南只针对不是很熟悉 github 的朋友, 方便大家直接在网页上提交 pr, 老手可忽略~
- 拉到底部, 按照格式在文档的末尾添加你想要添加的公众号, 根据下图的箭头指示添加完成后, 点击
Propose changes
, 注意第二个箭头处按照格式填写, 不要是默认的Update list.csv
, 格式如下:- 以
新增:
开头, 注意冒号是半角字符; - 用半角空格
新增: 火绒安全实验室
,新增: 火绒安全实验室 人民日报
; - 多个公众号可以用概述, 同样用半角空格
新增: 火绒安全实验室 人民日报 等
,新增: 36个游戏资讯公众号
.
- 以
- 网页跳转后来到如下页面则说明修改成功了, 开始提交 pr
- 接下来你就可以通过 github 或者 Email 查看这个 pr 是否被合并, 或者是否被要求更改, 根据提示进行后续的修改
- 注意事项:
- 请确保每次 pr 只修改提交一次.
- 在自己的 pr 没被处理前, 建议不要立刻提新的 pr, 推荐多个公众号 (64 个以内) 放在一次 pr 里, 或者关闭前一个 pr 重新提交.
- 请确认自己的输入法, 分隔的标点符号为半角符号, 而不是全角符号, 区别请自行搜索.
- 直接在网页上拉到行尾添加, 以免破坏文件格式.
- 获取
bizid
, 参见 如何获取 bizid name
和bizid
为必需,description
可留空,description
内如有半角双引号、换行、逗号时, 需要转义, 参见 csv 转义方式
- 选择一篇文章复制链接
- 在 这里 新开一个 issue, 标题随便填写, 内容填上链接, github actions 会自动抓取和回复数据, 只需要等待一会然后复制就可以了. 参考 #29. 只监听新开 issue 的事件, edit 无效. 如果失败, 请 手动获取
- 选择一篇文章复制链接, 注意如果公众号已被永久屏蔽, 就不用再添加了, 会不定期清理已屏蔽的公众号; 如果公众号已迁移, 用迁移后的 bizid
- 在浏览器中打开链接, 右键查看网页源代码, 搜索
var biz
, 可以搜到var biz = ""||"MzI1NTQxODA4NA==";
, 那么MzI1NTQxODA4NA==
也就是需要的 bizid
完全不敢保证, 抱歉 (项目的特殊性决定了一切说绝对稳定的都是过度自信)
暂定两个小时一次
发现太频繁了抓取到的信息达不到预期, 改为七个时间点:
01,07,11,13,16,20,23
如果有更好的时间点设计欢迎 issue 告诉我, 因为凌晨这段时间推送的更新很少, 抓取有点浪费
鉴于账号限制, 暂时只打算提供10000个公众号的服务, 每个 feed 至多只保留20篇
feeds 托管在 github 上, 我无法获取订阅这些 feeds 的用户的任何信息
2020/10/5: 在列表页新增了 GA, 只是为了统计一下列表页的使用情况, 如有介意, 可以使用 list.csv 代替列表页.
真实: 全部是我一条一条定时手动抄录的, 一个小时最多抄录两万个公众号的内容.
首先确保你的输入法切换到半角符号状态
-
如果内容中有半角双引号, 需要在每个半角双引号前面再加一个半角双引号来转义, 然后将内容用一对半角双引号包起来:
假设需要转义的内容为:
它说:"你好"
则改为:
"它说:""你好"""
-
如果内容中有半角逗号, 将内容用一对半角双引号包起来:
假设需要转义的内容为:
你好,世界
则改为:
"你好,世界"
-
如果内容中有换行, 要将整个内容都用一对半角双引号包起来:
不建议包含换行
假设需要转义的内容为:
它说:"你好世界" 它说:"知道了"
则改为:
"它说:""你好世界"" 它说:""知道了"""
参见 issue 390
我看了下这个公众号,它每天推送时间都是上午8:30,所以我猜测它是定时发布的,而 feeds 中显示的时间就是微信服务器收到这篇文章的时间。
比如 这一篇 , 8:30 对应的 1607733000 在它的网页源码中可以看到,所以其实这和抓取全文可能是同一个范畴的问题
主分支 main
:
- list.csv: 由
name
,bizid
,description
组成的无序公众号列表
分支 feeds
储存更新的 feeds
分支 pages
是列表页的源码, 部署在 github pages 上, 其中的 VERSION 文件会随着 feeds 分支 自动更新.
- 同步 gitee 提升访问体验
- 根据 list.csv 生成列表页, 通过 pages 展示 (感谢 Treblex 的 Treblex/wechat-feeds-page, 感谢 shulandmimi)
- 给 pr 和 commit 添加自动 checks
- 给 issue 添加 actions, 来自动获取 bizid 等
- 兼容迁移公众号/自动移除已屏蔽公众号
- 列表页性能提升, 一次性加载性能压力太大
- 考虑添加更多可供列表页搜索/过滤的属性, 例如微信号、 TAG 等
- 思考更简单的添加公众号的方式, 前提是继续控制成本
- 思考如何用低成本实现添加全文(格式处理/IP限制/静态资源限制等问题有点麻烦, 成本很难控制)
- 考虑 feeds 分支使用 force push, 以避免触及仓库容量预警上限
本项目使用完全免费. 但有一定的维护成本, 故此处开放捐赠, 但不对捐赠者做任何关于本项目的额外的承诺, 亦不会在项目中主动公开捐赠者信息.