html Global site tag (gtag.js) - Google Analytics  Organizing Research Literature with Obsidian and Zotero: Zotero Integration (Legacy)

ObsidianとZoteroで文献整理:Zotero Integration版

Introduction

Zotero is excellent for collecting and reading papers, but organizing information across multiple papers のはやや苦手です。 そこでZoteroのノート(アノテーション)をObsidianへ取り込み、Dataviewで タグや年で一覧テーブル化 することで、 研究の流れや論文同士の関係をまとめやすくします。

This is the legacy version

this articleではZotero 8 + Zotero Integrationを使ったPrevious workflowのワークフローを紹介しています。Current workflowはZotero 10 + ZotLitを使った方法へ移行しています。最新の設定については this article for details.

TL;DR (Workflow)
  1. Import papers into Zotero (including PDFs)
  2. Annotate PDFs and create a Zotero note
  3. Generate literature notes in Obsidian with Zotero Integration
  4. Use Dataview to display tag-filtered tables inside review notes
Contents
Recommended setup (minimum)
What is Obsidian?

ObsidianはMarkdown形式でノートを取ることができるオープンソースのソフトウェアです。Markdownエディタとは違い、Markdown形式で書かれたノートをお互いにthis linkさせることにより関連付けて知識を整理することができます。

同様のノート・アプリにNotion、EverNoteやGoodNoteなどがありますが、Obsidianはローカルにデータを保存することができます。また汎用性の高いMarkdown形式で記述するので、ノート・アプリがなくても通常のテキスト・エディタやブラウザで表示させることができます。

ZoteroとObsidianを連携させて文献整をする

Previous workflowZoteroで文献管理の記事を書きましたが、I use Zotero to manage references and export Zotero notes into Obsidian, where they form a literature database for organizing information across papers. Zotero is excellent for managing individual references, while Obsidian complements it by making cross-paper organization easier.

Zotero/Obsidian workflow
  1. In Zotero
    1. 文献のPDFをウェッブサイトから取り込む。
    2. Annotate the PDF.
    3. Create a Zotero note.
    4. Add tags.
  2. In Obsidian
    1. Import the reference metadata and create a literature note.
    2. Edit the literature note as needed; for example, add a two- or three-line summary for table display.
    3. Filter literature notes and display them in a table.

写真は”ProstateCancer", "MRI", "DL", "WeaklySupervisedLearning"というタグから抽出した文献ノートをテーブルとして出版年・月に並べて表示させたものです。テーブルの情報を元にこれまでの研究の流れや論文の相互関係などの知識を整理しやすくなります。テーブルはマークダウンのノートに埋め込まれているので、その前後に自分のノートを書き込むことができます。テーブルにはそれぞれの文献ノートへのthis linkが埋め込まれているので、クリックするとその文献ノートに飛ぶこともできます。テーブル自体の項目の編集も自由度が高く、例えばSynopsisやRatingは私が論文ノートに追加した内容を反映しています。

Zotero setup

For Zotero installation, configuration, plugins, PDF annotation, and creating notes, see this article for details. Better BibTeX is required on the Zotero side for this workflow.

Here I cover only the settings particularly important for exporting and saving notes.

Removing quotation marks when saving notes

Saved notes surround each highlight with quotation marks. To remove them:

Preference/Advanced/Config Editor
extensions.zotero.annotations.noteTemplates.highlight を検索。

Edit the setting and add the highlighted option as shown below.

<p>{{highlight quotes='false'}} {{citation}} {{comment}}</p>

Each annotation also includes a citation such as “Cai et al. 2022 p2.” You can hide these by opening the note menu and selecting “hide annotation citation.”

Managing tags

In this older workflow, I avoided spaces in tags used in Obsidian. Replace spaces with underscores or use CamelCase (for example, Prostate_Cancer or ProstateCancer rather than Prostate Cancer). Editing tags from Zotero's tag list applies the change across references.

Downloading Obsidian

Obsidianは website to download it.

My environment and versions

My current environment is:

Create an Obsidian vault and prepare folders like the following:

Vault
  ├── Project 1
  ├── Literature
  │         └── Inbox      (literature notes)
  ├── Templates            (templates)
  │         └── Scripts    (scripts for attaching images)
  └── Attachments          (images)
Obsidian setup and plugin installation

Open Obsidian Settings from the gear icon and enable Community Plugins.

Search Browse under Community Plugins and install the following plugins:

After installation, configure each plugin from Obsidian Settings.

Zotero Integration setup

Zotero Integration setupは以下の通りです。

Import Format
Name           (name shown in the Command Palette; another name is fine)
  Import note from zotero
Output Path        (output folder and filename pattern)
  Literature/Inbox/{{date | format("YYYY-MM")}} {{creators[0].lastName}} {{creators[0].firstName[0]}}.md
Image Output Path   (image output folder)
  Attachments/{{date | format("YYYY-MM")}} {{creators[0].lastName}} {{creators[0].firstName[0]}}/
Template        (template file)
  Template/Zotero_Template.md

The text below is the template. Save it as Zotero_Template.md in the Templates folder.

---
category: literaturenote
tags:
{% for t in allTags.split(",") -%}
  - {{ t | trim | replace('#','') }}
{% endfor -%}
citekey: {{citekey}}
rating:
---
*{{publicationTitle}}*
{{title}}
# Summary

