Zoteroは「文献を集めて読む」には強い一方で、 複数論文を横断して整理する のはやや苦手です。そこでZoteroのアノテーションをObsidianへ取り込み、BasesやDataviewを使って タグやメタデータから文献を一覧・フィルタリング することで、研究の流れや論文同士の関係をまとめやすくします。
2026年にZoteroのver10がリリースされました。それに伴い、今まで使っていたZotero 8 + Zotero IntegrationでのObsidianとの連携が使いにくくなりそうなので、Zotero 10 + ZotLitを使う方法へ移行しました。今回記事の内容を全面的に更新しています。
Zotero 8 + Zotero Integrationを使った旧ワークフローについては、 こちらの記事 を参考にしてください。
- Zoteroで論文とPDFを取り込む。
- Zotero上でPDFのアノテーションやタグ付けをする。
-
Obsidian上でZotLitを使って文献ノートを作成する。
- メタデータとタグはObsidian Propertiesへ取り込む。
- Summary、Methods、ResultsはObsidian側で編集する。
- Zoteroで新しいアノテーションを追加した場合は、ZotLitのUpdate literature noteで更新する。
- Obsidian BasesやDataviewを使って複数論文を横断して整理する。
- Obsidianとは
- ZoteroとObsidianを連携させるメリット
- 今回のアップデートで変更したこと
- Zotero側の準備(ZotLit Companion、Better BibTeX)
- Obsidian側の準備(フォルダ構成、プラグイン)
- ZotLitの設定
- Propertiesとタグの設定
- 文献ノートのテンプレート設定
- ZoteroのアノテーションをObsidianへ取り込む
- 文献ノートを更新する方法
- Obsidian BasesとDataviewで文献を整理する
- Zotero: ZotLit CompanionとBetter BibTeXを導入する。
- Obsidian: Community PluginsでZotLitとDataviewを導入する。
ObsidianはMarkdown形式でノートを管理することができるソフトウェアです。Markdownエディタとは違い、Markdown形式で書かれたノートをタグやPropertiesを付けたりすることによりお互いにリンクさせて関連付けて知識を整理することができます
同様のノート・アプリにNotion、EverNoteやGoodNoteなどがありますが、Obsidianはローカルにデータを保存することができます。また汎用性の高いMarkdown形式で記述するので、ノート・アプリがなくても通常のテキスト・エディタやブラウザで表示させることができます。また、Community Pluginsによって機能を拡張できるのもObsidianの特徴です。
Zoteroは論文のメタデータやPDFを保存し、PDFを読んでアノテーションを付けたり、タグを使って文献を管理したりするのに便利です。一方、複数の論文を横断して内容を比較したり、研究の流れや論文同士の関係をまとめたりする用途では、Obsidianのようなノート・アプリの方が柔軟に整理できます。
そこで私は、 Zoteroを文献とPDFを管理・閲覧する場所、Obsidianを文献の内容を整理して自分のノートを作る場所 として使い分けています。Zoteroに保存されている論文のメタデータ、タグ、Abstract、PDFのアノテーションなどをZotLitを使ってObsidianへ取り込み、Obsidian側ではSummary、Methods、Resultsなどを追記します。
さらに、Zoteroから取り込んだメタデータやタグをObsidianのPropertiesとして保存することで、BasesやDataviewを使って複数の文献を一覧表示したり、タグや研究テーマごとにフィルタリングしたりできます。Zoteroで1本ずつ論文を読み、Obsidianで複数の論文を横断して整理する、という役割分担にしています。
-
Zotero上での流れ
- 文献のPDFをウェブサイトから取り込む。
- PDFにアノテーションをつける。
- タグを設定する。
-
Obsidian上での流れ
- Zoteroから文献ノートと文献のメタデータを取り込み文献ノートを作成する。
- 必要に応じて文献ノートを編集する。例えばテーブルに表示させる2−3行のサマリーを追加する。
- 文献ノートをフィルタリングしてテーブルので表示する。
写真は”ProstateCancer", "MRI", "DL", "WeaklySupervisedLearning"というタグから抽出した文献ノートをテーブルとして出版年・月に並べて表示させたものです。テーブルの情報を元にこれまでの研究の流れや論文の相互関係などの知識を整理しやすくなります。テーブルはマークダウンのノートに埋め込まれているので、その前後に自分のノートを書き込むことができます。テーブルにはそれぞれの文献ノートへのリンクが埋め込まれているので、クリックするとその文献ノートに飛ぶこともできます。テーブル自体の項目の編集も自由度が高く、例えばSynopsisやRatingは私が論文ノートに追加した内容を反映しています。
現在は文献の一覧表示にObsidian標準のBasesとDataviewの両方を使用しています。 それぞれの使い分けについては後半で説明します。
Zoteroのダウンロード、基本的な設定、PDFの取り込みやアノテーションの方法については こちらの記事 を参考にしてください。ここではZoteroとObsidianを連携するために必要な設定だけを説明します。
ZotLitでは、Obsidian側のZotLitと連携するために、Zotero側へ ZotLit Companion をインストールします。ZotLit Companionの配布ページから.xpiファイルをダウンロードします。
Zoteroの Tools → Plugins を開き、右上の歯車アイコンから Install Plugin From File... を選択します。ダウンロードした.xpiファイルを指定してZotLit Companionをインストールします。
私は文献ごとにcitation keyを使用しているため、
Better BibTeX
もインストールしています。 例えば、論文ごとに
Deng_2024
のようなcitation keyを作成し、ObsidianのPropertiesにも保存しています。
Better BibTeXはZotLitによるZoteroとObsidianの連携そのものには必須ではありませんが、citation keyを使用する場合には導入しておくと便利です。
文献の分類に使用するタグは主にZotero側で設定しています。ZotLitを使うと、ZoteroのタグをObsidianのPropertiesへ自動的に取り込むことができます。Zoteroではタグにスペースがあっても大丈夫ですが、ZoteroとObsidianの両方で同じタグを扱いやすくするため、CamelCaseなどにしてスペースを含まない方がおすすめです。
また、タグが増えてくると整理が難しくなるため、 階層タグ を使用しています。例えばML/DL、ML/Radiomicsなどです。関連するタグをまとめて管理できるだけでなく、ObsidianのBasesなどで文献を検索・フィルタリングする際に便利です。
Obsidianは ホームページ からダウンロードできます。
私の使用環境は以下の通りです。
- Mac: Tahoe 26.6.2, Obsidian: 1.13.7, Zotero: 10.0.1
- Windows: Windows 11, Obsidian: 1.13.7, Zotero: 10.0.1
Obsidian本体が最新版でも、Installer versionが古い場合があります。ZotLitが正常に動作しない場合はObsidianのInstaller versionも確認し、古い場合はObsidianのホームページから最新版をダウンロードしてインストールしてください。
ObsidianからVaultを適当な名前で作って、その中に下準備として以下のようにフォルダを作ってください
Vault
├── Project 1
├── Literature (論文ノートが保存されます)
├── Templates (テンプレートを保存します)
└── Attachments (画像が保存されます)
必要なプラグ・インは以下の3つです。
- ZotLit
- Dataview
- Bases(Core Plugin)
Obsidianの設定は左下の歯車アイコンをクリックすると表示されます。設定画面のCommunity pluginsのタブでRestricted Modeを解除してプラグ・インが使えるようにします。ZotLitとDataviewはCommunity pluginsのbrowseから検索してインストールします。
BasesはCore Pluginなので、Core Pluginのタブから有効化するだけで使えるようになります。
ZotLitはZoteroとObsidianを連携して文献ノートを作成・更新するために使用します。
DataviewとBasesはPropertiesやタグを利用して、複数の文献ノートを検索・一覧表示するために使用します。現在は両方を使用していますが、それぞれの使い分けについては後半で説明します。
ZotLitをインストールして有効化すると、ObsidianのSettingsにZotLitの設定項目が追加されます。 ここからZoteroとの接続、文献ノートや画像の保存先、Properties、テンプレートなどを設定します。
ZotLitの設定は大きく2つに分かれます。Zoteroとの接続、保存先、Propertiesなどの基本的な項目は Settings → Community plugins → ZotLit から設定します。一方、文献ノートのファイル名や本文の構成、アノテーションの表示方法などは、ZotLitから作成した Templateファイル を編集して設定します。まずSettingsから基本設定を行い、その後Templateファイルを編集して文献ノートの形式を整えていきます。
まず Settings → Community plugins → ZotLit を開いて基本設定を行います。Zotero database、文献ノートや画像の保存先、Propertiesなどを設定します。
Zotero database
ZotLitはZoteroのデータベース(
zotero.sqlite
)から 文献のメタデータ、タグ、アノテーションなどを読み込みます。通常はZoteroのprofileからデータベースの場所が自動的に認識されるので、正しい
zotero.sqlite
のパスが表示されていることを確認します。
WindowsとMacではZotero databaseの保存場所が異なりますが、それぞれのコンピュータで自動的に認識されるため、 通常は手動でパスを指定する必要はありません。
Literature note folder
文献ノートの保存先は
Literature
に設定します。ZotLitで新しく作成した文献ノートはこのフォルダに直接保存されます。
Attachments → Attachment folder
PDFから取り込んだ画像アノテーションの保存先は
Attachments
に設定します。この設定が空欄の場合、画像のリンクだけが作成されて 画像ファイルが正しく保存されないことがあるので注意してください。
Templates → Template folder
Templateファイルの保存先は
Templates
に設定します。後述する文献ノートのファイル名、本文、アノテーションの表示方法などを変更するために、ZotLitのTemplateファイルをこのフォルダに作成します。
Templates → Frontmatter
ここではZoteroから取得したメタデータのうち、ObsidianのPropertiesとして保存する項目を設定します。設定項目はProperty名、Language、Expression、Merge strategyの4つです。今回設定する項目ではLanguageはすべて
Liquid
を使用します。
Expressionには、ZoteroのどのメタデータをPropertiesへ取り込むかを指定します。 Merge strategyは、Zoteroから取得した値を既存のPropertiesへ反映する際のルールです。 Replace では既存の値をZoteroの値で置き換え、 Append arrays では既存の配列を残したまま新しい値を追加します。 Keep existing では既存の値を保持します。
| Property | Expression | Merge strategy |
|---|---|---|
| category | "LiteratureNote" |
Keep existing |
| title | zt.title |
Replace |
| Journal | zt.publicationTitle |
Replace |
| FirstAuthor | zt.creators[0].given | slice: 0, 1 | prepend: " " | prepend: zt.creators[0].family |
Replace |
| Year | zt.date | date: "%Y-%m-%d" |
Replace |
| doi | zt.DOI |
Replace |
| zotero-link | zt.backlink |
Replace |
| citekey | zt.citationKey |
Replace |
| tags | zt.tags | obsidian_tag |
Append arrays |
tags
だけはMerge strategyを
Append arrays
にしています。Zoteroから取り込んだタグに加えてObsidian側でタグを追加することがあるためです。Append arraysにしておくと、文献ノートを更新した際にもObsidian側で追加したタグを残すことができます。また、
obsidian_tag
を使うことで、ZoteroのタグをObsidianで使用できる形式に変換して取り込みます。
Zotero-linkはこの論文のZoteroへのリンクです。PDFの閲覧やアノテーションの追加などZotero上で作業することがあるので便利です。 このほかに
zotero-key
というPropertyが自動的に追加されます。これはZotLitがObsidianの文献ノートとZoteroの文献を対応付けるための識別子で、Frontmatterの設定から変更することはできません。
先ほど指定したTemplateフォルダに指定した
Templates
フォルダにいくつかの.mdファイルが保存されています。
ZotLitでは文献ノート全体を1つのTemplateで作るのではなく、ファイル名、文献ノートの基本構造、ZotLitが更新する部分、PDFアノテーションの表示方法などが別々のTemplateに分かれています。今回以下の4つを編集します。コード・ボックスの内容を直接.mdに貼り付けて使います。
zotlit-filename.liquid.md
文献ノートのファイル名を指定します。
{{ zt.date | date: "%Y-%m" }} {{ zt.creators[0].family }} {{ zt.creators[0].given | slice: 0, 1 }}{% suffix %}
zotlit-note.liquid.md
新しい文献ノートを作成するときの基本構造を指定します。
{% raw %}{% if zt.publicationTitle %}*{{ zt.publicationTitle }}*
{% endif %}{{ zt.title }}
# Summary
> [!note] My note
> Synopsis::
# Methods
# Results
{% render "content" with zt as zt %}{% endraw %}
zotlit-content.liquid.md
ZotLitによって更新される部分(managed region)です。
{% raw %}{% if zt.abstractNote %}
## Abstract
{{ zt.abstractNote }}
{% endif %}
## Metadata
**Authors**:: {% for creator in zt.creators %}{% if creator.role == "author" %}{{ creator.family }}, {{ creator.given }}{% unless forloop.last %}; {% endunless %}{% endif %}{% endfor %}
{% if zt.annotations.size > 0 %}
## Annotations
{% for annotation in zt.annotations %}
{% render "annotation" with annotation as zt %}
{% endfor %}
{% endif %}{% endraw %}
zotlit-annotation.liquid.md
ZoteroのPDFアノテーション部分の表示形式を設定します。
{% raw %}{{ zt.imgLink | embed }}{{ zt.text }}
{% if zt.comment %}
{{ zt.comment }}
{% endif %}{% endraw %}
この設定では、Summary、Methods、Resultsは自分で編集する部分として文献ノートに作成し、Abstract、Metadata、AnnotationsはZotLitが管理するmanaged regionとして作成します。
Zoteroで新しいアノテーションを追加したあとに後述するアップデートを実行すると、managed regionだけが更新されます。そのため、Summary、Methods、Resultsに自分で追加した内容はそのまま残ります。
また、ファイル名Templateの
{% raw %}{% suffix %}{% endraw %}
によって、同じファイル名がすでに存在する場合には自動的にsuffixが追加されるため、 既存の文献ノートが上書きされるのを防ぐことができます。
ZotLitの設定は終わったので、文献ノートを作って確認してみましょう。文献ノートの新規作成と更新は、Zotero側とObsidian側のどちらからでも実行できます。
ワークフローによって使い分けるのが良いと思います。Zoteroで論文を読んでいるときや複数の文献をまとめて処理するときはZotero側から、Obsidianで文献ノートを開いて編集しているときはObsidian側から実行するようにしています。
Zotero側から操作する場合は、対象となる文献またはCollectionを選択して右クリックすると、ZotLitのメニューが表示されます。主に以下の2つのコマンドを使用します。
- Create or update literature note :文献ノートを新規作成、または既存の文献ノートを更新します。
- Update literature note metadata :既存の文献ノートのメタデータだけを更新します。
複数の文献を選択してまとめて処理することもできるため、複数の文献ノートを作成するときや、複数のPDFにアノテーションを追加したあとにまとめて更新するときに便利です。
Obsidian側から操作する場合は、Command Palette(Command/Ctrl-P)を開いて
ZotLit
と入力します。
新しい文献ノートを作成する場合:
- Open literature note quick switcher を選択します。
- 著者名などを入力して文献を検索し、対象の文献を選択します。
既存の文献ノートを更新する場合:
- Update literature note を選択します。
- 検索画面から対象の文献を選択します。
Obsidian側のQuick Switcherでは検索結果から対象の文献を選ぶ必要があります。 多くの場合はZotero側から実行する方が分かりやすいと思いますが、ワークフローに合わせて両方試してみてください。
ZotLitで文献ノートを作成すると、ノートの先頭にはPropertiesが表示されます。 Zoteroから取り込んだタイトル、第一著者、出版日、雑誌・学会名、DOI、citation key、zotero-link、タグなどが保存されています。ratingは自分で論文の重要度を入力するために使用しています。
Propertiesの下には雑誌・学会名と論文タイトルを表示しています。その下のSummary、Methods、Resultsは自分で編集する部分です。PDFから取り込んだアノテーションのうち必要な部分をAnnotationsからコピーし、Markdown形式で整理しています。
その下のSummary、Methods、Resultsは自分で編集する部分です。PDFから取り込んだアノテーションはそのままでは読みづらいため、必要な部分をAnnotationsからSummary、Methods、Resultsへコピーし、Markdown形式で整理しています。SynopsisはSummaryよりさらに短く数行のまとめを書いています。後述しますが、Dataviewでテーブル形式にした時にSynopsisの内容を表示するようにしています。
Abstract以下はZotLitが管理するmanaged regionです。前述の文献ノートのアップデートを実行すると、この部分だけが更新されます。Summary、Methods、Resultsに自分で書いた内容は変更されません。
Metadataには著者検索用に全著者名だけ残しています。
AnnotationsにはZoteroのPDFでハイライトした文章や画像が直接取り込まれます。
新しいマークダウンのノートを作って(例えばProject1のフォルダにliterature_review_prostateMR.md)、以下のテキストを貼りつけてください。
```dataview
TABLE
title as Title,
FirstAuthor as Author,
Journal,
Synopsis,
rating as Rating
From "Literature"
AND #tag1
AND #tag2
SORT file.name ASC
```
"tag1","tag2"は検索条件になるようなタグに変更してください。
```dataviewのの書き方は:
- Table: テーブルとして表示。(Listとしての表示も可能)
- title, FirstAuthor, ...はテーブルのコラムの項目にいれる変数名。as AuthorはFirstAuthorの変数に対するコラム名の表示
- Fromはフォルダ名やタグのフィルタ。AND, ORとカッコが使える
- 他にWHERE contains(rating, "3")のようにフロントマターなどの項目からの検索もできる。
- SORT file.name ASC:ファイル名でソート
以前はZotero 8 + Zotero Integrationを使っていました。 今回Zotero 10 + ZotLitへ移行したことで、文献ノートの作成・更新方法もいくつか変更しました。
| 以前 | 現在 |
|---|---|
| Zotero Integration | ZotLit |
| ZoteroでAnnotation Noteを作成 | PDF annotationを直接取り込む |
| Literature/Inboxへ一度保存 | Literatureへ直接保存 |
| 同名ファイルの上書きをInboxで回避 | {% raw %}{% suffix %}{% endraw %}で自動的に回避 |
| annotation追加時に再import | Update literature note |
| metadataを本文中のDataview fieldとして保存 | Propertiesとして保存 |
| Dataview中心 | Bases + Dataview |
Obsidianで複数の文献ノートを一覧表示する方法として、現在は Dataview と Bases の両方を使用しています。BasesはObsidian標準のCore Pluginで、Propertiesを使って文献をフィルタリングしたり、並べ替えたりする操作をGUIから比較的簡単に行えます。 一方、DataviewはCommunity Pluginですが、queryを直接記述することで、より複雑な検索や表示を行うことができます。
新しい文献ノートではメタデータの多くをPropertiesへ移したため、単純な文献一覧やタグによるフィルタリングについてはBasesで十分なことが多くなりました。例えば、最近追加した文献だけを表示するBaseを作成して、新しく取り込んだ論文を確認するために使用しています。
```base
filters:
and:
- file.inFolder("Literature")
- category == "LiteratureNote"
views:
- type: table
name: Recent
order:
- file.name
- Journal
- tags
- rating
sort:
- property: Journal
direction: ASC
- property: file.ctime
direction: DESC
limit: 10
```
Basesの大きな利点は、テーブル表示した状態からPropertiesの内容を直接編集できることです。例えばRatingやタグなどを一覧を見ながら変更できます。Dataviewでは基本的に表示用のテーブルなので、値を変更する場合には元のMarkdownファイルを開いて編集する必要があります。
一方、現在もDataviewを残しています。一番大きな理由は、文献ノートの
Synopsis::
をPropertiesではなくSummaryの中に置いているためです。Synopsisはデータベース用のメタデータというよりも、論文を読んだあとに自分で書く短い要約なので、Propertiesへ移すよりSummaryの中に置く方が文献ノートとして自然だと考えています。Dataviewではこのようなinline fieldもそのままテーブルに表示できますが、Basesではinline fieldを直接扱うことができません。
また、Dataviewのテーブルでは内容の長さに応じて行の高さが変わるため、長めのSynopsisもそのまま表示できます。一方、Basesでは表示する行の高さが一定なので、内容が長い場合には全文が表示されないことがあります。文献reviewのようにSynopsisを一覧しながら読む用途では、現在のところDataviewの方が使いやすいと感じています。
そのため現在は、 Propertiesを中心とした文献の一覧・編集にはBases、Synopsisを含む文献reviewや複雑なqueryにはDataview という形で使い分けています。
ZoteroとObsidianを連携することで、Zoteroで論文を読み、Obsidianで複数の論文を横断して整理するworkflowを作ることができます。今回ZotLitへ移行したことで、Zoteroのアノテーションを直接取り込み、自分で編集したSummary、Methods、Resultsを残したまま文献ノートを更新できるようになりました。
また、文献のメタデータをPropertiesとして保存することで、Obsidian標準のBasesを文献管理にも利用できるようになりました。現在はDataviewとBasesを併用していますが、今後も実際に使いながらworkflowを調整していく予定です。
最終更新日:2026年9月10日