Zotero+Obsidian+坚果云多设备同步科研工作流
本文简介:
本文介绍了通过Zotero和Obsidian结合打造文献与笔记同步系统,详细说明了在PC端和移动端的配置方法,包括Zotero文献同步、Obsidian笔记同步、Markdown模板生成与软链接的使用,以及移动端Zoo for Zotero与Xodo的批注同步方法。
相关链接 / 参考文献:
前言
Zotero工于文献管理,可以批注文献、分类管理文献、RSS订阅文献、批量从网页抓取文献及附件,Obsidian工于笔记整理和Idea梳理,并且有成熟的笔记社区。两者结合势必有无可匹敌的优势。下面的工作流建立还在初级阶段,参考了不少博客和教程,后续有改进方案会继续更新。教程使用的移动端是华为,其他安卓端同理(配置过程更方便)。
0 准备材料
-
Zotero6(Zotero7有些插件还没适配,就算了),注册账号,以及下载安装下面的这些插件
-
zotero-pdf-translate(划词划句翻译,不一定比翻译软件好用,但是方便)
-
mdnotes(自动生成md笔记模板,obsidian联动必备)
-
jasminum(也叫茉莉花,自动识别中文文献数据)
-
zotero-doi-manager(获取doi,但是好像不太好用?)
-
zotero-better-bibtex
-
-
Obsidian
-
坚果云(有会员更好,没会员也没关系),PC端和安卓端
-
Zoo for Zotero安装包(APK文件,用于安卓平板端同步管理Zotero文献)
-
xodo安装包(APK文件,挺好用的纯PDF阅读器,用于安卓平板端批注文献)
1 建立文献同步和笔记同步(PC端)
1.1文献同步
文献同步通过Zotero设置完成
首先需要打开zotero的首选项设置,点击同步选项卡,登录账号
然后,文献同步的方式选择“WebDAV",填写从坚果云获取的同步用的网址、用户名和密码。如图设置。点OK。
1.2笔记同步
使用Obsidian建立一个笔记仓库(Vault),将该仓库文件夹设置为使用坚果云同步,就实现了对笔记的同步。
2 配置markdown笔记生成模板
打开mdnotes首选项设置
如下图配置
导出目录就是笔记生成保存的目录,在生成的时候还会再次询问你保存在该目录下的什么位置,因此,设置为Obsidian的仓库根目录。
模板目录就是笔记模板保存的目录,一般可以在仓库根目录下建立一个Template文件夹,把mdnotes的模板保存在这里。注意模板文件名不能随意修改,必须是Mdnotes Default Template.md。
模板的内容可以参考下面这个(其中的日期建议删除,会影响obsidian中的关系图谱显示):
***
#### Metadata
- 作者::{{author}}
- 作者机构::
- 日期::{{date}}
- 出处::{{publicationTitle}}
- 标签:: {{tags}}
- 备注::
- pdf::{{pdfAttachments}}
- zotero::{{localLibrary}}
***
## Abstract
{{abstractNote}}
## Inroduction
## Experimental
## Results and discussions
## Conclusions
其中{{}} 表示占位符,符号***之间的就是文献的元数据,这些元数据可以由DataView插件用表格展示。Mdnotes会为每篇文献自动填入正确的元数据。
设置好后,对着文件条目右键,并点击”Mdnotes——>创建完整的导出笔记“,选择保存的笔记仓库下位置,就可以获得一个带模板的笔记文件。
注意,这个笔记文件保存在Obsidian笔记仓库的目录下,因此由Obsidian进行管理。此时,用Obsidian打开这个笔记(或者在Zotero中双击也可以用默认应用打开markdown文件),效果如下
可以看到,mdnotes自动生成了很多笔记需要的元数据,比如标签,可以通过obsidian的关系图谱找到多篇论文之间的关系(作者也可以);
标签可以自己额外加,但是能自动生成就很舒服
点击笔记中的 local library 链接就可以跳转到zotero中查看文献。pdf链接则是直接用zotero打开pdf并阅读。
2.1mdnotes 笔记软链接建立
这一部分要解决的问题是,当不同设备之间的Obsidian笔记仓库路径不同时,如何保证mdnotes生成的笔记链接不失效的问题。如果你没有这个问题,可以跳过这个部分。
比如我在第一台电脑的笔记仓库在D盘下,而第二台电脑的笔记仓库在E盘下,那么我就需要给第二台电脑的笔记仓库建立一个软链接,并把这个软链接放到D盘下。此时,两台电脑的mdnotes配置是一样的,目录都指向D盘下的obsidian笔记仓库(或者是仓库软链接)。注意,软链接不是快捷方式。
软链接的建立方式如下:
首先打开windows的开发人员模式
然后按WIN+R
快捷键,输入cmd
打开命令提示符,输入下面的命令(这里假设,mdnotes设置的目录为 D:\Documents\Obsdian\Research
,而我实际obsidian的笔记仓库目录为 E:\Documents\Obsdian\Research
,根据自己实际情况替换就行)
mklink /d D:\Documents\Obsdian E:\Documents\Obsdian
就会在 D:\Documents
文件夹下建立一个指向 E:\Documents\Obsdian
文件夹的软链接,不同设备之间不同路径生成的笔记文件也能正常访问了。
可以看到,软链接的文件类型不是 快捷方式
,而是 文件夹
。
完成了上面这些步骤,已经可以实现多个PC端的文献和笔记同步了。下面介绍结合平板端(移动端)的同步工作流。
3 移动端实现文献同步与批注
首先安装好xodo软件和Zoo for Zotero软件(你问我为什么应用商店搜索不到?问就是要google play下载,但是可以百度搜搜安装包)。
到Zotero生成同步权限,在这个页面:
把所有权限开到最高(可读可写),在最下面点save key:
然后会有一段代码弹出来,复制,一定要复制,只会显示这一次,没有复制就只能重新生成了。然后打开Zoo for Zotero,选择手动输入key,将这段代码粘贴
完成之后就能进入Zoo for Zotero了,点右上角的三个点,选择Settings
,打开Use webdav to access attachments
,然后点同页面的Configure Webdav
,填写WebDAV的信息,即可开始同步。
同步好后,就可以点击文献进行查看了。
然后使用xodo打开pdf附件进行批注,批注好后将修改上传同步,此时可以在PC端看到平板端的(手写)批注。
关于平板端看mdnotes笔记
如何链接笔记和还没研究明白。但是笔记可以通过FolderSync软件使用WebDAV同步到移动端的Obsidian中。
4 快速复制Zotero条目/PDF附件超链接
此处参考了快速复制Zotero项目的链接 | Ciaran Chen 的博客的方法,并加以改进。
原始方法为:
{
"translatorID": "2de2b1a5-5725-494c-9224-5781cdf9b7ef",
"label": "Markdown ZotSelect",
"creator": "ciaranchen",
"target": "md",
"minVersion": "3.0",
"maxVersion": "",
"priority": 100,
"inRepository": true,
"translatorType": 2,
"lastUpdated": "2021-09-21 07:46:51"
}
function doExport() {
// code is edited from https://gist.github.com/nschneid/3134386
var item;
while (item = Zotero.nextItem()) {
let url = 'zotero://select/items/';
var library_id = item.libraryID ? item.libraryID : 0;
var titleS = (item.title) ? item.title.replace(/&/g, '&').replace(/"/g, '"') : "(no title)";
var pubTitleS = (item.publicationTitle) ? item.publicationTitle.replace(/&/g, '&').replace(/"/g, '"') : "";
if (!pubTitleS && item.type) pubTitleS = '[' + item.type + ']';
url += library_id.toString() + item.key.toString();
let title = titleS + ' ' + ((item.conferenceName) ? item.conferenceName : pubTitleS);
Zotero.write(`[${title}](${url})`);
}
}
将上述代码保存为Markdown ZotSelect.js
并将这个文件放置在Zotero数据文件夹(可在 Zotero首选项 -> 高级 -> 数据存储位置 中查看)的translators文件夹下,重启Zotero,在首选项中配置导出格式为Markdown ZotSelect
。然后就可以通过快捷键Ctrl+Shift+C
复制超链接。这种方式得到的超链接的形式如下:
[Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning arXiv:1801.07606 [cs, stat]](zotero://select/items/0IFP9R7CA)
原始方法只可以链接到Zotero的目录中,不能快速打开对应的PDF附件。
将上述代码修改为:
{
"translatorID": "2de2b1a5-5725-494c-9224-5781cdf9b7eg",
"label": "Markdown ZotSelectPDF",
"creator": "alen",
"target": "md",
"minVersion": "3.0",
"maxVersion": "",
"priority": 100,
"inRepository": true,
"translatorType": 2,
"lastUpdated": "2025-01-18 08:00:00"
}
function doExport() {
var item;
while (item = Zotero.nextItem()) {
let url = '';
let library_id = item.libraryID ? item.libraryID : 0;
// Check if the item has attachments
if (item.attachments && item.attachments.length > 0) {
// Find the first PDF attachment
let pdfAttachment = item.attachments.find(att => att.contentType === "application/pdf");
if (pdfAttachment) {
url = `zotero://open-pdf/library/items/${pdfAttachment.key}`;
}
}
// Fallback to zotero://select if no PDF is found
if (!url) {
url = `zotero://select/items/${library_id}_${item.key}`;
}
let titleS = (item.title) ? item.title.replace(/&/g, '&').replace(/"/g, '"') : "(no title)";
let pubTitleS = (item.publicationTitle) ? item.publicationTitle.replace(/&/g, '&').replace(/"/g, '"') : "";
if (!pubTitleS && item.type) pubTitleS = '[' + item.type + ']';
let title = titleS + ' ' + ((item.conferenceName) ? item.conferenceName : pubTitleS);
Zotero.write(`[${title}](${url})`);
}
}
相同的,保存为Markdown ZotSelectPDF.js
,放置到上述文件夹下,重启,修改首选项中导出的条目格式为Markdown ZotSelectPDF
,然后就可以通过快捷键Ctrl+Shift+C
复制超链接。这种方式得到的超链接的形式如下:
[HumanPlus: Humanoid Shadowing and Imitation from Humans 8th Annual Conference on Robot Learning](zotero://open-pdf/library/items/W7V7N8RU)
修改后的代码如果找到 PDF 附件就直接打开PDF附件,如果找不到则仍然只链接到Zotero的条目目录。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~