Cosense (Scrapbox) から Obsidian に移行する方法【Private Project の画像もいっしょに】

理由はともかく、Cosense (Scrapbox) から Obsidian に移行したいとする。シームレスに移行する方法を紹介する。
まずは Cosense からデータをダウンロード

Cosense の Project Settings から、Export Pages ボタンを押してプロジェクトのデータをダウンロードする。
移行に使用するツール
今回は hogashi/sb2md をフォークしてさらにフォークした yi7242/sb2md を使用して移行してみる。このフォークは後述する Private Project の画像ダウンロードにも対応している。
使用方法
使用方法はいたって簡単。Node.js が使用できる環境で作業する。コードをダウンロードして、npm install と npm run build してビルド。コードと同じフォルダにダウンロードした .json ファイルがある状態で、
node dist/index.js data.jsonを実行する。すると処理が始まり、ちょっと待つと output フォルダに Markdown ファイルと画像が保存される。あとは Obsidian の保管庫があるフォルダにコピーするだけ。
めっちゃどうでも良いけど、コピー中に Obsidian のグラフビューを開いていると、ヌルヌル動きながら追加されていくのでおもしろい。
Private Project の画像をダウンロードするには?
プライベートなプロジェクトでは、エクスポートすればテキストは移行できるものの、画像はダウンロードすることができない。
プライベートなプロジェクトの画像をダウンロードするには、Cookie からセッション ID を取得して、このツールに読み込ませる必要がある。

取得する方法は簡単。Private Project にログインしているブラウザの開発者ツールを開いて、アプリケーションタブの Cookie から connect.sid を探す。その値を先ほどのツールの .env ファイルに入れる。
ツールにはサンプルの .env.sample が同梱されているので、それをリネームして、サンプルの値を書き換えよう。あとは先ほどと同じようにコマンドを実行すれば、プライベートなプロジェクトでも画像をダウンロードできる。