ブログをGhostからHugoに移行した際の作業
Ghostからのマイグレーションツールの実行
マイグレーションツールがあり、GhostのWebウェブコンソールからエクスポートしたjsonファイルを一括で記事ごとに個別のMarkdownファイルに変換できる。
https://github.com/jbarone/ghostToHugo
$ ghostToHugo export.json
-d
タグで日付フォーマットを変更する必要があるかもしれない。ISO 8601形式なっている場合は下記のように設定する。
$ ghostToHugo -d "2006-01-02T15:04:05Z" export.json
コンテンツの変更
そのままでは以前と同じように表示できない部分があるので、いくつか修正を加える。
修正の際は、sed
コマンドで複数ファイルを一括で変換すると楽。
$ sed -ri 's/検索する文字列/変換後の文字列/' *
正規表現でうまくやる。
URL aliasの設定
https://gohugo.io/content-management/urls/#how-hugo-aliases-work
HugoのURL構成により、以前とURLが変わる場合にはFront Matterにaliases
タグを設定することで新しいURLにリダイレクトされるようにする。
+++
aliases = ["/old-contents/"]
+++
imgタグをShortcodeでfigureタグに変換
https://gohugo.io/content-management/shortcodes/#figure
利用しているテーマにも寄るが、figureタグを使うのがより適切であれば、Hugoの機能の拡張タグ(Shortcode)を使って変換する。
{{< figure src="https://url/mage.png" alt="image name" >}}
生htmlの使い方
https://anaulin.org/blog/hugo-raw-html-shortcode/
Hugoでは生HTMLをMarkdownに書いても反映されないことがある。上記記事を参考に独自のshortcodeを作る。
layouts/shortcodes/rawhtml.html
ファイルを作り、ファイル内に下記を記述する。
{{.Inner}}
記事内で生HTMLを書きたい箇所を下記タグで挟む。
{{< rawhtml >}}<br />{{< /rawhtml >}}
Markdownでサポートしていないタグに加え、テーブル内の改行などに活用できる。
ファイルをローカルで管理する
たとえば記事内の画像を一括でダウンロードしてレポジトリで管理したい場合には、以下のように画像URLを一括で抽出してwget
でダウンロードする。
sed -rn 's/^image = "(.*)"$/\1/p' * > urls.txt
wget -i urls.txt