Notion → Markdown → Blog

自己使用 Notion 进行内容的记录与存储,但也需要将 Notion 中指定的内容发布到网络中。我需要一种解决方案以实现:

  1. Notion 中创建一个 Database;
  2. 每一个 Item 有 Target、Tags、Visibility、Status 和 CreatedAt 字段;
  3. 有一个 GitHub Action 每天/每小时定时运行:https://github.com/juzhiyuan/notion-contents
    1. 调用 Notion API 以获取该 Database 下所有记录;
    2. 将这些记录转换为 Markdown 并存储到 Git 以备份内容;
    3. 触发 Action 从 Markdown 构建静态站点,分别推送到国内、海外 CDN 上;
  4. 这样就能实现只需要维护 Notion 就可以发布内容了。

image

问题

  1. Notion 上删除某内容后,如何删除 Git 上的内容?
    1. 发布到 博客 和 Blog 的 Action 不会存储原始内容到 Git,每次都会全量拉取数据、并构建站点,暂不需要考虑如何同步删除 Git 中的内容;
  2. 每次都需要全量从 Notion 获取数据吗?
    1. 当前是的,因为内容并不多;
  3. Action 运行失败了,如何通知我?
    1. 🤔 不着急,先不管它。
  4. 如何处理 Notion 特定 S3 链接?因为它有时会更换,需要持久化。
    1. 做一个 S3 持久化服务?或在 CI 中上传到 S3?但是会产生很多重复文件?
    2. 先每 1 小时运行一遍 CI?对国内的访问不利;
      1. Notion 把 File URL 都进行了签名,每小时过期一次,就每小时更新下 CI 吧。
        1. 后续可以根据 URL without Query - 进行反向代理、缓存。
  5. Notion 作为唯一的数据源,如何备份 Notion 数据?
    1. https://github.com/juzhiyuan/notion-backup

TODO

  • 从 Notion API 获取数据并转换为 Markdown
  • Action - 构建、推送到 R2
  • Action - 构建、推送到 腾讯云 COS
  • 更新 Resume
  • 更新 Google Analytics
  • 认证 Google 爬虫认证、百度站长认证等
  • 解决 GA 未显示问题
  • 对应设置网站语言,区分中文与英文,SEO
  • 周六日、周一到周五

其它