> [!My note]
> Synopsis::
# Methods

# Results
{% set annots = annotations %}
{%- for annot in annots -%}
{% if annot.type == "image" %} ![[{{annot.imageRelativePath}}]]
{% endif %}{% endfor %}

## PDF
{%- for attachment in attachments | filterby("path", "endswith", ".pdf") %}
[{{attachment.title}}](file://{{attachment.path | replace(" ", "%20")}}) {%- endfor -%}.
## Abstract
{%- if abstractNote %}
{{abstractNote}}
{%- endif -%}.
## Metadata
{% for type, creators in creators | groupby("creatorType") -%}
{%- for creator in creators -%}
**{{"First" if loop.first}}{{type | capitalize}}**::
{%- if creator.name %} {{creator.name}}
{%- else %} {{creator.lastName}}, {{creator.firstName}}
{%- endif %}
{% endfor %}
{%- endfor %}
**Title**:: {{title}}
**Year**:: {{date | format("YYYY-MM")}}
**Citekey**:: {{citekey}} {%- if itemType %}
**itemType**:: {{itemType}}{%- endif %}{%- if itemType == "journalArticle" %}
**Journal**:: *{{publicationTitle}}* {%- endif %}{%- if volume %}
**Volume**:: {{volume}} {%- endif %}{%- if issue %}
**Issue**:: {{issue}} {%- endif %}{%- if itemType == "bookSection" %}
**Book**:: {{publicationTitle}} {%- endif %}{%- if publisher %}
**Publisher**:: {{publisher}} {%- endif %}{%- if place %}
**Location**:: {{place}} {%- endif %}{%- if pages %}
**Pages**:: {{pages}} {%- endif %}{%- if DOI %}
**DOI**:: {{DOI}} {%- endif %}{%- if ISBN %}
**ISBN**:: {{ISBN}} {%- endif %}{%- if desktopURI %}
**DesktopURI**:: [zotero-link]({{desktopURI}}){%- endif %}

> **Related**:: {% for relation in relations | selectattr("citekey") %} [[@{{relation.citekey}}]]{% if not loop.last %}, {% endif%} {% endfor %}

> {%- if markdownNotes %}
> {{markdownNotes}}{%- endif -%}.
Dataview setup

No special Dataview settings are required for this example.

Using Zotero Integration

Before importing into Obsidian, prepare a Zotero note. For testing, include an image and a few Zotero tags.

Import the Zotero note as follows:

  1. Open the Command Palette (Command/Ctrl-P), type Zotero Integration, and select “Import note from zotero.”
  2. Search by author or other terms and select the reference.

Confirm that the literature note is saved in Obsidian's Literature/Inbox folder.

The top of the literature note is frontmatter, where metadata such as tags is stored. Confirm that Zotero tags were imported. I use rating to record the importance of a paper.

Next come the journal name and title.

その次にSummaryとSynopsis, Methods, Results のセクションが続きます。Results以外は空欄になっています。Zoteroから取り込んだノートはファイルのConclusion添付されていますが、PDFからのアノテーションそのままで読みにくいので、ここにコピーしてマークダウン形式の読みやすい形にまとめています。SynopsisはSummaryよりさらに短く数行のまとめを書いています。後述しますが、Dataviewでテーブル形式にした時にSynopsisの内容を表示するようにしています。

Image annotations from Zotero are attached in Results and stored under Attachments in a folder corresponding to the note filename.

Next come the PDF link and abstract. The PDF link opens the locally stored PDF, although I generally open PDFs through Zotero instead. The abstract is imported from Zotero.

その下に論文のメタデータが続きます。著者名ほかジャーナル名などが続きます。メタデータのConclusionはDesktop URI:zotero-linkとありますが、これはローカルのZoteroの当該論文のページへのthis linkです。

The Zotero note is copied below the metadata. I copy material from it into Methods/Results and edit it into a more readable form.

Imported literature notes are first saved to Literature/Inbox. I used an Inbox because the same paper might be imported again after adding images or annotations in Zotero, and I wanted to avoid overwriting an existing edited note.

My filenames use publication year-month and author name, so two different papers can occasionally receive the same filename. Saving to Inbox first and then moving the note manually to Literature avoids accidental replacement; Obsidian can add a suffix when needed.

Another way to reduce filename collisions is to include the citation key, journal name, or part of the paper title in the filename. Adjust Output Path if you prefer a different naming scheme.

Using Dataview

Create a new Markdown note (for example, literature_review_prostateMR.md in Project1) and paste the following query.

```dataview
TABLE
title as Title,
FirstAuthor as Author,
Journal,
Synopsis,
rating as Rating
From "Literature"
AND #tag1
AND #tag2
SORT file.name ASC
```

Replace "tag1" and "tag2" with the tags you want to use as search criteria.

The Dataview query works as follows:

Conclusion

This workflow combines Zotero's strengths in reference management with Obsidian's flexibility for organizing information across multiple papers.

I originally referred to this article .

I initially wrote a user script to attach images, but shortly before publishing the article I found a simpler method on Reddit. I have kept this link as a reference in case you need to write your own user script.

Last updated: September 18, 2025

create block between images and footer