从零搭建zotero到obsidian的工作流

所谓“工欲善其事,必先利其器”(差生文具多),想要针对一个领域研究出成果,首先需要建立其对于这个领域完善的知识体系,即形成属于自己的知识库。现在有非常多的笔记软件,例如Notion、语雀、Obsidian等等,对于建立知识库非常有帮助,下面我就来谈谈我个人探索出来的一套从zotero管理文献,到阅读文献做笔记再到obsidian中形成阅读笔记的丝滑工作流。

Why zotero?

zotero是一个文献管理软件,据我了解,其前身其实只是一款浏览器插件,用于提供文献元数据的管理,直到后来被开源社区开发成一款跨平台的桌面级软件,并且有非常好的开源社区以及大量的插件。

文献管理软件当然也不止这一款,至于为什么选择zotero,原因其实非常简单,就是因为它是开源软件,我本人是如果功能足够用,一定会优先考虑开源软件的。开源软件一般拥有庞大的专业用户,他们拥有过硬的技术和开源精神,形成的社区非常喜人。

zotero的基础操作我就不多说了,其实使用起来也比较简单,我主要利用它来分类整理文献,同时搭配Zotero Connector浏览器插件,在google scholar中浏览文献的时候直接一键收录并且提取元数据。

这里推荐两个比较好用的插件,也是我觉得必装的,后续的配置会默认已经安装了这两个插件,插件的配置可以参考网络然后根据自己的需要进行。

  • Better BibTex 6.7.19 ——主要用来帮助zotero更好的管理bibliographic数据
  • ztofile 5.1.1 —— 更好的管理附件文件,例如格式化命名、移动附件等等
  • 另外我的Zotero版本是6.0.11

同时还可以配置Zotero利用云盘进行备份/多设备同步等等,例如我就将我的整个附件目录以及Zotero数据库放在了icloud中。

Why obsidian?

说实话,obsidian算是后起之秀了,在知识库软件百花齐放的今天,这个界面不那么友好的软件似乎没有什么竞争力,但对于专业人士来说,恰恰相反。obsidian它所有的特性完美的符合了我的需求。

  • 文档以markdown格式编写,同时提供扩展语法
  • 数据存储在本地,且直接以.md格式存储,让人放心
  • 提供双向链接、关系图谱等功能
  • 拥有非常庞大的插件支持(例如Vim相关的插件以及等下我们会用到的插件)

构建文献阅读整理工作流

在我们阅读文献的时候,特别是精读的时候,我觉得比较好的一个流程是:

  1. 一遍阅读一遍标注一边写评论,这样可以有助于理解文章,同时理清文章的脉络
  2. 利用不同的颜色区分标注的不同内容
  3. 阅读完成后整理阅读笔记,形成知识存储在知识库中,方便以后翻阅,因为通常需要阅读大量的文献,很容易不记得一些文件的细节

下面我就按照上面的流程来介绍我探索出来的一个工作流

文献标注

我会用不同的颜色来表示标注内容的不同意思,通常的习惯是

  • 橘色表示文章的主要思想
  • 黄色表示研究的细节部分或者系统实现的细节
  • 红色表示还需要继续探究的部分或者感兴趣的参考文献

通过不同颜色的区分不仅有助于我们梳理文章内容,同时也方便接下来导入Obsidian的配置。

导入Obsidian,形成笔记

说了这么多,终于到了重点部分,看起来毫不相关的两个软件,是如何联系起来的呢,这就不得不提到Obsidian的一个插件——zotero-integration

其实在发现这款插件之前,我是根据Zotero -> zotfile -> mdnotes -> obsidian -> dataview Workflow这篇帖子在实现我的workflow的,但是后来由于zotero的更新,导致zotero的插件mdnote失效了,所以换成了更稳定的Obsidian端实现

安装好zotero-integration后,可以首先通过这个视频熟悉它的使用

现在我们知道了zotero-integration可以通过编写模板实现格式化导入文献笔记

那么我自己的模板文件如下:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
---
title: {{title}}
date: {{importDate | format("YYYY-MM-DD HH:mm:ss")}}
categories:
tags:{% for tag in tags %}
- {{tag.tag}}{% endfor %}
---

### Matedata
#zotero

##### Item Type::
[[{{itemType}}]]

##### Authors::
{{authors}}

{%if date %}##### Year::
[[{{date | format("YYYY")}}]]-{{date | format("MM")}}{% endif %}

{%if conferenceName %}##### Conference Name
[[{{conferenceName}}]]{% else %}{% if publicationTitle %}##### Publication Title
[[{{publicationTitle}}]]{% endif %}{% endif %}

{%if DOI %}##### DOI::
[{{DOI}}](https://doi.org/{{DOI}}){% endif %}

{%if pdfLink %}##### PDF Attachment::
{{pdfLink}}{% endif %}

##### Zotero Link
- [Local]({{select}})
- [Cloud]({{uri}})

# {{title}}({%if date %}{{date | format("YYYY")}}{% endif %})
>[DOI] [{{DOI}}](https://doi.org/{{DOI}})

## Abstract
{{abstractNote}}

## 摘要

## 正文
{% for annotation in annotations %}{% if annotation.type == "highlight" %}{% if annotation.colorCategory %}{% if annotation.colorCategory == "Orange" %}
```ad-main_idea
{{annotation.annotatedText}}({% if pdfLink %}{% if citeKey %}[{{citeKey}}]{% elif citationKey %}[{{citationKey}}]{% else %}[Link]{% endif %}{% if annotation.attachment.desktopURI and annotation.page %}({{annotation.attachment.desktopURI | replace("select", "open-pdf")}}?page={{annotation.page}}){% else %}{{pdfLink | replace(r/^\[.*\]/, "")}}{% endif %}{% endif %})
```
{% elif annotation.colorCategory == "Yellow" %}
```ad-detail
{{annotation.annotatedText}}({% if pdfLink %}{% if citeKey %}[{{citeKey}}]{% elif citationKey %}[{{citationKey}}]{% else %}[Link]{% endif %}{% if annotation.attachment.desktopURI and annotation.page %}({{annotation.attachment.desktopURI | replace("select", "open-pdf")}}?page={{annotation.page}}){% else %}{{pdfLink | replace(r/^\[.*\]/, "")}}{% endif %}{% endif %})
```
{% elif annotation.colorCategory == "Red" %}
```ad-todo
- [ ] {{annotation.annotatedText}}({% if pdfLink %}{% if citeKey %}[{{citeKey}}]{% elif citationKey %}[{{citationKey}}]{% else %}[Link]{% endif %}{% if annotation.attachment.desktopURI and annotation.page %}({{annotation.attachment.desktopURI | replace("select", "open-pdf")}}?page={{annotation.page}}){% else %}{{pdfLink | replace(r/^\[.*\]/, "")}}{% endif %}{% endif %})
```
{% endif %}{% endif %}{% if annotation.comment %}{{annotation.comment}}{% endif %}{% endif %}{% endfor %}

这个模板有几个比较有意思的地方

  1. 元数据单独管理,可以方便迁移,本地链接全部存在元数据中。正文中不存在本地链接,直接复制到别的地方也可以正确的跳转
  2. 它的front-matter部分我直接按照Hexo博客模板给出,这样不仅可以更加方便的管理元数据,还可以让我直接复制粘贴到Hexo当作博文发布
  3. 搭配admonition使用可以实现贴纸效果,笔记一目了然,当然如果不喜欢也可以简化{% for annotation in annotations %}里面的实现

下面给一些导入之后的效果,每次阅读完文献、整理之后,就形成自己的知识。