obsidian探索小记(一)——zotero和obsidian联动的一些探索

zotero是一款著名的文献管理软件,而obsidian是一个界面很好看的markdown笔记软件。这两款软件都有着丰富的插件生态,并且二者可以联动,完成许多意想不到的事情。这里记录的就是我在两款软件联动上的一点点探索。

一、必备插件安装:

(一)zotero插件的安装:

为了实现两款软件的联动,我们首先需要在zotero上安装一些必要的插件。这些插件的名称和官网地址如下:

  1. Better BibTeX for Zotero https://retorque.re/zotero-better-bibtex/
  2. zotefile http://zotfile.com/
  3. zotero-mdnotes https://github.com/argenos/zotero-mdnotes

访问上述链接,获取插件的.xpi文件并下载。

之后打开zotero,点击“工具”-“附加组件”打开附加组件管理器,将.xpi文件拖入这个管理器面板即可。zotero会提示重启软件以使插件生效。

附加组件管理器的按钮

图1. 附加组件管理器的按钮

附加组件管理器面板

图2. 附加组件管理器面板。将.xpi文件拖入面板即可完成安装

(二)obsidian插件的安装:

在我目前完成的探索中,obsidian插件只需要安装一款: zotero integration

和zotero不同,obsidian内置了插件商城,因此我们借助插件商城完成安装即可。下面是安装步骤:

首先,点击设置按钮(主界面左下角小齿轮图标)进入设置面板,点击“community plugins”,然后点击“turn on community plugins”开启安装插件的功能

开启插件商城

图3. 开启插件商城

在随后出现的界面中,点击“community plugins”项目右边的“Browse”紫色按钮,进入插件商城,在此次搜索对应插件的名字。

设置面板

图4. 浏览插件商城

搜索结果如下图。点击对应的插件名称,然后点“install”按钮完成安装即可。

安装zotero integration

图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
2
3
4
(base) cyclin@DESKTOP-23BCT60:/mnt/e/000_desktop/private/document/obsidian/.obsidian/plugins$ tree
.
└── obsidian-zotero-desktop-connector
└── manifest.json

那么缺少的这两个文件去哪里安装呢?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
  • 为了方便,可以直接参考下面这一配置:
    • 导出路径为 paper/{{citekey}}.md
    • 图片导出路径为 paper/asset/{{citekey}}/

笔记模板设置

  • 这部分完全参考上述教程。模板文件的存储路径和文件名为: <vault>/template/template.md ,其中 <vault> 是仓库根目录。 template.md文件内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
---
tags: [Papers, Readed, Tempalte]
---
# {{title}}
[toc]
## 1.Abstract&Info
### 1.1 Abstract
{{abstractNote}}

### 1.2 Info
Authors: {{authors}}
DOI: {{DOI}}
Publication: {{publicationTitle}}
PDF: {{pdfLink}}
Zotero: {{pdfZoteroLink}}
Data: {{date|format("YYYY-MM-DD")}}

## 2. Annotation
{% persist "annotations" %}

{% set newAnnotations = annotations | filterby("date", "dateafter", lastImportDate) %}
{% if newAnnotations.length > 0 %}
### Imported: {{importDate | format("YYYY-MM-DD h:mm a")}}

{% for each in newAnnotations %}
{% if each.colorCategory == 'Blue' %}
原文:[{{each.annotatedText}}](zotero://open-pdf/library/items/{{each.attachment.itemKey}}?page={{each.page}}&annotation={{each.id}})
标注:{{each.comment}}
{% endif %}
{% endfor%}

{% endif %}
{% endpersist %}
  • 将上述内容复制到模板文件中,然后在obsidian的上述设置界面中添加模板文件(输入template这几个字母,obsidian会自动补全路径)。到此为止,要在obsidian上进行的配置就完成了。

全部配置如下图所示:

全部配置

图7. 全部配置

我们还需要在zotero上进行配置,将快速复制的条目格式同样改为和之前一样的American Psychological Association 7th edition的格式。到此为止,配置工作完成。

zotero上的配置

图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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
---
tags: [Papers, Readed, Tempalte]
---
# Deep learning for computational biology
[toc]
## 1.Abstract&Info
### 1.1 Abstract
Technological advances in genomics and imaging have led to an explosion of molecular and cellular profiling data from large numbers of samples.
This rapid increase in biological data dimension and acquisition rate is challenging conventional analysis strategies.
Modern machine learning methods, such as deep learning, promise to leverage very large data sets for finding hidden structure within them, and for making accurate predictions.
In this review, we discuss applications of this new breed of analysis approaches in regulatory genomics and cellular imaging.
We provide background of what deep learning is, and the settings in which it can be successfully applied to derive biological insights.
In addition to presenting specific applications and providing tips for practical use, we also highlight possible pitfalls and limitations to guide computational biologists when and how to make the most use of this new technology.

### 1.2 Info
Authors: Christof Angermueller, Tanel Pärnamaa, Leopold Parts, Oliver Stegle
DOI: 10.15252/msb.20156651
Publication: Molecular Systems Biology
PDF: [Angermueller 等 - 2016 - Deep learning for computational biology.pdf](file://E:\000_desktop\private\document\Zotero\storage\C7VZ43KL\Angermueller%20等%20-%202016%20-%20Deep%20learning%20for%20computational%20biology.pdf)
Zotero: [Angermueller 等 - 2016 - Deep learning for computational biology.pdf](zotero://select/library/items/C7VZ43KL)
Data: 2016-07-01

## 2. Annotation
%% begin annotations %%

[[angermuellerDeepLearningComputational2016]]

%% end annotations %%


%% Import Date: 2023-11-20T21:35:11.989+08:00 %%

然而,现在依然有两个问题没解决:

  • (1)目前只能一篇文章一篇文章的导入,没有批量导入的方法。
  • (2)似乎抓取不了笔记数据,无论是直接标注在PDF上的笔记,还是记录在zotero备注框里的笔记。

(二)在obsidian中构建知识图谱的方法

这一块进行的探索不多,仅记录已有结果。

参考: 《Obsidian知识体系搭建:小白入门篇》

Obsidian 支持多种「超链接」形式,例如:

  • 双向链接:[[笔记名]]
  • 笔记标题引用: [[笔记名#标题]]
  • 块引用: [[笔记名 ^]]

obsidian支持使用上述方法在不同的markdown文件之间建立关联。因此,我们可以在不同笔记之间使用双向链接:[[笔记名]] 构建笔记与笔记之间的关系网络图。

下面是关系图的一个示例:

关系图示例

图11. obsidian关系图示例

以上。

关于 obsidian软件的使用,未来还会继续探索。