
从今年 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 )
访问:https://app.netlify.com/start/deploy?repository=https://github.com/mayneyao/gine-blog 按照提示,一路下一步即可(使用 github 授权登录 netlify)。部署完成后,github 帐号下会多出一个代码仓库。
clone 文章表格模板 到自己的 notion 中。
在 github 上修改 config.js ,将 blog.url 修改为自己的 notion 表格地址。提交后 netlify 会自动更新(重新构建博客)
完成上述步骤后,博客就搭建起来了。接下来具体的细节优化,可以参考文档操作。
1 nosky 2019-06-03 22:48:10 +08:00 via Android 用 notion 做数据源真的是不错的想法, |
3 creedowl 2019-06-03 23:01:17 +08:00 via Android notion 对 md 支持奇奇怪怪的一直劝退。。 |
4 mayne95 OP @creedowl 可能 notion 觉得自家的 block 比 md 更厉害,不屑于兼容 md。到现在 md 导出都是怪怪的,gfm 支持都提了好久了,也不跟进 |
5 xieweizhi007 2019-06-04 00:27:34 +08:00 via Android 还能这么玩,赞一个 |
6 adamwang 2019-06-04 10:10:07 +08:00 关注一波。 |
7 tozp 2019-06-04 10:41:42 +08:00 懒得折腾了,还是 Hugo 好用。 |
8 aWoo 2019-06-04 13:37:24 +08:00 你这操作太 6 了,搬到到 12i.cn/notion 社群中给小伙伴们分享下 |
9 blessu   2019-06-04 13:38:26 +08:00 rss 订了 |
10 xiaoluoboding 2019-06-04 20:36:14 +08:00 666,支持个 |
11 mayne95 OP 好多收藏,谢谢大家的支持。因为文档写的太烂了,大家在部署过程中有啥问题的话,欢迎提 issues。 |
12 flavoury 2019-06-05 10:59:29 +08:00 等楼主更新,更“懒人”一点我也部署上去哈哈哈 |
13 flavoury 2019-06-05 11:00:16 +08:00 另外楼主注意身体哦,我现在定下目标每天都跑步~还是要注意身体,身体是本钱 |
14 sidkang 2019-06-05 14:14:23 +08:00 已点赞,楼主厉害了,我最近也在研究怎么样能利用 notion api 来实现一定程度的自动化,学习一波。 |
15 wolfie 2019-06-05 15:31:21 +08:00 『终于可以好好写博客了( flag+1 )』 上次见过一次用 Notion 写博客的。 |
18 sama666 2019-06-07 05:40:44 +08:00 via Android 今天试试,有问题再问 |
19 zdb1115 2019-06-07 09:22:31 +08:00 via Android 身体最重要, |
21 xmsz 2019-06-23 18:43:08 +08:00 还是有点太绕了,相当于还是 (模拟)抓取数据 => 处理数据结构 => 自己渲染。和 github 上现有的实现一样,这三个环节都很占用时间。 现在的方法里,最懒的方式就是直接导出 Html ( Notion 已经支持,同时还支持子页面),所以只有 hook 一下去导出 =》 解压 =》 就行 但,这也有点操作成本 |
22 mayne95 OP @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 再推送的做法。无奈这些都不符合我的使用需求。我想的是尽可能自动化的完成这些操作,现在的实现基本符合我的需求。 文档和帖子都没说清楚,这里详细解释以下。也欢迎大家交流实现思路。 |
24 zengguanzhong 2020-06-27 11:18:09 +08:00 按照文档使用 Netlify 部署站点失败了。希望楼主康康怎么回事!已将具体信息发送至您 github 所留邮箱。 @mayne95 |
25 EGOISTK21 2020-06-30 20:26:38 +08:00 @zengguanzhong 我也回到 v2 来考古了 @mayne95 请查看最新的[issue]( https://github.com/mayneyao/gatsby-starter-gine-blog/issues/9) |
26 dalaomai 2021-07-15 14:58:46 +08:00 notion 的官方 api 出来了,大佬还会更新么 |