如何建立个人知识库

劝退指南

本片文章不会涵盖所有平台的解决方案,或者一些基础内容如何使用的介绍,因此如果下方列出的问题,你无法独立解决或者无法接受,那么本片文章很有可能不适合你

  1. 因网络问题无法安装 Obsidian 插件,或者其他服务无法打开的情况
  2. 部分流程中需要额外付费
  3. 希望 All in one,无法/不愿意 尝试多方案整合
  4. 本片文章均以苹果生态下的设备做展示,因此部分功能其他平台很可能无法使用(需自行寻找替代),比如跨设备同步方案 iCloud

前期准备

再开始之前,先介绍一下整个方案需要用到的所有内容

名称 价格 是否必须
Tophub 终身 169
教育邮箱 点击链接自行挑选
Readwise 8$/月,教育优惠 50%
Obsidian 免费
iCloud 点击链接查看
外区苹果账号 免费
github 账号 免费
vercel 账号 免费
个人域名 域名提供商查询

教育邮箱用途非常广泛,Readwise 使用教育优惠后,每年只需要 200¥,还是比较划算的。这里的外区苹果账号主要是为了在手机使用 App 浏览 Tophub 的内容(国区被下架了)

Readwise 最近要发布 Reader 的正式版,后面订阅价格会提升,所以使用教育优惠年付是比较明智的方案

成品效果可以阅读 个人 Obsidian 文档访问指南 配置好后,即可访问我的 Obsidian 服务

目标 & 背景

在去年早些时候,我从 Obsidian 专向使用 Heptabase 已经有一年多了,当时因为没有找到合适的 Obsidian self host 分享方案,再加上当时 Obsidian 也没有 Canvas 功能,所以全面转向了 Heptabase

然而近期偶然发现 digitalgarden 可以用一个非常低的成本完成分享的内容,因而萌生了重新捡起 Obsidian 的想法,更主要的原因是,自从开始使用 Heptabase 后,我记笔记的习惯逐渐减少了,我自己分析时得到了如下结论

白板的表现形式看起来非常出色,实际在我部分文章中配合 Heptabase 解释一些复杂关系时,表现非常好,但是这套流程对我个人来说却有一个致命问题

当我创建一个白板时,就需要想好这个白板的主题是什么,但是日常的笔记往往没有主题,而是一些碎知识,分布在各处。当这些碎知识积累到一定程度时,在某一天突然灵光一现,再使用白板将他们串起来

所以 Heptabase 的流程和我日常思维正好反了过来,这个问题的出现个人因素比较大,很可能在你身上并不会出现

这段时间我一直在思考如何规划自己的个人知识库,最终符合我想要的最终方案应当包含如下内容

  • 信息搜集,需要信息来找我,而不是刻意搜索
  • 阅读、批注
    • 最好能解决视频的笔记问题
  • 本地存档,跨设备同步
  • 可以分享到 web 上,供其他人参考
  • 所有功能可以在手机和电脑上操作,满足我个人不同场景的使用需求

在这套流程下,日常就变成了 Tophub 检索今天的新文章,找到合适的丢给 Readwise,接着在 Readwise 中标记、总结,然后同步到 Obsidian,最后使用 digitalgarden 发布到 vecel 免费的服务器上

为什么需要建立个人知识库

在 ChatGPT 发布后的这段时间,AI 的进步速度已经完全超出我的理解范围了,可能今天还需要人力参与的重复性劳动,明天就会被 AI 的新功能 cover 掉了,我个人认为,未来终身学习的比重会越来越重,因此个人知识库就会变得非常重要

或许未来有一天,每个人都可以训练专属自己的 AI 助手,而训练的资料或许就可以从这份知识库中检索

此外,作为程序员,养成解决具体问题时记笔记的习惯,对个人提升是非常大的。就我个人而言,我并不希望已经解决过一次的问题,第二次碰见时还需要从头踩坑。而且在我们项目组对新人转正要求中,也有一条记笔记写文档的习惯

信息搜集

这里需要理解为什么选 Tophub 作为这个环节的解决方案,而不是在 Readwise 中直接订阅 rss feed。首先大部分人并不清楚信息源到底有多少,以及国内病态的 信息孤岛 问题,导致很多平台的文章并没有有效的聚合方案(尤其是微信公众号!),多多少少需要手动完成一些信息的获取

远爸 的 Tophub 很好的解决了这个需求,我可以用一个非常小的成本,完成全平台的信息聚合检索,这里有很多我之前没有了解到的优秀站点,这样就完成了信息来找我们这件事

当前订阅的部分文章截图

除此之外,你还可以自定义关键字,当文章/标题出现这些关键字时,就会出现在追踪器里,比如下图的内容就是出现 UnityC# 或者是 dotnet 关键字的文章

文章/视频 阅读、批注

这件事情的终极解决方案就是 Readwise,我也是最近才接触到这个工具,实在是有些相见恨晚。但是在这几天的折腾过程中,我首先尝试的是 简悦 这个工具,过程实在是曲折

简悦这套流程结合 Obsidian 时,需要配置 3 份工具,浏览器插件、客户端同步插件、Obsidian 插件,最后找到了 B站 zhihu的一只小胖子 的视频才最终配合

简悦本身提供的功能也非常强大,价格也很便宜。但是对于我个人来说,尤其是配置过程,就像当年面对索尼一百多个按钮的遥控器一样,至今我也只使用了遥控器上的换台、关机和加减音量的功能

但是 简悦 在手机端的流程旧断了,虽然借助 JSBox 可以一定程度上完成部分工作,但是最关键的导入至 Obsidian 却没了,比较遗憾

