从 Notion 到 Obsidian:我当前的笔记 Setup
用了几年 Notion,功能上没什么不满,但总有些地方让我别扭。
一个是数据归属的问题。笔记存在 Notion 的服务器上,想导出试试就知道有多麻烦——格式乱、图片链接失效、文件夹结构丢失。我开始认同一个理念:文件优先于应用。笔记就该是一堆 markdown 文件,Finder 里能直接看到,换个编辑器也能打开。Obsidian 正好满足这点,所有内容就是一个普通文件夹。
另一个是移动端的体验。Notion 手机 App 启动太慢了,有时候走在路上突然想记点什么,打开 App 等它加载,总是会白屏一会儿,等着等着念头就跑了。后来我干脆用 Apple Notes 先记,回头再搬到 Notion——这已经违背了笔记软件的初衷。Obsidian 移动端打开很快,随手就能写,这个体验差距一旦感受到就回不去了。
再加上 Obsidian 插件生态丰富、界面清爽,试用一段时间后就彻底迁移了。
文件组织
我的文件组织方式参考了 Steph Ango(Obsidian CEO)的个人库结构,核心思路是「扁平化 + frontmatter 分类」。
他的理念是避免文件夹嵌套,不想承担「这篇笔记该放哪个文件夹」的心智负担。写完就扔在根目录,分类交给 frontmatter 元数据,需要找的时候靠搜索。我基本沿用了这个思路,做了一点调整。
大部分笔记直接放在库的根目录。几个功能性文件夹各司其职:
Templates放模板Clippings放浏览器插件一键保存的文章Attachments放图片和附件References放「外部世界」的东西——书籍、电影、地点、人物,这些不是我写的内容,是我对外部事物的记录Categories放分类索引文件,每个分类一篇,里面嵌入对应的 Base 视图01 Journal放日记/随记,数字前缀让它排在文件列表最前面,方便点击
Steph Ango 的做法是为每种内容类型建立模板:Book Template、Movie Template、Place Template……新建笔记时选对应模板,frontmatter 自动填好该有的字段。我也照做了,而且越拆越细,现在有博客文章、剪藏、日记、电影、书籍、人物、公司、播客、项目、股票交易、旅行等二十多个模板。这样做的好处是以后用 Bases 查询时字段是统一的,不会漏填。

Categories 文件夹里放着一批「分类索引」文件,比如 书籍.md、电影.md、博客.md,每篇里面嵌入对应的 Base 视图,点进去就能看到这个分类下的所有笔记。相当于 Notion 里一个 Database 页面的入口。一开始这些索引散在根目录,后来统一收进 Categories,根目录清爽不少。
分类不靠文件夹路径,靠 frontmatter 里的 categories、tags、status 这些字段。比如一篇博客文章的 frontmatter 长这样:
categories:
- "博客"
tags:
- blog-posts
status: draft
然后用 Obsidian 的 Bases 功能,按这些字段生成不同的视图——所有草稿、已发布的文章、按分类筛选。体验接近 Notion 的 Database,但底层还是纯 markdown 文件,随时可以用其他工具打开。

