はてなブログから Hugo へ移行するツール Hatena2Hugo を作りました

執筆日時:

はてなブログから Hugo へ移行するにあたり、よその開発者さんが Go で開発されているツールを使ったのですが、ちょっといろいろ問題があり……それを直すのに正規表現で置換したのですが、そこでもちょっとやらかした関係で、いろいろ不具合が発生していました。

しょうがないので、ツールを自分で作り直してデータを再生成してみました。

Hatena2Hugo
Hatena2Hugo

ツールは GitHub で公開しています。名前は適当なので、カブっていたらごめんなさい。

daruyanagi/Hatena2Hugo

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 内のソースコードインデントも失われていますが、これはこのツールの制限です(修正予定はありません)。

謝辞

以下のライブラリを提供してくださった開発者に感謝します。

追記

たぶん僕がちゃんと ConsoleAppFramework を理解せずに使っているせいだと思います。そのうちちゃんと使いこなせるようになりたいですね!