サクッとMovable Typeの記事をhugoへ移行する方法

いつの間にか新年度になっていて驚いていますが、今回のシステム移行に伴って、Movable Typeからhugoへシステム移行と同時に従来の記事も移行させました。(とりあえず、ですが)

Qiitaなどではある意味力技…で移行させていましたが、Movable Typeの『静的生成』を活かして移行を行いました。

hugoの記事フォーマットをそのままMarkdown形式に変換する

約100記事程度のブログなので、手動で移行させるのはかなりの労力と手間がかかってしまいます。そのため、hugoのシステム自体はこのような形のレイアウトで構成されています。

---
title: "タイトル"
date: 【UTC形式の日付】
---
【概要】
<!--more-->
【本文】

hugoのMarkdown記事はこのようなフォーマットで構築されています。また、Movable Typeはもともと静的ファイルを生成するため、上記のようなフォーマットに則ったMarkdownファイルを出力することができれば記事の内容を移行させることができます。

そして、Markdownに記載する内容はHTMLの内容でも記載できるため、以下のようなアーカイブテンプレートを用意して出力させました。

hugo用のアーカイブテンプレートを用意するときには記事のアーカイブテンプレートをコピーした上で作成することをオススメします。

---
title:  "<mt:entryTitle>"
date: <$MTEntryDate format_name="iso8601"$>
aliases:
    - /<$MTEntryDate format="%Y/%m/%d">/<$mt:ArchiveFile$>
---
<MTMarkdownOptions output="raw">
<mt:EntryBody>
<!--more-->
<mt:EntryMore>
</MTMarkdownOptions>

上記のテンプレートフォーマットを貼り付け、パーマリンク(アーカイブマッピング)の設定して出力します。Movable Typeのパーマリンク形式とhugoのパーマリンク形式を統合するのがしんどかったので、aliasesにMovable Type時代の形式を記載しておきます。また、アーカイブファイル名を利用する場合はmarkdown/%-F.mdと入力します。
なお、先頭のmarkdownは出力先ディレクトリ名です。

出力したファイルをhugoへ移行する

出力したMarkdownファイルをhugoへ移行するためには、Movable Typeから出力したファイルをダウンロードし、構築した新しいhugoの環境へ移行します。

大体の場合は<hugoのディレクトリ>/contents/post以下に記事を追加するため、markdownディレクトリ以下のファイルを<hugoのディレクトリ>/contents/postへ追加します。

画像などのファイルもサーバからダウンロードして<hugoのディレクトリ>/static以下へコピーします。

あとはhugo側のディレクトリ構成などをconfig.tomlで調整して設定完了です。

課題

今回、カテゴリやタグマッピングはすべて捨てて統合作業を行いました…が、必要に応じてカテゴリを付与する必要があります。カテゴリなどの統合も行う場合は上記のフォーマットに追加してMTMLを追加する必要がありそうです。

まとめ

Movable Typeの記事をコマンドレスでhugoに移行させることができましたが、静的サイトジェネレーターと呼ばれる部類の仕組みであればこの方法で変更することが可能であるともいます。

また、いろいろな形式でMovable Typeは記事の出力なども行うことができるため、モバイル版など分けた出力もでき、改めてMTの柔軟性を知ることができましたが、個人ブログで扱うにはオーバースペックでした…。。。(個人で色々とやるのにはまた使うと思います!)