TiddlyWiki与Obsidian,我全都要
-
最近我重新搞了下博客,用Obsidian写MD文件,用hugo搭建。后面我想到,为什么不能用Obsidian编辑md,然后转换成TiddlyWiki可识别的模式呢?
TiddlyWiki是支持md文件的,但TiddlyWiki与市场上大多数支持md的笔记软件不太一样,TiddlyWiki是把属性保存在meta文件中的。类似于下面这种形式。meta文件的内容就是常见的键值对,属性值的内容。而Obsidian则是把属性值存放在MD文件自身的YAML格式上。这一点是写在Obsidian核心里的。而为了绕过这一点,我的思路也很简单,当插件检测到用户正在使用Obsidian编辑md文件时,把meta里的内容复制到md文件上,而当用户编辑完成时,则把编辑之后的yaml内容移动到meta文件中并在md文件里删除yaml内容。因为每次只要面对一个或少数几个md文件,性能上应该没什么压力。
测试.md 测试.md.meta--- tags: TiddlyWiki ---GitHub - dongrentianyu/tiddlywiki-meta-sync: 在Obsidian中编辑md文件,并保留TiddlyWiki格式
在Obsidian中编辑md文件,并保留TiddlyWiki格式. Contribute to dongrentianyu/tiddlywiki-meta-sync development by creating an account on GitHub.
GitHub (github.com)
目前已开源,只需要到仓库里,看一下安装方式就好。整个插件完全是由Grok写的,想改代码可以看一下自己改,
展示




好处
这样就可以实现,TiddlyWiki和Obsidian,我全都要。在Obsidian里,完全可以和正常的Obsidian一样进行编辑安装插件。但注意无法使用像dataview这种插件,因为其是读取yaml格式的。Obsidian负责编辑文件,而TiddlyWiki负责数据库和前端展示。因为TiddlyWiki的筛选器语法真的比dataview要简单很多,且扩展性更强。
同理,这个思路还可以用在其它软件上。如果你会使用Emacs,也可以进行相应的操作,无非是把md文件换成org文件,在代码层面应该是不难做到这种事情的。emacs的org-roam自带一个数据库加载,在编辑时加载会非常方便。TiddlyWiki在这里重点需要负责的内容只有前端展示。
那为什么要搞得这么复杂呢?
也很简单,因为如果不依赖这些软件,完全自己去写代码和数据的话,工作量会非常大。对于非程序员群体来说很不友好。上述方案至少还能跑得通。
其次是可以方便在TiddlyWiki里对接AI功能。借助Obsidian的生态,AI正常在Obsidian里生产文章,一编辑就保存到TiddlyWiki的数据库了。非常方便,也不用担心TiddlyWiki一直没有AI功能而搞不定了。
注意事项
- Obsidian中不支持纯数字标签,但TiddlyWiki是支持,因而在使用Obsidian编辑TiddlyWiki的md文件时,应注意这一点。
- 这个也是写在Obsidian核心里的,很难绕过。
- TiddlyWiki不允许重名,而Obsidian允许在不同的文件夹下重名。因而插件有检测机制,检测在当前Obsidian库中存在重名文件时,便会出现弹窗提醒更改。
- 但同样有个问题。我使用Obsidian的库是挂载在
tiddlers文件夹外部,插件无法检测到tiddlers内部的文件。需要注意。
- 但同样有个问题。我使用Obsidian的库是挂载在
- Obsidian会实时检测到MD文件的修改。且可以在TiddlyWiki中修改和编辑MD文件。但反过来则不行,在Obsidian进行编辑后的MD文件,TiddlyWiki需要重启才能读取到。
- 太记最近好像有做检测外部修改文件然后重启的功能,但目前还是实验性的。
- 插件有进行转换的功能,但好像没写好。
- 技术好的可以再加功能。直接提pr或者联系我开仓库权限,或者写好了发个评论我去下载。
- Obsidian中不支持纯数字标签,但TiddlyWiki是支持,因而在使用Obsidian编辑TiddlyWiki的md文件时,应注意这一点。
-
简要写一下我的挂载路径。
tiddlers\ tiddlers\TW-Obsidian tiddlers\TW-Obsidian\tiddlywiki.files TW-Obsidian TW-Obsidian\.obsidian TW-Obsidian\ROOT TW-Obsidian\ROOT\测试.md TW-Obsidian\ROOT\测试.md.meta简单来说,即把Obsidian编辑存在的文件夹放在tiddlers同级的外层,而不放在里面。不放在里面是因为会加载像
.obsidian这个带有插件等其它文件性质的文件夹。而后面把所有文件全都放进ROOT文件夹中也是如此。因为我们不想把.obsidian也挂载进去。tiddlywiki.files文件本质上是一个纯文本的json文件。我是按上面的路径进行配置的,并增加了isEditableFile属性,使得可以在TiddlyWiki中进行编辑md文件,并修改原文件。不然的话,在TiddlyWiki里编辑过后会在tiddlers文件夹中生成同名文件。{ "directories": [ { "path": "../../TW-Obsidian/ROOT", "isEditableFile": true } ] }最后记得在
.gitignore文件中新增一行,避免对这些插件内容进行跟踪,当然如果你想使用git进行多端同步的话,也可以不排除。# 排除掉Obsidian相关的插件设置 TW-Obsidian/.obsidian/ -
看完你写的文字, TiddlyWiki比obsidian的优势只在筛选器语法上了吗?
-
看完你写的文字, TiddlyWiki比obsidian的优势只在筛选器语法上了吗?
那肯定不是。TiddlyWiki与Obsidian各有所长,各有不同的使用场景,还是要看不同的需求。我提出这个方案只是为了满足在TiddlyWiki里能正常加载Obsidian编辑的MD文件。因为Obsidian的流行,导致很多MD编辑器也是使用YAML格式的。
TiddlyWiki擅长的是筛选器和筛选器带来的微件,以及由微件带来的自定义用户界面。这些都是Obsidian或其它任何软件无法实现的。至少我搜寻过太多软件很少能做到这一点。尤其是深度结合HTML和css的,大多数还要写lua脚本,然后实现一个原生但简陋的功能。比如sliver bullet。
我最近有打算在五一假期或者什么时候一个大长假的时候,重新设计自己的TiddlyWiki界面。一个功能繁杂但也许能满足我需要的。
再比如,我之前应该也有在论坛发过,那种借助太记可以实现同一个wiki,多个不同展示界面同时访问的那种功能。这也是Obsidian或其它软件无法实现的。他们有标签页,但其实两者不是一个东西。

现在上班了,时间不多,但有时候还是会用周末写一下。比如这里标题下面那些按钮就是我自己写的。

点击 可以切换不同的展示方式,且有另一个背景颜色提示。
这里还要再说回来,如果会JS,那TiddlyWiki也好,Obsidian也好,两者都有很大的扩展空间,甚至Obsidian会更大一点。但关键是,什么是你需要的。每个人需求不一样,对应场景不一样。对笔记软件的看法也不一样。
比如我现在迫切想用上MWS,因为我始终担心nodejs版本的TiddlyWiki存储性能不够。不足以支撑未来庞大的数据量。