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