January 17, 2020

773 letters 2 mins read

ブログをGhostからHugoに移行した際の作業

ブログを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