obsidian探索小记(一)——zotero和obsidian联动的一些探索
zotero是一款著名的文献管理软件,而obsidian是一个界面很好看的markdown笔记软件。这两款软件都有着丰富的插件生态,并且二者可以联动,完成许多意想不到的事情。这里记录的就是我在两款软件联动上的一点点探索。
一、必备插件安装:
(一)zotero插件的安装:
为了实现两款软件的联动,我们首先需要在zotero上安装一些必要的插件。这些插件的名称和官网地址如下:
- Better BibTeX for Zotero https://retorque.re/zotero-better-bibtex/
- zotefile http://zotfile.com/
- zotero-mdnotes https://github.com/argenos/zotero-mdnotes
访问上述链接,获取插件的.xpi
文件并下载。
之后打开zotero,点击“工具”-“附加组件”打开附加组件管理器,将.xpi文件拖入这个管理器面板即可。zotero会提示重启软件以使插件生效。
图1. 附加组件管理器的按钮
图2. 附加组件管理器面板。将.xpi
文件拖入面板即可完成安装
(二)obsidian插件的安装:
在我目前完成的探索中,obsidian插件只需要安装一款: zotero integration
- zotero integration: https://github.com/mgmeyers/obsidian-zotero-integration
和zotero不同,obsidian内置了插件商城,因此我们借助插件商城完成安装即可。下面是安装步骤:
首先,点击设置按钮(主界面左下角小齿轮图标)进入设置面板,点击“community plugins”,然后点击“turn on community plugins”开启安装插件的功能
图3. 开启插件商城
在随后出现的界面中,点击“community plugins”项目右边的“Browse”紫色按钮,进入插件商城,在此次搜索对应插件的名字。
图4. 浏览插件商城
搜索结果如下图。点击对应的插件名称,然后点“install”按钮完成安装即可。
图5. 安装zotero integration
由于obsidian的底层架构是electron,其技术源于谷歌chrome浏览器,因此obsidian的诸多插件也是基于web技术开发的,编程语言以 TypeScript / JavaScript 为主,故插件体积很小,安装速度也很快。在完成安装以后,记得在设置面板的“community plugins”标签页中启用对应插件。
(三)小插曲
在我的探索过程中,zotero integration插件的安装出现了问题。如果直接采用上述方法安装,则在安装完成后无法启用这一扩展,obsidian报错 “Failed to load plugin obsidian-zotero-desktop-connector” 。
在网上查询相关问题后得知,这种报错可能是本地文件不完整所致。于是我也探索了一下如何解决这个问题。
点击设置界面的文件夹图标“open plugins folder”打开插件安装目录,可以发现zotero integration插件只安装了manifest.json文件,而完整的obsidian插件还需要main.js和styles.css两个文件。
1 | (base) cyclin@DESKTOP-23BCT60:/mnt/e/000_desktop/private/document/obsidian/.obsidian/plugins$ tree |
那么缺少的这两个文件去哪里安装呢?zotero integration插件是开源的,所以我们去github上看看有没有对应的文件。
访问zotero integration插件的github release页面( https://github.com/mgmeyers/obsidian-zotero-integration/releases ),这一页上列出的都是插件的发行版。可以看到,main.js
, manifest.json
, styles.css
三个文件是全的。
在这里下载缺少的两个文件,并放入上述安装目录文件夹中,然后重启软件,这一次,zotero integration插件就可以成功启用了。
图6. 成功启用插件
二、配置zotero integration插件
这一部分的内容参考网络教程 《Obsidian插件-Obsidian-Zotero-Integration》
通用配置:
- 配置PDF utility,配置好后会显示如图的绿色勾号;
- 根据教程,此处直接点击下载PDF utility,等待插件配置完成即可。
- 但是我在这一步的配置总是失败,于是采取了自行安装PDF utility的方法。从PDF utility官网下载了可执行文件( https://github.com/mgmeyers/pdfannots2json/releases ),然后将PDF utility可执行文件的路径粘贴到设置当中。如此配置完成后,也会显示绿色勾号;
- 配置插件数据库,这里选择Zotero;
- 选择笔记模板的导入地址(笔记模板的编写稍后介绍);
- 启用cite key的自动补全(可选择开启);
配置Cication Formats
- 点击Add Citation Format按钮添加格式
- 导出格式选择American Psychological Association 7th edition的格式(在zotero中导出格式需要与之相同,见下文)
配置Import Format
- 点击Add Import Format按钮添加格式
Output path
:这里配置的地址为从Zotero导入信息后经过模板处理,笔记存储的路径;Image Output path
:笔记图片存储的路径;Template File
:笔记模板的路径;Bibliography Style
:与Zotero配置的值相同。
- 注意,上面设置中的路径全部需要使用相对路径
- 所谓相对路径,是相对于obsidian的仓库根目录而言的(例如在我的电脑上,仓库根目录是
E:\000_desktop\private\document\obsidian
,那么配置中填写的目录就是相对于这个根目录的位置,例如导出路径为paper/{{citekey}}.md
,其绝对路径就是E:\000_desktop\private\document\obsidian\paper\{{citekey}}.md
)
- 所谓相对路径,是相对于obsidian的仓库根目录而言的(例如在我的电脑上,仓库根目录是
- 为了方便,可以直接参考下面这一配置:
- 导出路径为
paper/{{citekey}}.md
- 图片导出路径为
paper/asset/{{citekey}}/
- 导出路径为
笔记模板设置
- 这部分完全参考上述教程。模板文件的存储路径和文件名为:
<vault>/template/template.md
,其中<vault>
是仓库根目录。template.md
文件内容如下:
1 | --- |
- 将上述内容复制到模板文件中,然后在obsidian的上述设置界面中添加模板文件(输入template这几个字母,obsidian会自动补全路径)。到此为止,要在obsidian上进行的配置就完成了。
全部配置如下图所示:
图7. 全部配置
我们还需要在zotero上进行配置,将快速复制的条目格式同样改为和之前一样的American Psychological Association 7th edition的格式。到此为止,配置工作完成。
图8. zotero上的文献条目格式配置
三、如何使用这一联动功能
(一)导出zotero的笔记到markdown文件
在obsidian编辑器中打开命令窗口(快捷键ctrl/Command+P,或者按下主界面最左侧的 >_
按钮),并找到指令 zotero integration: import zotero note。
图9. 指令窗口
执行这一指令,会打开zotero的快速格式化引文工具栏(如下图)。在此栏输入要导出笔记的文章标题,则obsidian会自动从zotero中抓取文章元数据并创建对应markdown文件。
图10. 快速格式化引文工具栏
以一篇文章 Deep learning for computational biology ( doi:10.15252/msb.20156651 ) 为例。在经过上述步骤导出笔记后,其生成的markdown文件如下。在markdown文件中还包含了跳转到原PDF的链接,方便随时查看PDF内容。
1 | --- |
然而,现在依然有两个问题没解决:
- (1)目前只能一篇文章一篇文章的导入,没有批量导入的方法。
- (2)似乎抓取不了笔记数据,无论是直接标注在PDF上的笔记,还是记录在zotero备注框里的笔记。
(二)在obsidian中构建知识图谱的方法
这一块进行的探索不多,仅记录已有结果。
Obsidian 支持多种「超链接」形式,例如:
- 双向链接:
[[笔记名]]
- 笔记标题引用:
[[笔记名#标题]]
- 块引用:
[[笔记名 ^]]
obsidian支持使用上述方法在不同的markdown文件之间建立关联。因此,我们可以在不同笔记之间使用双向链接:[[笔记名]]
构建笔记与笔记之间的关系网络图。
下面是关系图的一个示例:
图11. obsidian关系图示例
以上。
关于 obsidian软件的使用,未来还会继续探索。