Obsidian是个完全本地化的工具,除了用来做笔记,拿来做摘要和知识库其实也不错,只要不用担心在线服务的稳定性等问题。另一方面,关注了好几年,抓网页的好工具也就是剪藏(印象笔记)和简悦了,Bear、DevonTHINK虽然也有插件,但是前者的格式转换不太完美,后者的思路是保存WebArchive等,对markdown之类的转换也并不友好。所以几年前抛弃印象笔记后,主要就是依赖简悦,便宜、活儿好。
对抓网帖来说,要纯本地化的塞进Obsidian,关键就是如何将图片等附件本地化。关联简悦来说,就是导出为TextBundle格式,自带了所有附件。向作者反馈过问题以后,有其他网友给了个挺好的解决思路,结合Hazel的文件夹监控和自动化动作实现整理。为了更契合我自己直接把帖子扔到一个文件夹的习惯,做了一些修改。
首先,根据需要自己定义简悦的下载文件夹,这一步在简悦·同步助手
里设置就行了,我直接定义到Obsidian文档库里。
第二步,为下载文件夹设置一个Hazel规则,考虑到下载时间,这里设置为1分钟以后触发,并且在最后删除原.textbundle
文件。
第三步,关键是中间执行的脚本:
string=$1
# 分割成 xxx.textbundle
temp=${string##*\/}
# 提取文章名 xxx
article_name=${temp%%.*}
folder_name=`echo $article_name | sed 's/ //g'`
# Markdown 文件之前的名字
name_before=$string"/text.markdown"
# 重命名之后的 Markdown 名字
name_after="$article_name.md"
# 重命名 Markdown
mv "$name_before" ./"$name_after"
# 重命名文件夹
mv "$string"/assets attachments/$folder_name
# 得到 info.json的地址
json=$string"/info.json"
# 删除 info.json
rm -f $json
# 重命名markdown中附件路径
sed -i '' -e "s|assets/|attachments/$folder_name/|g" "$name_after"
简单来说,就是将下载的.textbundle
文件打开,其中的markdown文件修改扩展名作为正文;其中附件文件夹assets
也统一用文件名命名(剔除空格,避免后续处理麻烦),然后移到文档库的attachments/
目录下,实现对所有附件的统一管理。最后为了防止有附件重名导致正文引用错误,批量替换为新的附件路径。
至此,正文在文档库指定目录下,附件分门别类放到统一附件目录的同名文件夹下。后续只需要根据自己的知识库规范整理就行了。
已知问题:如果网帖的图片附件是有链接的,也就是转换后类似[![图片名](1.jpg)](链接)
这样外面还包一层链接时,最后替换完以后在Obsidian里无法正常预览。
最后感谢简悦的作者Kenshin,之前他提示Windows平台可以用Quicker做后续处理的时候,我就在琢磨Hazel,这次直接站在热心网友的肩膀上实现了自己的需求。