obsidian + hexo = my blog
使用 obsidian 进行 hexo 静态博客写作
资料来源:
<>
更新
1
2021.09.14 初始
导语
目前 obsidian 是个人的主力笔记应用,撰写 blog 主要也是 obsidian.这篇博客会汇总一下写 hexo blog 用到的 obsidian 插件/配置.还有未尽的事项.
正文
使用 obsidian 写 blog
- 博文模板
- markdown 格式化,时间元数据更新.
- git 推送
分别对应 3 个插件 Templater obsidian-prettify 和 obsidian-git.
- Templater 是模板文件,提供了相当丰富的调用.显然因为不了解 js 目前只用了皮毛.
- obsidian-prettify 提供了 md 的格式化,并且还有时间元数据更新.
- obsidian-git 提供了 git 的调用,我并不关心 blog 仓库的 commit 信息,只要推上去就行.
Templater
先看看对模板生成的要求
1 | --- |
- 标题/分类/标签
- abbrlink 唯一链接
- date/updated 的时间,updated 特殊一点还要能在修改博文后更新时间.
- 其他的固定内容若干.
obsidian 内置了模板应用,最开始也是使用自带的模板,能够方便的生成时间,但是也就这样了,还是要一遍遍手动输入 标题/分类/标签.
Templater 提供了基于 js 的模板支持,也内置了非常强大的函数.具体使用请参考 官方文档.基于 Templater 基本能覆盖上面生成的要求.
实现
目前本地的博文标题和本身文件名是相同的,即这一篇 obsidian + hexo = my blog
对应的文件是 obsidian + hexo = my blog.md
.
新建文件时,输入标题使用 tp.file.rename
重命名文件为 title.md
.
分类是按照文件夹\子文件
来的,这一篇就是 工具\obsidian + hexo = my blog.md
.
生成 categories
时,是直接读取当前文件所在路径.<tp.file.folder(true)
.
标签的种类优先,目前只是调用 tp.system.suggester
从一些固定标签中选择一个,或许熟悉 js 以后能做更好的定制.
一段前言的说明是调用 tp.system.prompt
捕获用户的输入.
abbrlink
要求生成唯一的字符串,这里取巧,直接使用 tp.date.now("YYYYMMDDhhmmss")
取时间到秒替代.我才不会说我不懂 js 呢…
其他固定内容按照需要生成.
模板
1 | <%* |
obsidian-prettify
obsidian-prettify 可以对 md 文件格式化,对我而言,内置的格式与平时默认的习惯恰好符合,因此不用特别更改.
更新时间元数据,是另一个重点功能,更新模板配置为 updated: {{date:YYYY/MM/DD hh:mm:ss}}
,这样调用每次进行格式化时 updated
字段都会是最新的时间.(因为 blog 现在是默认按照更新时间排序)
obsidian-git
基本也是开箱即用,配置好推送和拉取快捷键.
未尽
一大遗憾还是 obsidian 双向链接 暂时无法直接用在 hexo 上.
[[title#章节]]
类似的格式可能需要有一个 hexo 的插件,在每次生成 blog 时替换成真正的网址,才能完全兼容.只能继续等或者尝试学一下 js.