前言
- notion-rss开源啦!https://github.com/cn-kali-team/notion-rss
- 上次视频本来想在最后展示安全资讯信息流页面的,但是那个时候还没完全写好,只是写了一个测试的,完成了基本功能,经过周六一天的完善,终于把英文的文档翻译出来了,现在来写中文的。
- 本文将会讲述怎么使用https://github.com/emo-cat/notion-rs,编写rss订阅器,将最新文章通过api推送到notion,并且设计datebase属性完成简单过滤运算,兼容RssHub 浏览器插件添加订阅源。
为什么开发这个工具
- 本地客户端没有同步功能,或者得加钱
- 自建需要服务器
- 现在已经有类似的产品,但是闭源而且扩展性不高,没有我想要的功能。
Features
- 可以在notion管理订阅源,和订阅文章,只要关键的database属性不改,随便按照自己想法改。
- 支持订阅开关,是否开启代理,爬取状态和设置分类标签
- 支持自定义爬取频率,使用表达式云端计算是否应该爬取
- 自动设置icon图标和网页标题
- 可选删除过期文章
- 支持后台服务启动,兼容RssHub浏览器插件。
获取Notion的Token

- 点击新建一个Token,当然你也可以选一个已经创建的集成App。

- 控制集成的权限,给予读写更新权限,用户信息可以点不给也可以。

这个模板的原理
- 主要组成页面,一个是管理订阅源的source数据库页面,一个是展示爬过来的文章标题和链接。


属性 |
描述 |
Title |
订阅源的标题,如果没有会在下次更新中爬取页面的标题 |
Link |
订阅链接 |
Enabled |
是否开启爬取,勾选上为开启,作为过滤条件,工具只会获取勾选上的订阅 |
Proxy |
是否使用代理,如果本机网络不通,可以在启动程序的时候指定 --proxy参数,支持http和socks |
Status |
状态:Pinding,Done,Error三种,分别为正在爬取,已经完成爬取,爬取错误(在Log中展示) |
Type |
分类:可以自己改 |
Last Update |
最后更新时间,爬取完成后会更新为当前时间,用于和Hour,现在时间相比较,计算Skip |
Hour |
爬取时间间隔,单位小时,空为没有间隔,取决与程序的执行频率 |
Skip |
是否跳过当次爬取,算法为:当前时间和最后更新时间大于等于Hour,就为假,即离上次更新时间超过了时间间隔,不跳过,需要更新。 |
Log |
当爬取出现错误时,展示错误信息。 |
ForeignKey |
都叫外键,和文章的关联关系 |

属性 |
描述 |
Title |
文章的标题 |
Link |
文章链接 |
Description |
描述 |
Published Time |
是这篇文章的发布文章 |
Last Update |
最后更新时间,爬取完成后会更新为当前时间 |
Read |
已读标志 |
Today |
是否为今天发布的文章 |
SourceTags |
订阅源的分类 |
Tags |
文章自己的分类 |
ForeignKey |
都叫外键,和订阅源的关联关系 |
复制模板

- 邀请你刚刚创建的集成应用进来,让它可以对这个页面进行更新,两个页面都要邀请进来,确保archive-id和source-id这两个页面机器人是有权限修改的,不然有可能出现可以读取到订阅源,但是不能添加文章的情况。

获取archive-id和source-id

<https://www.notion.so/kali-team/8a49af585aa844208ee085b3814e1a0d?v=119572bf5bc3420f9e5b1a9f0b5af0fb>
<https://www.notion.so/{database_id}?v={view_id}>
- 得到source-id就是
8a49af585aa844208ee085b3814e1a0d
,同理的到archive-id为e8f7df1fe33242a88adad7bdd793cd1e
。

安装程序
- 根据自己的操作系统下载https://github.com/cn-kali-team/notion-rss/releases 可执行程序。

- 指定你的Token和source-id和archive-id就可以执行更新订阅了,当然前提你source有开启有效的订阅源。
➜ ~ ./notion-rss --notion-token secret_LdYDUloP20Xnfjrc06v6jWNJ0q8Tx6RIkHqjuehckGC --source-id 8a49af585aa844208ee085b3814e1a0d --archive-id e8f7df1fe33242a88adad7bdd793cd1e
███╗ ██╗ ██████╗ ████████╗██╗ ██████╗ ███╗ ██╗ ██████╗ ███████╗███████╗
████╗ ██║██╔═══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║ ██╔══██╗██╔════╝██╔════╝
██╔██╗ ██║██║ ██║ ██║ ██║██║ ██║██╔██╗ ██║█████╗██████╔╝███████╗███████╗
██║╚██╗██║██║ ██║ ██║ ██║██║ ██║██║╚██╗██║╚════╝██╔══██╗╚════██║╚════██║
██║ ╚████║╚██████╔╝ ██║ ██║╚██████╔╝██║ ╚████║ ██║ ██║███████║███████║
╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚══════╝╚══════╝
Build your own RSS Feeds in Notion.
________________________________________________
: <https://github.com/cn-kali-team/notion-rss> :
: <https://blog.kali-team.cn/donate> :
-----------------------------------------------
Update configuration file to "/home/kali-team/.config/notion-rss/config.yaml"
Complete all updates.

