前言

随着时间线的推移,我们在 GitHub 上 Star 的项目越来越多,尽管 GitHub 现在提供了 Star List,但是实际管理起来还是不太方便,最近逛 v2ex 发现了 一个使用 Notion 自动管理 GitHub Star 的 repo 小工具(via GitHub Actions)

与 Notion 应用集成,将 Star 的项目导入到 Notion Database,支持自动打标签并且可以使用 GitHub Actions 定时自动更新,平时管理和查找起来更方便了,这里记录下部署过程 😛

Fork 项目存储库

该项目源代码开源在 GitHub,访问 项目地址,并 Fork 一份到你的 GitHub 账户,稍等片刻即可完成

Fork Repo

复制 Notion 模板

访问作者的 Notion Template,点击右上角 Duplicate 将 Notion 模板复制到你的工作区(WorkSpace)

Duplicate Template

获取所需 Secrets

接下来需要三个必须的 Secrets:

  • NOTION_DATABASE_ID Notion 数据库 ID(Star 管理页面的数据库)
  • NOTION_API_KEY Notion Integration Token(Notion 集成应用 API Token)
  • TOKEN_OF_GITHUB GitHub Personal Access Token

获取 NOTION_DATABASE_ID

点击刚才 Duplicate 模板的 My Starred Repo Database 数据库,查看浏览器地址栏,这时候在用户名 username?v 之前的一段字符串就是目标 NOTION_DATABASE_ID,复制保存备用

Get DatebaseID

获取 NOTION_API_KEY

进入 Notion - My integrations 创建一个新的集成应用,Integration type 选择 Internal Integration

Get API KEY

集成应用名称和图标自己定义,然后 Capabilities 按照下图选择即可

Get API Secret

完成后点击 Submit 提交后会出现 Internal Integration Token 点击 Show 显示 Secrets 复制备用,即所需的 NOTION_API_KEY

Copy API KEY

完成后下滑到页面底部点击 Save chages 保存

获取 TOKEN_OF_GITHUB

在 GitHub 生成新的 Personal access token,不需要任何权限,有效期是 No expiration (永不过期)

Get GitHub Token

点击 Generate token 后,将 Token 值复制保留备用,这就是所需的 TOKEN_OF_GITHUB

添加 Environments Secrets

将上面获取的 Secrets 及值分别添加进 Fork 下来存储库的 Environments 下的 notion-sync

Add Secrets

Notion 启用 Integration

进入目标 Notion Database 后,点击右上角 Share 按钮,选择刚才创建的 Integration 点击 Invite 即可

Enable Integration

启用 GitHub Actions

切换到 Fork 的 GitHub 存储库 Actions 栏,点击 I understand my workflows, go ahead and enable them 启用 GitHub Actions

FullSync Notion Star

全量更新 Actions,默认设置是限制 2000 个 Star 项目。可以修改 workflowsfull-sync.yml 文件的 ULLSYNC_LIMIT 参数,比如允许数量限制为 3000

FULLSYNC_LIMIT: 3000

Partial Sync Notion Star

增量更新 Actions,如果启用默认是每 2 个小时运行一次。可以修改 workflowspartial-sync.yml 文件的 cron 表达式,比如我只需要每 6 个小时运行一次增量更新

# /blob/main/.github/workflows/partial-sync.yml
on:
  schedule:
    - cron: '0 */6 * * *'

你可以根据自己需求启用或修改里面的两个 Actions 项目

最终效果

Actions 运行完成后,可以看到 Notion Database 已经有了 Star 项目的表了,可以更方便的进行管理和查找了 😋

Final Preview