Evernote のデータを Obsidian に移行した

去年からノート管理を Obsidian に集約している。これまで Notion、Scrapbox、Evernote など複数のツールに情報が散らばっていたため、それらをすべて一箇所にまとめている最中だ。

Evernote については既に使用を止めていたものの、長年蓄積したデータが残っていた。今回はそれらのデータを Obsidian へ移行した。

Evernote からのエクスポート

まず、Evernote のデスクトップアプリからデータをエクスポートする必要がある。ノートを複数選択してエクスポートする方法か、ノートを内包するノートブックごとエクスポートする方法の 2 つがある。前者には一度に最大 50 件までしか選択できないという制限があるため、ノートブックごとエクスポートするのがおすすめ。

エクスポート中に、いくつかのノートを書き出せない問題に遭遇した。画像が含まれるノートでエラーが発生することが多かった。原因を特定するため Evernote のアプリケーションログも調査したが、具体的な原因は突き止められなかった。それらのノートについては思い切って削除するか、重要なものは手動でコピペした。

Markdown 形式への変換

エクスポートが完了すると、ENEX (Evernote XML file) ファイルが生成される。これを Obsidian で使うために Markdown 形式に変換する。 Obsidian が公式で ENEX ファイルのインポートをサポートしているのだが、今回は evernote2md というツールを使用して変換することにした。

evernote2md

evernote2md は Go で書かれた変換ツール。 GitHub からバイナリをダウンロードして、以下のようにコマンドを実行する:

evernote2md --folders --addFrontMatter notes.enex outputs

上記のコマンドを実行すると、outputs ディレクトリに Markdown 形式に変換されたテキストファイルや添付ファイル (画像や PDF など) が出力される。このディレクトリを Obsidian の Vault に移動すればいい。

evernote2md のオプションについて

--folders を指定すると、ノートの名前でディレクトリが作られる。その中にノートの Markdown (README.md) や、画像などの添付ファイルが保存される。

--folder を指定した場合、以下のような構造になる:

Notebook A/
├── Note1/
│   ├── image/
│   │   └── Snapshot1.png
│   └── README.md
└── Note2/
   ├── image/
   │   └── Snapshot1.png
   └── README.md

--folder を指定しない場合、以下のような構造になる:

Notebook A/
├── image/
│   └── Snapshot1.png
├── Note1.md
└── Note2.md

指定しないと何が問題になるかというと、現状の evernote2md は、同名の添付ファイルが存在した場合、ファイルを上書きしてしまう。 Evernote アプリで書類などをスキャンすると、Snapshot1.png とか Snapshot2.png などのファイル名になるため衝突しやすい。

この問題については evernote2md の Issue でも議論されているが解決していない。このオプションは必ず指定するべき。

--addFrontMatter を指定すると、Markdown ファイルの先頭にノートのメタデータ (作成日や更新日、タグなど) が Frontmatter 形式で追加されるので情報の整理に役立つ。

---
date: "2017-02-09 09:04:37 +0000"
updated_at: "2017-02-10 10:12:08 +0000"
title: "タイトル"
tags: ["tag1", "tag2"]
source: desktop.mac
---

本文...

まとめ

とりあえず Markdown 形式でデータを持っておけば、コマンドラインツールなどで加工しやすいし、仮に Obsidian が使えなくなっても何とかなると思う。