为了用 notion 写博客,我造了一个轮子🌈

2019-06-03 22:39:29 +08:00
 mayne95

从今年 1 月份开始造轮子,经过断断续续几个月的改进,现在感觉可以拿出来玩了。

概要

效果: https://gine.me/page/1

github: https://github.com/mayneyao/gine-blog

挖坑详情: https://gine.me/posts/54fc4aaa38434d92afddf5d4b75b76b0

使用文档: https://gine.me/posts/a788c3e6713e4166a4a8c72a7977b457

用到的技术栈:React + Gatsby + GraphQL + Material-UI

用到的服务:Notion + Netlify + Github

全是第三方服务,代码甚至不用走本地,没啥使用负担。用到的服务都提供 API,数据均可导出。 至此为止似乎圆满了,终于可以好好写博客了😂( flag+1 )

8902 次点击
所在节点    分享创造
26 条回复
xmsz
2019-06-23 18:43:08 +08:00
还是有点太绕了,相当于还是 (模拟)抓取数据 => 处理数据结构 => 自己渲染。和 github 上现有的实现一样,这三个环节都很占用时间。
现在的方法里,最懒的方式就是直接导出 Html ( Notion 已经支持,同时还支持子页面),所以只有 hook 一下去导出 =》 解压 =》 就行
但,这也有点操作成本
mayne95
2019-06-23 21:40:03 +08:00
@xmsz

并不是三个环节都占用时间

1. 文章的结构化数据,是通过 notion 的 api 获取的。表格 > json,这里就是一个请求的事情。
2. 文章的主体内容是 通过 puppeteer 抓取的,这里是最耗时的部分,所以加了缓存机制。因为已经发布的文章更新频率很低, 将 puppeteer 抓取的 html 和更新时间放在 github 的仓库中。如果下次更新时,这篇文章没有变动,就会自动从 github 获取文章主体内容,这样可以提高 build 速度。
3. 渲染部分。得益于 gatsby 的优化,这部分花费的时间很少。

目前 30 篇文章,build 时长在 2 分钟左右。下面是某次 build 中的 部分 log


3:51:27 AM: Build ready to start
3:52:03 AM: >>>开始同步文章:gine-blog 使用文档 from notion
3:52:16 AM: >>>gine-blog 使用文档 更新到 github 成功
3:52:22 AM: success source and transform nodes — 24.565 s
3:52:58 AM: Site is live

完整的 log 可以在这里查看: https://app.netlify.com/sites/gine/deploys/5d054c3e0c5086000810d51b

通过 puppeteer 抓取新文章内容,1 篇 /15s
从 github 缓存中获取的文章,是 4 篇 /1s

即使是高产似母猪地每个月更新 4 篇文章,坚持写 10 年 blog。在后续新增文章的 build 中,获取文章内容部分的耗时约为: 4*12*10/4 + 15 = 125s。总共的 build 时间约为 5 分钟。

按照我目前的构思,支撑起前期写 blog 的工作因该没什么问题。最开始也尝试了导出 markdown,build 再推送的做法。无奈这些都不符合我的使用需求。我想的是尽可能自动化的完成这些操作,现在的实现基本符合我的需求。

文档和帖子都没说清楚,这里详细解释以下。也欢迎大家交流实现思路。
xmsz
2019-06-24 20:51:56 +08:00
@mayne95 行吧~ 年轻还是可以多折腾一下
zengguanzhong
2020-06-27 11:18:09 +08:00
按照文档使用 Netlify 部署站点失败了。希望楼主康康怎么回事!已将具体信息发送至您 github 所留邮箱。
@mayne95
EGOISTK21
2020-06-30 20:26:38 +08:00
@zengguanzhong 我也回到 v2 来考古了
@mayne95 请查看最新的[issue]( https://github.com/mayneyao/gatsby-starter-gine-blog/issues/9)
dalaomai
2021-07-15 14:58:46 +08:00
notion 的官方 api 出来了,大佬还会更新么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/570538

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX