はてなブログから Hugo へ移行するツール Hatena2Hugo を作りました
執筆日時:
はてなブログから Hugo へ移行するにあたり、よその開発者さんが Go で開発されているツールを使ったのですが、ちょっといろいろ問題があり……それを直すのに正規表現で置換したのですが、そこでもちょっとやらかした関係で、いろいろ不具合が発生していました。
@daruyanagi だるログ、移行した時に「画像の次の文字が削れてる」みたいな挙動になってる?
— (#^ω^)らむさら@二次会禁止 (@ramusara) May 3, 2020
だるろぐ、 #### の展開に失敗してる?
— さくさん (@ch3cooh) May 3, 2020
しょうがないので、ツールを自分で作り直してデータを再生成してみました。
ツールは GitHub で公開しています。名前は適当なので、カブっていたらごめんなさい。
Hatena2Hugo とは
はてなブログ からエクスポートしたデータ(Movable Type 形式)を Hugo へインポートできる形式へ変換します。.NET Core 製のコンソールアプリです。
単一ファイルの Movable Type データを記事単位に分割し、記事データを適切なフォルダーへ吐き出します。HTML → Markdown や Shortcode への変換は行わず、素直なつくりを目指しました。ただし、はてなフォトライフの画像をローカルにダウンロードしてリンクを書き換える機能だけは、自分が欲しかったためつけています。
使い方
Usage: Hatena2Hugo [options...]
Options:
-s, -src <String> Source file (Required)
-d, -dest <String> Destination folder (Required)
-f, -fotolife <String> Download image iles from fotolife. (Default: true)
各記事にはそれぞれフォルダーが作成され、その下にテキストが index.md として保存されます。-f オプションが有効であれば、はてなフォトライフの画像もこのフォルダーにダウンロードされ、記事内の画像リンクの src
がローカルリンクに書き換えられます。
-f オプションを無効化するときは false
と正しく入力してください。でないと、既定値の true
と扱われます。
ダウンロード
Releases · daruyanagi/Hatena2Hugo
検証環境
Windows 10+.NET Core 3.1 で開発し、Windows 10 で動作を確認しました。ほかの環境での動作は保証できませんが、たぶん動くんじゃないでしょうか。
はてなブログでエクスポートしたデータの記事部分は html 形式になっていますが、インポート先の Hugo でインデントが Markdown の引用として解釈されてしまう問題を回避するため、インデントは一律削除されています。そのため、pre > code
内のソースコードインデントも失われていますが、これはこのツールの制限です(修正予定はありません)。
謝辞
以下のライブラリを提供してくださった開発者に感謝します。
追記
-fotolife <String>なのにDefault: trueなのか…
— じょーさん@人生何度でもやり直し (@elf) May 3, 2020
.Net Coreでコンソールアプリを素直に作るとそうなる感じなのかな
たぶん僕がちゃんと ConsoleAppFramework を理解せずに使っているせいだと思います。そのうちちゃんと使いこなせるようになりたいですね!