Hugo ステティックサイトジェネレータにおける OpenGraph 画像メタデータ

Hugo に OpenGraph メタデータを追加する方法は?

目次

Opengraph画像メタデータ とは、og:imageというメタプロパティです。 基本的に、Hugoベースのウェブサイトの各ページに対して、正しく生成されたタグ <meta property="og:image" content="https://....jpg"> が必要です。

Hugoロゴとスローガン

OpenGraphメタデータの包含方法

テーマのコード内で以下のコードを検索してください:

{{ template "_internal/opengraph.html" . }}

おそらくすでに含まれています。 見つからない場合は、自分で追加してみてください。

  • テーマの layouts/_default/baseof.html を作成またはコピーしてください。
  • その中に <head> タグ内に以下を追加してください:
<head>
  .....
  {{ template "_internal/opengraph.html" . }}

完了しましたか?今度は hugo コマンドでサイトを生成し、生成された index.html を確認してください。

hugo
head -100 public/post/test/index.html

<meta property="og:image"... が見つからないですか?おそらく標準的な実装にはいくつかの条件があります。

Hugo公式ドキュメント

https://gohugo.io/templates/embedded/#open-graph

  1. 基本的に、ページのフロントマターに、メタデータに掲載したい画像を指定する必要があります。例えば:
---
title: "My hugo test page title"
description: "Description of my hugo test page"

date: "2025-07-15"
lastmod: "2025-07-15"

tags:
  - Hugo
  - Images

images:
  - post-cover1.png
  - post-cover2.png
---

しかし、すでに1000ページ以上のウェブサイトを持っている場合、この方法は遅すぎるかもしれません。ご心配なく、もう一つのオプションがあります。

  1. ページバンドル内に特別な名前の画像を保存してください。

_internal/opengraph.html_funcs/get-page-images.html を呼び出し、ページバンドル内で feature を含む画像ファイル(例: feature.png)を探します。見つからない場合は、cover または thumbnail を含む画像ファイルを探します。

get-page-images.html の一部:

{{- $featured := $resources.GetMatch "*feature*" -}}
  {{- if not $featured }}{{ $featured = $resources.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
  {{- with $featured }}
    {{- $imgs = $imgs | append (dict
      "Image" .
      "RelPermalink" .RelPermalink
      "Permalink" .Permalink) }}
  {{- end }}
  1. グローバルなウェブサイトパラメータにフォールバックします。これにより、最初の画像のみが使用されます。

hugo.toml 内のどこかに以下を配置してください:

[params]
  description = 'My awesome website'
  images = ['default-feature-image.jpg']

または hugo.yaml を使用している場合は:

params:
  description: My awesome website'
  images:
  - default-feature-image.jpg

このコードは get-page-images.html 内にあります:

{{- if and (not $imgParams) (not $imgs) }}
  {{- with site.Params.images }}
    {{- $imgParams = first 1 . }}
  {{- end }}
{{- end }}

このウェブサイト

このウェブサイトも、ご想像通り、Hugo を使用しています。 ここでは、標準的な Hugo/MainRoad の方法で、ページフロントマターにサムネイル画像を参照しています:

thumbnail: this-page-thumbnail.jpg 

しかし、私のサムネイル画像はすでに 適切にリサイズ済み で、幅235pxに設定されています… あ、これではページのカバー画像には小さすぎます。他の画像の名前もすべて異なります…

私は簡単に修正しました。ウェブサイトの設定にデフォルト画像パラメータを追加しただけです。これにより、この投稿以前のすべてのページは、この小さなKubernetesクラスターの画像を使用してOpengraphメタデータに表示されます:

dell usff stack

今後は、すべてのページのフロントマターを自動的に更新するスクリプトを書くかもしれません。しかし、今のところこれで十分です。

有用なリンク