界面与插件
主题用的 Minimal,干净、可定制。字体换成了 SF Mono 和 Noto Sans SC,行宽设成 40(大概对应 700px 左右),阅读起来比较舒服。
插件装得不多,十来个,常用的几个:
Bases 现在是整套系统的核心。它是 Obsidian 内置的功能(不用装插件),把符合条件的笔记聚合成表格视图,过滤、排序、分组都在一个 .base 文件里配置好。我给几乎每种内容类型都建了一个 base——博客、电影、书籍、公司、投资、播客,三十多个,分类索引页直接嵌入这些视图。这件事以前是 Dataview 干的,但自从 Bases 成熟,我基本把视图都迁了过去,Dataview 只剩下几处老页面还在用。原生功能不依赖第三方插件,渲染也更快。
Double Shift 让我按两下 Shift 键呼出快速切换面板,比默认的 Cmd+O 顺手,可能是 JetBrains IDE 用习惯了。
Pangu 自动在中英文之间加空格,写完不用手动调整排版,强迫症福音。
Tasks 管理任务,支持截止日期、重复任务,用它自己的查询语法就能把散落各处的待办聚合到一起。
剩下几个是小工具:Opener 改默认打开方式,File Explorer Plus 增强文件列表,Advanced Tables 让表格编辑不再痛苦,Terminal 直接在库里开终端跑同步命令,Image Toolkit 点开图片能缩放查看。
日常使用
每天打开 Obsidian 先看 Daily Note。日记模板我精简过几轮,现在只剩三块:
想法 随手记下当天冒出来的念头,不强求完整,先存下来。 发现 记看到的有意思的东西,一句话加个链接。 待读 存当天遇到、想之后读的文章,用 Tasks 的勾选框管理,读完打钩。
一开始我搞过 Focus、Log、Inbox 那套更正式的结构,带时间戳和截止日期,但实际用下来发现自己根本不会回头翻那么细的时间线,反而是「想法/发现/待读」这种最低门槛的格式坚持得下来。模板越简单,越愿意每天打开。
写博客的流程:新建笔记,套用 Blog Post 模板自动填好 frontmatter,然后开始写。写完把 status 从 draft 改成 published,跑一下同步工具,文章就发布了。
剪藏网页用 Obsidian Web Clipper 浏览器插件。我针对不同网站配置了不同的模板:豆瓣电影和书籍会自动抓取评分、导演、作者等信息;GitHub 仓库会提取 star 数和描述;YouTube 视频会保存频道和时长;播客会记录嘉宾和时间戳。一键保存到 Clippings 文件夹,frontmatter 自动填好,不用手动整理。

在 GitHub 仓库页面点击插件图标,会自动识别到 GitHub 模板并填充仓库名、描述、star 数等信息,确认后一键保存。

博客发布自动化
我写博客也在 Obsidian 里完成,写好后需要同步到博客仓库,博客用的 Astro 框架,所有的文章都在指定的目录,每次要从Obsidian 中手动复制粘贴到博客的仓库太麻烦,于是写了一个命令行工具 sync-blog 来自动化这件事,还把它包成了一个 Claude Code skill,想发布的时候只需启动 Claude,告诉它「发布博客」,它会自动跑完这一切。这个工具后来从 Obsidian 库里挪了出去,独立放在外面——它本质是个 Node 脚本,没必要混在笔记目录里跟着同步。
工作流程很简单:扫描 Obsidian 库里所有 markdown 文件,解析 frontmatter,找出 tags 包含 blog-posts 且 status 等于 published 的文件,复制到博客仓库的指定目录,然后自动 git commit 和 push。
同步规则写在 config.yaml 里:
rules:
- name: published-posts
filters:
tags:
contains: blog-posts
status:
equals: published
targetDir: src/content/posts
- name: published-notes
filters:
tags:
contains: blog-notes
status:
equals: published
targetDir: src/content/notes
支持多种过滤条件:equals(精确匹配)、contains(数组包含)、matches(正则)、exists(字段存在)。不同类型的内容可以同步到不同目录。
工具还会检测「孤儿文件」——博客仓库里存在、但 Obsidian 里已经删除或取消发布的文件,运行 npm run sync -- --clean 可以一并清理掉。
整个发布流程就是:写完 → 改状态 → 跑命令。不用离开 Obsidian,不用手动操作 git。博客仓库托管在 GitHub,push 之后会自动触发 Vercel 的构建部署,几十秒后网站就更新了。从写完到上线,全程自动化。

最后
不想把这篇写成 Notion vs Obsidian 的对比评测。对我来说选择 Obsidian 的理由很简单:文件是自己的,格式是通用的,界面够清爽,插件够用。
工具是手段。找到适合自己的就好。