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的条目目录。

posted @   C-Alen  阅读(930)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~
- Gala
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.
  1. 1 Gala
  2. 2 Gala
  3. 3 Gala
  4. 4 Panorama X-Ray Dog
  5. 5 光亮 周深
点击右上角即可分享
微信分享提示