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/