NotionへのHTMLコピペが崩れる状況へreverse_markdownを使ってMarkdownとして貼り付けをやってみた

Notionは色々な形式のデータを受け付けてくれますが、HTMLの場合はタグの組み合わせ次第で崩れることもあります。そこで手直しのしやすさも求めてHTMLからMarkdownに変換してみました。
2022.05.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

NotionやConfluenceなど、今日の多くのドキュメント管理SaaSは様々なフォーマットのテキスト貼り付けを受け付けるようになっています。主なものとしてはHTMLやMarkdown。

ただ、肝心な貼り付けたい内容がSaaS側で解釈できない構成になっていたり、構成のすべては解釈していないケースもあります。貼り付けたあとの訂正が一番厄介という状況もしばしば。

実際にHTMLを貼り付けてみたら大きく壊れた上にMarkdownとして書き直すにも直しづらいという状況に遭遇し、Markdownとして貼り付けるほうが無難としてHTMLをMarkdownに変換してから貼り付ける手段を取ってみました。

htmlからmarkdownに変換する

html2markdown系のライブラリは数存在しますが、実際にはリリース日が相当前だったりとバージョンの都合で動かすのが容易ではなかったりします。今回はそのうち実際に動かせた reverse_markdownを使います。

% gem install reverse_markdown

コマンドライン実行にあたってオプション指定は2つ。

option 詳細
-u (pass_through|drop|bypass|raise) 未知のタグの扱い
-g (true|false) GitHubでの執筆フォーマットに沿う
% reverse_markdown -g false path/to/html | pbcopy

変換結果をテキストエディタにペーストし、必要に応じてSaaSが受け付ける構成へと微調整しましょう。その後はNotionへコピペするだけです。

-gはGitHubリポジトリで用いるドキュメントであれば有効にしておくと手直しの部分が大幅に減ります。

あとがき

Notionへ既存ドキュメントを移植中にHTMLのコピペよりもmarkdownベースのほうが手直しが楽だと気が付きましたが、HTMLの構成がそのまま適用できないこともあり、部分的な修正を行う際に今回の方法を取ってみました。

HTMLタグの入れ子が正常ではない場合にはMarkdownも正常に変換される可能性がひくいため、変換後に崩れている場合はHTMLファイルをブラウザで開いた上で、ブラウザによる補正が行われた結果を変換に通してみるとよいでしょう。