OneNoteのデータを画像付きのMarkdownにexportする
今まで技術書のメモをOneNoteに取っていました。 OneNoteを使う理由としては、自分はスクリーンショットをメモの代わりにしていて、OneNoteは画像が扱いやすくOCRも効くためでした。
技術書読むときメモ取る代わりにスクショとって貼って書くこと多いんだけど、これできるアプリ欲しい。
— azu (@azu_re) September 15, 2019
OneNoteでやってるんだけど、もっと気軽に読みながらスクショとメモを貯められる一時置き場みたいのがほしいな。
最終的な貼り付け先はOCRできるOneNoteがいい気がするけど。 pic.twitter.com/TzyRdSgMFh
ただし、OneNoteを使うとスクショを取って貼り付けるという作業が面倒でした。
そのため、mumemoというスクリーンショットベースのメモをとり、Markdownファイルとして書き出していくアプリを書きました。
mumemoは次のように、記録したい範囲を選択して(選択範囲もメモ内に埋め込まれる、OCRの代わり)、スクショ(OpenCV.jsでいい感じに加工する)を取って、必要ならメモ欄に書いていく追記型のメモアプリです。 mumemoで記録したメモ書きは、次のようなファイルベースのMarkdownと画像ファイルとして出力されます。
├── 2019
│ ├── DevOps
│ │ ├──README.md
│ │ └──img/
│ ├── JavaScript
│ │ ├──README.md
│ │ └──img/
├── 2020
│ ├── JavaScript-\ The\ First\ 20\ Years
│ │ ├──README.md
│ │ └──img/
└── └── kubernetes
├──README.md
└──img/
mumemoで記録したMarkdownはただのファイルなので、普通にローカルで検索もできて、自分専用のPrivateリポジトリで管理もできます。
https://t.co/fhVoRIJCZ9
— azu (@azu_re) May 10, 2020
numemo で技術書のメモ取れるようになってだいぶ理想形に近くなった気がする。以前より読むときのメモの量が増えた感じ。
これとおなじのiPadでやりたいんだけどなー pic.twitter.com/TKFEplwGII
numemoに移行したため、今までOneNoteで取っていたメモ書きも同じ形式に移行する必要がでてきました。
macOSのOneNoteにはPDF出力以外の手段が用意されていないため、ウェブ版のhttps://www.onenote.comからメモをダウンロードしてMarkdownに変換する仕組みを作りました。
- azu/export-onenote-to-html: A Toolkit that convert OneNote pages into HTML and Markdown with images.
export-onenote-to-html
export-onenote-to-htmlは2つのステップでOneNoteをMarkdownに変換します。
OneNoteのHTMLファイルをダウンロードする
Greasemonkey or Tampermonkeyを使って、ウェブ版のhttps://www.onenote.comからページをHTMLとしてダウンロードします。
- https://github.com/azu/export-onenote-to-html/blob/master/onenote-downloader.user.js をインストール
- ウェブ版のhttps://www.onenote.comにアクセス
- ダウンロードしたいページを開く
- 画像のダウンロードを待つ
- 右上の “Download” ボタンを押す
ウェブ版のOneNoteはHTMLにBase64化した画像をインラインに埋め込んでいます。 そのため、ものすごいサイズのHTMLファイルがダウンロードできると思います。
OneNoteのファイルをダウンロードするとこんな感じになる(スクショ大量 * base64だからサイズがすごい pic.twitter.com/Z7zqIk6u4f
— azu (@azu_re) May 5, 2020
ダウンロードできたら、埋め込まれたHTMLをMarkdownと画像として変換します。
ダウンロードしたHTMLをMarkdownと画像に変換
export-onenote-to-htmlというnpmモジュールを使ってダウンロードしたHTMLをMarkdownと画像ファイルに変換できます。
利用するにはNode.jsのインストールが必要です。(npxコマンドはNode.jsにもはいっています)
次のようにダウンロードしたファイル(downloaded-page.html
)を変換して、その結果を out/
ディレクトリに出力できます。
npx export-onenote-to-html downloaded-page.html --output out/
ダウンロードしたHTMLをまとめて変換したい場合は、xargs
やrargsなどを使えばできます。
次のコマンドは、カレントディレクトリにあるHTMLをすべて変換する例です。
# macOS
$ brew install rargs
# Install CLI globally
$ npm install --global export-onenote-to-html
# convert
$ ls *.html | rargs -p '(?P<file>.*)\.(?P<ext>html)' export-onenote-to-html {file}.{ext} --output {file}
年数別のディレクトリでワケたい場合は、export-onenote-to-html
に--yearDirectory
というフラグがあるので、これを試してみてください。
(ダウンロードしたHTMLに依存しているのでうまくいかないケースもありそうです)
おわり
export-onenote-to-htmlでOneNoteに書いてたメモを、GitHubに移行しました。 本を読んでいるときのスクショベースのメモはmumemoでやるようになって、だいぶ効率が良くなった気がします。 わざわざ別のメモアプリを開かないで、ポップアップウィンドウのメモ欄にその場で書けるようになったので、メモの量が増えた感じがします。
mumemo - screenshot based note app.https://t.co/fhVoRIJCZ9 pic.twitter.com/UHv6Wv4JPN
— azu (@azu_re) May 22, 2020
ファイルベースのメモがいいのかはまだわかってないですが、完全一致の検索はVSCodeでしたり、キーワードの組み合わせ検索(AとBのAND検索)はGitHubのPrivateリポジトリで行う形にもできたりはするはずので、まあまあいいのかなーって気がします。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。