Zotero・Obsidian・Codex+Pandocで、論文サーベイから執筆・引用管理までつなぐ
Zotero・Obsidian・Codex(OpenAI Codex CLI)とPandocをつないで、論文サーベイから執筆・引用管理までを一つにする手順。Better BibTeXのcitekey設定や、引用が解決できないときの対処まで、実際の設定そのままに解説します。
前回の記事で、論文サーベイから執筆までを一本につないだ話をしました。今回はその続編。みんながいちばん気になるであろう「で、結局どうやってつないでるの?」に、手順でちゃんと答えます。
正直に言うと、ここがこの仕組みのいちばんの山場です。でも、だからこそ書く意味がある。環境によって細かいところは変わるので、「自分ならこうかな」と読み替えながらついてきてください。一緒に組んでいきましょう。
まず全体像:何を、どの子に任せる?
最初に役割分担だけ頭に入れておくと、このあと迷子になりません。ざっくりこんな分担です。
- Zotero:書誌情報とPDFの原本を管理する
- Better BibTeX:citekey と BibTeX を生成する
- Obsidian:文献ノートと論文草稿を管理する
- Codex:PDFの読解・要約・引用候補と活用アイデアの整理を行う
- Pandoc:引用表記と参考文献一覧を最終的に生成する
この仕組みの心臓部は、AIに引用情報を一から作らせないこと。書誌情報の出どころは、ぜんぶ Zotero に一本化します。ここだけは絶対にブレさせません。
1. 環境
- OS:macOS 26.5(Apple Silicon の Mac)
- Codex:OpenAI の Codex CLI(確認時点で v0.137.0)。ターミナルから起動します
- Pandoc:v3.9.0.2
ポイントは、Codex を Obsidian の Vault を作業ディレクトリにして起動していること。こうしておくと、Vault の中の文献ノートや草稿を、Codex がそのまま検索・閲覧・編集できるんです。これが地味に効きます。
2. Zotero から BibTeX へ
BibTeX の出力には Better BibTeX for Zotero(確認時点で v9.0.23)を使います。
citekey の生成規則はこう設定しています。
auth.lower + year
これで chen2023 や yamamoto2018 みたいな「第一著者の姓+出版年」のキーができます。同じ著者・同じ年の文献が複数あるときは、tabata2026a のように末尾に文字が付く、というわけ。シンプルで覚えやすいでしょ?
そして Better BibTeX の Auto Export をオンにして、ライブラリ全体を次のファイルへ勝手に書き出させています。
article/article.bib
Zotero で論文を足したり書誌情報を直したりすると、Vault の中の article.bib も自動で追従してくれます。**このファイルを、Obsidian と Pandoc が共通で見にいく“文献データベース”**にしている、ここがキモです。
3. BibTeX と Obsidian をつなぐ
Obsidian 側で使っているのは Zotero Integration プラグイン(Citations プラグインじゃないので、そこだけ注意!)。
Zotero から文献を取り込むと、citekey をそのままファイル名にした文献ノートができます。
article/{{citekey}}.md
たとえば citekey が chen2023 なら article/chen2023.md ができる感じ。ノートの中には、タイトル・著者・DOI・Abstract・Zotero へのリンク・PDFの注釈・AI要約なんかを詰め込んでいます。
そして草稿の中では、Pandoc Markdown の引用記法を使います。
DiffusionDet [@chen2023] が提案されている。
複数の研究 [@chen2023; @yang2013] が示している。
Zotero Integration が挿入してくれる引用候補も [@citekey] 形式にそろえています。こうすると、草稿の書き方と、あとで動かす Pandoc がピタッと噛み合うんです。
4. Codex に要約・整理してもらう
ここがいちばん楽しいパート。Codex には、おもに Zotero Integration が作った文献ノートと、Zotero に保存した PDF を読ませます。必要なら、関連する文献ノートや、書きかけの草稿も一緒に見せます。
PDF が手に入らない文献は Abstract だけで要約してもらうんですが、そのときは「全文を読んだフリ」をされると困るので、はっきり注記を残させます。
PDFが取得できなかったため、Abstractに基づく要約です。全文の詳細は含まれていません。
指示の出し方は、たとえばこんな感じ。そのままコピペで使えます。
article/chen2023.md に対応する論文PDFを確認してください。
以下を日本語で整理し、文献ノートの「## AI要約」に追記してください。
- 一言要約
- 研究の背景と目的
- 提案手法
- 使用データ
- 主要な結果。数値があれば明記する
- 研究の新規性
- 限界
- 自分の研究で引用できる点
- 自分の研究への活用アイデア
PDF本文で確認できない内容は推測しないでください。
Abstractしか確認できない場合は、そのことを明記してください。
citekey、DOI、著者名などの書誌情報は変更しないでください。
出力先は、その論文に対応する Obsidian 文献ノートの「AI要約」欄。
ここでこだわってるのが、ただ要約させて終わりにしないこと。「この論文のどの主張なら自分の論文で引用できる?」「手法や比較実験、考察にどう活かせる?」まで整理させちゃいます。この一手間があるから、文献がただの要約じゃなく“使える形”になるんです。
5. Pandoc で書き出す
ラストは Pandoc。Obsidian の Markdown 原稿・article.bib・投稿先に合わせた CSL ファイルの三つを渡して、引用表記と参考文献リストを一気に生成します。
まず Word へ出す基本形:
pandoc draft.md \
--citeproc \
--bibliography=article/article.bib \
--csl=path/to/style.csl \
-o output.docx
PDF で出したいときは、こう:
pandoc draft.md \
--citeproc \
--bibliography=article/article.bib \
--csl=path/to/style.csl \
--pdf-engine=lualatex \
-o output.pdf
引用スタイルは CSL ファイルで決まります。ここで一個ハマりやすいのが、Zotero Integration 側の CSL 設定と、Pandoc の CSL 設定はまったくの別物だということ。Zotero Integration に the-isme-journal を設定してても、Pandoc の出力を同じ見た目にするには、Pandoc を動かすときに対応する .csl を自分で指定しないとダメなんです。ここ、要注意。
※ 正直に白状すると、実際に使った Pandoc コマンド・出力形式・CSL は Vault に残していませんでした……。なので上のコマンドは、いまのファイル構成に合わせた基本例です。自分の投稿先の CSL に置き換えて使ってくださいね。
6. 最大の山場:citekey を一致させ続けること
ここが本題。つまずくのは、実はツール個々の使い方じゃないんです。Zotero・Obsidian・Pandoc の三者で citekey をズレさせないこと、これがいちばん難しい。
たとえば、いまの article.bib で DiffusionDet に付いてる citekey は chen2023。ところが昔のテスト原稿を見たら、こんな二種類が混ざってました。
[@chen2023]
[@chenDiffusionDetDiffusionModel2023]
後者はいまの article.bib にいないので、そのまま Pandoc を回すと「その引用、誰?」となって解決できません。これ、Better BibTeX の citekey ルールを途中で変えたときや、Zotero で著者名・出版年を直したときに、しれっと起きるんですよね。
ほかにも、わたしがハマったポイントを置いておきます(みんなは踏まないように!)。
- Better BibTeX の citekey 規則を変えると、既存の草稿の引用が壊れる
- Zotero の書誌情報を直すと、citekey も変わることがある
- citekey・文献ノート名・本文内の引用がずれる
- PDFがない文献を、AIが全文を読んだように要約してしまう危険
- Zotero Integration の CSL 設定と Pandoc の CSL 設定を混同しやすい
- Markdown 原稿・BibTeX・CSL のどれかのパスが違うと書き出しに失敗する
- AIに書誌情報を作らせると、実在しない文献やDOIが混入する危険
結局のところ、効くのは「役割分担」
こういうトラブルを避けるためにやってるのが、最初に話した役割分担です。どの子に何を任せて、何を任せないかをハッキリさせる。これに尽きます。
軸になる原則はたったひとつ。AIに引用情報を一から作らせないこと。Zotero を唯一の“書誌情報の親元”にして、Codex には登録済みの論文を読み解いて「どう活かせる?」を整理してもらう。こうすれば、AIのスピードを楽しみながら、引用の正確さは Zotero と原文献がしっかり守ってくれます。
三つのツールをつなぐ最大のコツは、結局このシンプルな線引きだったんです。
おわりに
つなぐところ、正直めんどくさいです(笑)。でも一回組んじゃえば、あとは「集めた文献が、そのまま書くことに直結する」状態がずーっと続きます。
最初の山さえ越えれば、サーベイはもう重労働じゃない。むしろちょっと楽しくなりますよ。一緒にがんばりましょう。