Hugo に構造化データのマークアップを追加する
Hugoのテーマが構造化データをサポートしない場合...
Googleは検索結果に、Movie details(映画の詳細)、Job postings(求人情報)、Event(イベント)およびCourse information(コース情報)などの強化を表示しています。これらはウェブサイトの Structured Dataから取得しています。以下に、 How to add Structured Data to the site using Hugo generatorの方法を紹介します。
以下は、Google検索結果に表示されるレシピの構造化データの例です。
以下は、このような構造化データをページに追加する手順です。必要な作業は以下の通りです。
- ページのフロントマターを追加
- サイトのパーシャルレイアウトコードを追加
- Hugoウェブサイトを生成、確認、デプロイ
- Google開発ツールで構造化データをテスト
レシピの構造化データの詳細は、https://developers.google.com/search/docs/appearance/structured-data/recipe に記載されています。
この例では、FAQ構造化データをウェブページに追加する方法を紹介します。
ページのフロントマターを追加
ページのマークダウンコードを開き、FAQ構造化データを追加する場合、フロントマターにTomlを使用している場合は以下を追加してください。
[faq]
title = "This is the title of the FAQ"
[[faq.section]]
question = "What will we do to the drunken sailor?"
answer = "Shave his belly with a rusty razor"
+++
YAMLを使用している場合は以下を追加してください。
faq:
title: 'This is the title of this FAQ'
section: [{question: 'What will we do to the drunken sailor?', answer: 'Shave his belly with a rusty razor.'}]
---
サイトのパーシャルレイアウトコードを追加
パーシャルレイアウトにstruct-data.html
を追加してください。
{{- if eq .Kind "page" }}
{{- if $.Page.Params.faq.title -}}
{{ `<script type="application/ld+json">` | safeHTML }}
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{{ with $.Page.Params.faq }}
{{ $len := len .section }}
{{ range $index, $element := .section }}
{{ $jsonAnswer := .answer | markdownify | jsonify }}
{{ $jsonAnswer := replace $jsonAnswer "\\u003c" "<"}}
{{ $jsonAnswer := replace $jsonAnswer "\\u003e" ">"}}
{
"@type": "Question",
"name": "{{ .question | markdownify }}",
"acceptedAnswer": {
"@type": "Answer",
"text": {{ $jsonAnswer | safeHTML }}
}
}
{{ if not (eq (add $index 1) $len) }},{{ end }}
{{ end }}
{{ end }}
]
}
{{ `</script>` | safeHTML }}
{{- end }}
{{- end }}
そして、headセクションに以下を含めます。
{{- partial "struct-data.html" . -}}
</head>
生成、確認、デプロイ
以下のコマンドを実行してください。
hugo
その後、public
フォルダに生成されたページファイルを開きます。
HTMLページのheadセクションには、以下のようなコードが表示されるはずです。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What will we do to the drunken sailor?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Shave his belly with a rusty razor."
}
}
]
}
</script>
素晴らしいですね、ではありませんか?
構造化データでウェブサイトをテスト
Googleの構造化データテストページを使用してください: https://developers.google.com/search/docs/appearance/structured-data
Schema Validator -> Code snippet に移動し、先ほどコピーしたスニペットを貼り付け、Run Test
をクリックしてください。すると以下のように表示されます。
おめでとうございます、動作しています。ウェブサイトをAWS S3にデプロイし、Google Search Consoleで構造化データが強化として認識されているかを確認できます。 Structured Data
有用なリンク
- Hugo Cheat Sheet
- Markdown Cheatsheet- Mainroad Hugoテーマでの画像処理: Mainroad theme image handling
- Hugo生成されたウェブサイトをAWS S3にデプロイ
- Muled Wine Recipe
- 酔っぱらいの船乗りに対して他の素晴らしいことをする方法に関する歌: https://en.wikipedia.org/wiki/Drunken_Sailor
- HugoウェブサイトでGoogleフォームを送信
- Mainroad Hugoテーマでの画像処理: Mainroad theme image handling
- Hugoで人気のあるテーマ
- Gitea Actionsを使用してHugoウェブサイトをAWS S3にデプロイ
- Mainroadテーマを使用したHugoサイトでページバンドルフォルダにサムネイル画像を保存する方法