Métadonnées d'image OpenGraph dans le générateur de site statique Hugo
Comment ajouter des métadonnées OpenGraph à Hugo ?
Opengraph image metadata
est la propriété meta og:image
.
En bref, nous souhaitons que le tag <meta property="og:image" content="https://....jpg">
soit correctement généré pour chaque page de notre site basé sur Hugo.
Comment les métadonnées OpenGraph sont incluses
Recherchez dans le code de votre thème
{{ template "_internal/opengraph.html" . }}
Elles sont probablement déjà incluses. Si vous ne trouvez rien, vous pouvez essayer de les inclure vous-même.
- Créez ou copiez depuis votre thème
layouts/_default/baseof.html
- Ajoutez-y quelque part à l’intérieur de la balise
<head>
:
<head>
.....
{{ template "_internal/opengraph.html" . }}
C’est fait ? Générez maintenant votre site avec la commande hugo et vérifiez le fichier index.html produit pour une page donnée.
hugo
head -100 public/post/test/index.html
Vous ne voyez pas le <meta property="og:image"...
là-dedans, n’est-ce pas ?
D’accord… il y a encore quelques conditions supplémentaires dans l’implémentation standard.
Documentation officielle de Hugo
https://gohugo.io/templates/embedded/#open-graph
- En général, vous devez spécifier dans le frontmatter de la page les images que vous souhaitez publier dans les métadonnées, par exemple
---
title: "Mon titre de page de test Hugo"
description: "Description de ma page de test Hugo"
date: "2025-07-15"
lastmod: "2025-07-15"
tags:
- Hugo
- Images
images:
- post-cover1.png
- post-cover2.png
---
Mais cela pourrait être trop tard si vous avez déjà un site web avec des milliers de pages. Ne vous inquiétez pas, il existe une autre option.
- Stockez les images dans votre page bundle avec des noms spécifiques.
Ce _internal/opengraph.html
appelle _funcs/get-page-images.html
qui cherche dans votre page bundle les fichiers d’images contenant feature
(comme feature.png
), puis, si l’image feature
n’est pas trouvée, il cherche les fichiers d’images contenant cover
ou thumbnail
.
Partie de 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 }}
- Fallback vers les paramètres globaux du site web - ne prend que la première image.
Quelque part dans hugo.toml
[params]
description = 'Mon superbe site web'
images = ['default-feature-image.jpg']
ou dans hugo.yaml si vous utilisez ce format
params:
description: Mon superbe site web'
images:
- default-feature-image.jpg
Vous pouvez trouver ce code là, dans get-page-images.html :
{{- if and (not $imgParams) (not $imgs) }}
{{- with site.Params.images }}
{{- $imgParams = first 1 . }}
{{- end }}
{{- end }}
Ce site web
Comme vous l’avez deviné et comme vous pouvez le voir, ce site web utilise également Hugo. Ici, j’ai des images d’aperçu référencées dans le frontmatter de la page de manière standard Hugo/MainRoad :
thumbnail: this-page-thumbnail.jpg
Mais mes images d’aperçu sont déjà correctement redimensionnées à une largeur de 235px… Oh, attendez… ce n’est pas suffisant pour l’image de couverture de la page. Et les autres images ont toutes des noms différents…
J’ai fait la correction de manière simple - j’ai simplement ajouté des paramètres d’image par défaut à la configuration du site. Et maintenant, toutes les pages avant ce billet utilisent l’image de ce petit cluster Kubernetes comme leur méta d’OpenGraph :
Je pourrais peut-être changer quelque chose à l’avenir, comme écrire un script automatique pour mettre à jour les sections frontmatter de toutes les pages, mais pour l’instant, c’est suffisant.
Liens utiles
- Hugo Cheat Sheet
- Gestion des images du thème Mainroad
- Comment stocker des images d’aperçu dans le dossier de page bundle pour les sites Hugo avec le thème Mainroad
- Déployer un site généré par Hugo sur AWS S3
- Ajouter des balises de données structurées à Hugo
- Soumettre un formulaire Google sur un site Hugo
- Thèmes les plus populaires pour Hugo