【Hugo】OGP を設定する
結論
- 画像生成には tcardgen を使う
- VSCODE の 拡張機能 VSNotes で自動でOGPフロントマターを記載
- Githook で コミット時に tcardgen を実行して自動で画像生成を行う
経緯
ブログ記事のSNS共有時に目を引く画像(OGP画像)を自動生成したい。
手動で各記事に画像を作成するのは時間がかかるため、自動化プロセスを構築することにした。
Go 製の tcardgen というツールを発見し、これを使用して OGP 画像の自動生成を実現する。
下記のように OGP 用の画像を作成する。
OGP とは
OGP(Open Graph Protocol) は、ウェブページがSNSで共有された際に、タイトル、説明文、画像などのメタデータを指定するためのプロトコル。OGP 情報は HTML の
タグ内に記述され、以下のような形式で設定される。今回は
og:image
の話である。
|
|
設定詳細
tcardgen の設定
インストール方法
tcargen のリポジトリやインストール方法はこちら。
使うためには事前に go のインストールなどが必要だが、 Hugo ユーザは問題ないはず。
go install github.com/Ladicle/tcardgen@latest
また、フォントファイルも必要。KintoSansフォントを使用する場合は、以下のようにフォントファイルを配置する。
assets/
└── font/
└── KintoSans/
├── KintoSans-Bold.ttf # 太字フォント
├── KintoSans-Medium.ttf # 中太フォント
└── KintoSans-Regular.ttf # 標準フォント
|
|
Hugo 側の設定
私が使っている Hugo の テーマ Hextra では、フロントマターで images
に設定すればよいのでそれに従う。
背景画像の準備
canva で作成した。
tcardgen の設定
背景側で作成済みだった著者名については、座標を-400などにして表示しないようにした。 それ以外はデフォルトの設定。
|
|
VSCODE の 拡張機能 VSNotes で自動でOGPのフロントマターを記載
VSCode の拡張機能 VSNotes を使用して、新規記事作成時に自動的に OGP 用のフロントマターを挿入するように設定する。 これにより、毎回 OGP のファイル名を自動的に設定するようにした。 私は、VSNotes の設定ファイルに以下のようなテンプレートを追加した。
|
|
Githook で コミット時に tcardgen を実行して自動で画像生成を行う
Git hookを使用して、コミット時に自動的に tcardgen を実行し、 OGP 画像を生成します。以下の手順で設定します
プロジェクトのルートディレクトリに .git/hooks/pre-commit
ファイルを作成し、以下の内容を記述します
.githook の場所変更と pre-commit ファイルの作成
$ git config --local core.hooksPath .githooks
$ mkdir -p .githooks && touch .githooks/pre-commit
本来 .git/hooks にあるフォルダをプロジェクトのルートディレクトに見るようにする。 これにより、この後に作成する pre-commit のファイルを git 管理下に置く。
mkdir -p オプションは、親ディレクトリが存在しない場合に、それも一緒に作成することを指示します。 作成した pre-commit ファイルの中身は下記のようにする。
pre-commit のスクリプト
下記の内容を設定することで、コミット時に更新された記事に対してのみ画像を生成する。
#!/bin/bash
git diff --name-only HEAD content/post |\
xargs tcardgen -f assets/fonts/KintoSans/ \
-o content/images/ \
-t assets/img/ogp.png \
-c tcardgen.yaml content/posts/20*/*.md