笔记还得回头看啊
增加看板
网上看了一些花里胡哨的模板:
- https://github.com/Rainbell129/Obsidian-Homepage
- https://github.com/InlitX/Obsidian-Dashboard-Gallery
但感觉自己用不到,于是让设计了一版给 AI:
<!--
<我的HomePage> <倒计时(节假日、人生)>
<导航>
----
<操作按钮>
---
<待办,按时间排序(limit10)> <Focus 的项目中的待办(limit5)>
---
<资源库查询Recent>
-->需要重点用 https://github.com/efemkay/obsidian-modular-css-layout 这个项目的 CSS 实现响应式横向布局。
最后的效果可以看我的 仪表盘。
文件夹重新分类
这个星期重新审视了自己的 valut 文件夹,发现平级的还是太多了:
> tree -d -L 1
.
├── assets #附件
├── changelog #valut 的变化日志
├── clippers # 网络裁切的文章
├── dashboard # 看板,全局查询
├── how-to # 如何做(是我连载的一个系列)
├── journals # 日记,主要写周报
├── labs # 编程折腾实验室
├── newsletters # 网络上clipper 发现有趣的东西,会在这里做成索引
├── pages # 默认页面
├── projects # 项目立项的文档
├── reviews # 书评、影评
├── skills # 我自己掌握的技能,语言等等
├── templaters # 项目的模板1
├── templates # 项目的模板2
├── tools # 使用中的工具
└── weekly # 每周的一些碎碎念和长篇写作都在里面,内容比较杂,按周批量发布
17 directories最终做出了如下改动:
-
Obsidian 专用:把 assets, changelog, dashboard, templaters, templates 这几个给 Obsidian 自身用的抽离出来,放在
obsidian里面; -
Skills 不常看:大量的 skills 本质上是这个社会要求我学的,很多东西还不成体系,尤其他不发表,算不上文章,访问频率也非常低,最终放回了
pages里; -
Newsletters 是外界的噪音:决定把作用外界的东西放在 clippers,主系统访问他们一律通过引用;
-
笔记应该是流动的,在上面有几个发布内容的归类,我也在 README 主页写了,这三部分其实可以放在一起,强制用标签进行管理,流动的应该是他们的状态,而不是他们的分类文件夹,顾名思义,weekly 将会是我每周发布内容的地方,一直都是
- weekly is meanly long writing.
- reviews is meanly comments.
- how-to is meanly short tutorials.
- labs is meanly making projects and some memos(long tutorials).
- 这里存放一些偏技术向的折腾备忘,尤其在 AI 技术平权时代,这里的文章将会变得尤为重要。
所以现在的文件夹为如下:
> tree -d -L 1
.
├── clippers #简报,外来文章滚里面
├── ✨inbox # 碎碎念,日常茅坑
├── journals # 周报,写点总结
├── obsidian # obsidian 依赖的一切,充当垃圾箱
├── pages # 默认页面创建地方,比 inbox / weekly / journals 更上级的存在
├── projects # 我做了那些屎山
├── tools # 我买了哪些工具
└── weekly # 所有发布、预发布的文章
9 directories台下十年功
说出来容易,做的时候才发现得给自己过去的偷懒填坑,昨晚发现了这样几点:
- QuickAdd 和 Templater 天然不搭;
- Templater 、Button 和上面那个响应式布局的 CSS 布局不搭;
放弃 QuickAdd
第一点,目前没有好的办法,用 Quick 新增 Capture 的时候,一定会被 Templater 抢先运行,然后报错总在 Templater,如下:
Cannot convert undefined or null to object
plugin:quickadd为了提前终止 Templater 的替换,我添加如下的代码也没用:
<%*
return;
%>最终,我发现 Templater 可以替代 QuickAdd,于是只能作罢
分离 Templater 脚本逻辑
第二点,就是因为脚本太长了,最终没有办法被 https://github.com/efemkay/obsidian-modular-css-layout 解析,所以,最佳实践还是分离一个文件夹给 Templater 放脚本。
需要注意脚本需要封装声明一个 js 模块,然后 Templater 才能发现它。
一开始没摸清 Button 的作用原理,以为需要一个模板文件才能调用,配置上去一直没有反应
name 新想法 → Inbox
type templater
action runAddInbox
templater open true增加如下内容才发现这条路根本不通
<%*
new Notice("bridge template running");
%>看了一遍 Button https://github.com/shabegom/buttons 和 Templater 的文档 https://silentvoid13.github.io/Templater/user-functions/script-user-functions.html, https://obsidian-scripts.mihaiconstantin.com/docs/prompt.html 才发现是自己 type 写的多余了,直接这样就可以直接运行
name 写点东西 => Inbox
action <%* tp.user.add_inbox(tp) %>
templater true接着就是优雅调用即可。
WARNING
有个更傻逼的问题是,如果脚本名字是带
-的话,它是无法被正确解析的。上述例子中我的脚本名字是add_inbox,其实原本叫add-inbox,后来发现怎么都无法调用,最终被 Grok 发现,add-index 在 JS 的语法里会被解析为算数减法,最终导致报错:Error processing templater in button: ReferenceError: inbox is not defined还有个办法是用 括号语法:
["add-inbox"](<%* tp.user["add-inbox"](tp) %>)
- 把 dashboard 加入到 linter 忽略列表上
学习 Obsidian 的新特性
最近几个月,Obsidian 推出重大功能比较多:
- Obsidian CLI
- Obsidian Base
第一个其实相当有用,因为未来可能不必直接启动 Obsidian 了,直接可以在命令行操作自己的知识库,当然,在 EA 阶段我也找过一些平替,例如:Obsidian CLI 的替代,甚至还自己写过 utils/250706-obsidiantools-query-data.py,只是最后放弃了,这太麻烦了。
接下来,Base 是我比较喜欢的功能,因为他几乎就是相当于 Notion 的表格,Logseq 的查询,一些简单的场景,他可以替代 Dataview,其实之前开源社区也有一个类似的 插件,只不过不知道为什么后面陷入了无限停更,两个东西非常相似,以至于我认为其实 Obsidian 只是把他嵌入了进来。
所有的 index 重命名为 README
主要考量还是 GitHub 排版问题,未来有一天 GitHubPagse 消失,那么GitHub的可读性上就至关重要了,从 README 到 index 重命名这件事情当然可以交给脚本。只是这项变动可能较多,需要借助脚本完成。
- 增加脚本做 README和INDEX 名称之间的转换