はてなブログからエクスポートしたファイルを jeykll で読み込めるマークダウンに変換するスクリプト書いた

otomi 2021-04-16

昨日書いたように、はてなブログから jeykll に移行した。

はてなブログで書いていた記事を移す際に、ある程度自動化できたのでやったこと書く。

はてなブログは以下の手順で記事をエクスポートできる。

記事データをエクスポート(バックアップ)する

エクスポートされた記事は Movable Type 形式のブログデータらしいのだが、jeykll はそのままだと記事として読み込めないぽいので、各記事毎にファイルを分割するスクリプトを Ruby で書いた。

コードは GitHub に置いている。

https://github.com/ot0m1/hatena-blog-to-jekyll

1つのテキストファイルを記事毎のマークダウンファイルに分割して、そのまま jeykll の _posts ディレクトリに放り込めるようにした。

やったこと

  • 1つのテキストファイルを記事毎のマークダウンファイルに分割
  • 記事を分割して配列に格納
    • 正規表現で split
  • 分割した記事のメタ情報と本文をそれぞれヘッダーとボディとして hash で持つ
  • ヘッダーを jeykll の形式に変換
  • ボディの html の構文をマークダウン形式に変換
  • 記事毎にマークダウンファイルとして書き出す

やってみて

  • jeykll で記事として扱ってもらえるファイルの内容が不明だったので、変換の最適化ができなかった
    • 書き出したファイルを _posts ディレクトリに放り込んでも、タイトルがうまく反映しなかったりページングできなかったりした
    • jeykll 側のパーマリンクの設定などで対応できそうだったが、そこまで調べる元気がなく結局手作業での修正が発生した
  • 記事毎にマークダウンファイルを作るのはできたので、手作業は発生はしたが大幅に移行する時間は短縮できた
    • 自分は20記事くらいだったが、100記事超えるとかなってくるともっと時間短縮が効いてくると思う

まとめ

現実に起こっている課題を Ruby で解決することができたのがなによりの収穫でした。