Hugo + Obsidian 个人版 Wiki 实践
我在之前的文章中,已经做了足够的铺垫,这篇大概只能算是总结吧。
Wiki 是一个乍一看让人摸不着头脑的词,因为他只是 wiki 系统发明者在夏威夷学的的一个单词,来源是一个公交车车站站牌。最初形式就是实体的知识卡或笔记卡片,然后随着互联网发展,知识卡片实现了更简便的多人协作:即通过编辑 wiki 格式文本来代替编辑 HTML,各个地方的人共同编辑。总之理解为卡片式写作应该就行了,每一张卡片上有一个自己的标题或关键词,然后写一下内容,不时修改。并对一些可以单独列出,或重复的概念提取到单独的卡片。
卡片写作挺有特点的,单篇不成文,可以说,随手随写。另外借助计算机程序,电子的卡片写作可以快速找到参考卡片和被参考的卡片。这种卡片的关联在某些时候还是挺有用。
这种写作模式跟写博客有很大区别,博客单篇成文,一般发布后不再频繁修改,并且可以方便的加入 RSS 。而卡片则灵活的多,不成文,随时修改,也就是说这中写法更适用于笔记而不是文章。
不过这种方便写作者的方式,这对阅读者可能不太友好:未整理,或者是半整理,或跳跃的想法的信息混杂在几个条目中,可能需要一级一级的查看作者曾经写过的条目,层级多了可能还会忘记最初看的什么,根本没有详略的说法。这就有点像查词典查百科,正常文章可能直接类似不重要的信息直接提一嘴,而如果自己手动查阅,那么就不可避免耗费些时间,并且查到更多东西。整个思维很跳跃,并不十分连贯。也就是说,写作者能很快回忆起相关信息,捡起来线头,而阅读者是需要花费一些功夫的。不过阅读其他人未经整理的笔记,总是要花费些功夫的。
卡片笔记有很多可以付诸实践的方法,其中黑曜石是一个非常不错的本地双链笔记软件,有一点点像单人 wiki 的感觉。之前写过如何将黑曜石笔记发布为网站的教程,以及更多的思路。下面就是之前文章其中一个思路的实践。
效果 https://www.ftls.xyz/kkbt/sum/
下面是我的一些思路,既然说是模仿多人协作的 wiki,加上 obsidian 的一些特点,这种单人卡片发布到网络上,大概需要这样:
- URL 包含词条
- 有链接与反链
具体的流程大概就是在黑曜石中写下笔记,RunJS 读取某个目录下的 markdown 文件创建时间,文件名等等信息,生成一个 json,然后同步到公开的对象存储中。Gitee Action 服务器下载读取 json 索引文件,更新同步 markdown 文件。并运行脚本程序分析所有文件链接与被链接关系。使用脚本或 Hugo 内置模板语言将所有双联语法,以及黑曜石一些特殊语法转化成 GFM markdown 语法,并分析文件之间链接关系。最后交给 Hugo ,渲染生成网页等文件,显示反链等信息。
代码都放 Gitee 上了,如若需要仅供参考,因为 hugo 模板语言确实不熟悉,如果我实现 2.0 版本,大概会全用 go + lua 或 JavaScript 把 obsidian 数据全处理为 markdown 和 json,hugo 只负责读取 markdown 和 json 生成网页。目前主要是运行这个,这其中运行的 go 程序在这 。
流程并不复杂,我之前文章提到的脚本 Lua 或者直接写 go 实现并不复杂。用起来也就是在黑曜石中创建对应文件,RunJS,Remotely Save 同步到对象存储,运行 Gitee Action 。并不是一键发布,而至少按三四个键,但是能在手机平板中方便的发布,修改和删除。发布一包含图片的内容也是没什么问题的。就这样。
铺垫的文章:
- [博客装修] 3. 静态博客生成器 Hugo 预处理
- JavaScript 运行时 LLRT
- Obsidian 发布博客的 N+1 种方法
- Obsidian 公开库从 Docsify 改为 Docute
欢迎赞赏~
赞赏