除此之外,在我日常记录的过程中,视频也是比较重要的一环,这里就不得不夸一下 Readwise 结合 GPT 对 Youtobe 视频的支持,我愿称为最强解决方案!

虽然 Readwise 支持油管的视频笔记,但平时 B 站的视频也占了我日常比较大的比重,目前并没有得到有效的支持,这点也比较遗憾,但是仍然有其他解决方案,具体可以参考
Nicole van der Hoeven
的这个视频,目前我还没想好 B 站的视频笔记方案要怎么选

如果是在电脑端,可以安装 Readwise 的浏览器插件,点一下即可完成文章的剪藏

如果需要在手机上将文章导入给 Reader 可以点分享按钮,然后选择 Reader。如果你手机上没有 Reader 的选项,可以向后划到最后,选择更多,接着自己调整顺序就好了

-w300

Obsidian 配置

Obsidian 的配置也很简单,这里给出我目前使用到的所有插件的截图。配合 Readwise 只需要安装 Readwise Official 插件即可,第一次配置时,需要登录,授权一下就好了~

免费账户只有 10次 转存的机会,所以如果希望保存到 Obsidian 中,付费是必须的

由于 Readwise 提供的默认模板我个人不是很喜欢,所以这里需要点 Customize 按钮,定制 Readwise 同步时的格式

下图为 Readwise 导出时的最终效果参考

  1. 首先我们需要移除 Page title 中的所有内容
  2. 修改 Page metadata
---
Arthur: {{author}}
Tags: Readwise, Readwise/{{category}}
url: {{url}}
CreateDate: {{date}}
dg-home: false
dg-publish: true
---

> [!md] 元数据
> **作者**: {% if author %}{{author}}{% endif %}
> **标题**: {{full_title}}
{% if document_note -%}
> **笔记**: {{document_note}}
{% endif -%}
{% if document_tags -%}
> **分类**: {% for tag in document_tags %}#{{tag}} {% endfor %}
{% endif -%}
{% if url -%}
> **地址**: {{url}}
{% endif -%}
  1. 修改 Highlights header
{% if is_new_page %}
## 笔记
{% elif has_new_highlights -%}
## 添加时间: {{date|date('F j, Y')}} at {{time}}
{% endif -%}
  1. 修改 Hightlight,注意最后有一个空行
> [!NOTE] {% if highlight_location and highlight_location_url %}{{highlight_text}} [跳转]({{highlight_location_url}}){% elif highlight_location %} ({{highlight_location}}){{highlight_text}}{% endif %}{% if highlight_tags %}
> 分类: {% for tag in highlight_tags %}#{{tag}} {% endfor %}{% endif %}{% if highlight_note %}
> {{ highlight_note }}{% endif %}

Readwise 贴心的提供了一个 preview 窗口,这个功能太赞了!最终你会在这里看到类似下图的格式

发布配置

首先需要在 Obsidian 中安装 Digital Garden 插件,先按照下图配置好 git 仓库,这里我的仓库名为 Obsidian-Publish,token 需要点击插件中 here 根据引导一步步获取,最后的 Base URL 这个就是个人域名的作用了,如果没有的话,可以先填空,然后去 vercel 复制

接着我们需要在 github 上创建 Obsidian-Publish 仓库,这里建议创建一个 private 的私有仓库,免去一些麻烦。接着运行下方指令,注意替换你的地址

git clone https://github.com/oleeskild/digitalgarden Obsidian-Publish
cd Obsidian-Publish
rm -rf .git
git init .
git add .
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:你github 名称/Obsidian-Publish.git
git push -u origin main

接着回到 github 创建的仓库,刷新页面后,README 中会有一个 Deploy 按钮,这个就是 vercel 的打开链接,点击按钮跟着步骤一步步创建即可

vercel 的自动化做的非常省心,部署好了基本上再也不用管了

当 vercel 第一次构建结束后,你旧可以看到 vercel 替你生成的网站链接了,如果你没有自己的域名,用这个也是可以的,如果有域名的话,此时需要配置域名的 cname 解析,首先我们来到 vercel 配置 Domains

这里是最终结果,第一次配置时界面可能跟这里不太一样,会有一个 cname 的 dns 服务器地址,先复制下来

然后我们来到域名的后台,我的域名是在阿里买的,下面为阿里环境的截图,注意区分两个域名填写的内容是不一样的,vercel 需要填写全部内容,而域名后台只需要填写二级域名

接着在 Obsidian 的 Menu 中点击下图的按钮,会弹出 Digital Garden 发布的菜单

按需要点击不同按钮,点击时,每个文件的变化都会创建一条 git commmit,而每次 commit 都会触发 vecel 的构建,所以后面只需在这个界面发布就好了~ 剩下的可以完全交给自动化

由于这套解决方案,静态资源是存放在 cdn.jsdelivr.net 这个域名的 cdn 上,而刚好这个域名国内无法访问,记得配置代理时增加这个域名的解析,否则就会出现网页打开速度特别慢的问题

最后

这样整套个人知识库的搭建流程就介绍完毕了,对我来说,弄知识库也好,写博客也好,最重要的出发点是 教学分享,如果你自己的流程不希望有分享的环节也无妨~

未来 AI 的能力会越来越强,现在一个完全不懂美术的程序,借助 AI 的绘画能力,也可以独立完成一部分专业美术的工作。以后这种能力交换的例子会越来越多,希望借助这套流程,未来的某一天现有技能被 AI 取代时,不至于那么狼狈