从文件添加订阅源
- 现在我有一个列表文件,每行是一个订阅源。可以使用
--file
,参数指定这个文件的路径,会将订阅源添加到source的数据库里。
➜ ~ ./notion-rss --notion-token secret_LdYDUloP20Xnfjrc06v6jWNJ0q8Tx6RIkHqjuehckGC --source-id 8a49af585aa844208ee085b3814e1a0d --archive-id e8f7df1fe33242a88adad7bdd793cd1e
--file feed.txt
███╗ ██╗ ██████╗ ████████╗██╗ ██████╗ ███╗ ██╗ ██████╗ ███████╗███████╗
████╗ ██║██╔═══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║ ██╔══██╗██╔════╝██╔════╝
██╔██╗ ██║██║ ██║ ██║ ██║██║ ██║██╔██╗ ██║█████╗██████╔╝███████╗███████╗
██║╚██╗██║██║ ██║ ██║ ██║██║ ██║██║╚██╗██║╚════╝██╔══██╗╚════██║╚════██║
██║ ╚████║╚██████╔╝ ██║ ██║╚██████╔╝██║ ╚████║ ██║ ██║███████║███████║
╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚══════╝╚══════╝
Build your own RSS Feeds in Notion.
________________________________________________
: <https://github.com/cn-kali-team/notion-rss> :
: <https://blog.kali-team.cn/donate> :
-----------------------------------------------
Update configuration file to "/home/kali-team/.config/notion-rss/config.yaml"
Submitted Successfully: <https://blog.kali-team.cn/index.xml>.
Update succeeded: [Title:Kali-Team] [Link:Some("<https://blog.kali-team.cn/index.xml>")] [Status:Done]
➜ ~ cat feed.txt
<https://blog.kali-team.cn/index.xml>

- 可以看到订阅源已经添加到了sorce数据库里,现在可以对新添加的订阅源添加标签和更新频率设置。
开启服务
- 指定
--api-server
,参数为IP端口,会在本地开启一个Web服务,为了防止CSRF攻击,还要设置一个--token
,这个是你的路由,如果你要使用RssHub浏览器插件添加订阅源的时候可以将这个链接添加到支持列表中的任意一个。
➜ ~ ./notion-rss --notion-token secret_LdYDUloP20Xnfjrc06v6jWNJ0q8Tx6RIkHqjuehckGC --source-id 8a49af585aa844208ee085b3814e1a0d --archive-id e8f7df1fe33242a88adad7bdd793cd1e --api-server 127.0.0.1:8080 --token 21a2b7047d4de8076de462724daf8f8f
███╗ ██╗ ██████╗ ████████╗██╗ ██████╗ ███╗ ██╗ ██████╗ ███████╗███████╗
████╗ ██║██╔═══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║ ██╔══██╗██╔════╝██╔════╝
██╔██╗ ██║██║ ██║ ██║ ██║██║ ██║██╔██╗ ██║█████╗██████╔╝███████╗███████╗
██║╚██╗██║██║ ██║ ██║ ██║██║ ██║██║╚██╗██║╚════╝██╔══██╗╚════██║╚════██║
██║ ╚████║╚██████╔╝ ██║ ██║╚██████╔╝██║ ╚████║ ██║ ██║███████║███████║
╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚══════╝╚══════╝
Build your own RSS Feeds in Notion.
________________________________________________
: <https://github.com/cn-kali-team/notion-rss> :
: <https://blog.kali-team.cn/donate> :
-----------------------------------------------
Update configuration file to "/home/kali-team/.config/notion-rss/config.yaml"
Copy the URL to your RssHub browser plug-in configuration
Configure any of the following
[Tiny Tiny RSS, Miniflux, FreshRSS, Nextcloud News, InoReader, FeedBin]
API service has been started: <http://127.0.0.1:8080/21a2b7047d4de8076de462724daf8f8f/>
Update succeeded: [Title:Kali-Team] [Link:Some("<https://blog.kali-team.cn/index.xml>")] [Status:Done]
兼容RssHub
- 打开RssHub的订阅设置,开启
Tiny Tiny RSS
,把上面的URL复制进去。

- 当该网站有订阅源的时候,可以点击RssHub图标,点击订阅到TTRSS,如果添加成功会弹出一个5秒后关闭的提示页面。

- 如果订阅源已经存在会提示已经添加过了,不会重复添加,成功添加后会进行一次更新。

- 还试了一下ChatGPT,帮我写了个前端,哈哈哈。

Window用户
- 注意单次执行的定时任务,不能开启Web服务,否则Web不会关闭会一直在运行,如果开启Web服务请确保只运行一次。

- 下次只用执行
--config default
,就可以读取配置文件更新了。
C:\\>notion-rss.exe --config default
参考
https://github.com/cn-kali-team/notion-rss