Skip to content

feat(seo): génère les images Open Graph au build (Satori + resvg) - #43

Open
Zallom wants to merge 1 commit into
masterfrom
feat/og-images
Open

Zallom wants to merge 1 commit into
masterfrom
feat/og-images

Conversation

@Zallom

@Zallom Zallom commented Sep 16, 2026

Copy link
Copy Markdown
Member

Ce que ça fait

Nouveau plugin Docusaurus plugins/og-images qui génère au build une image Open Graph 1200x630 par page, puis injecte les métas correspondantes dans le HTML.

Couverture :

  • pages de documentation (stable + beta) avec l'icône de la fonctionnalité
  • pages du glossaire /learn
  • articles de blog
  • pages marketing (premium, business, communities/games, communities/creators)
  • accueil, avec le chiffre clé (400 000+ serveurs, 55M+ membres)

Sur premium et business, l'image affiche un pill + les points mis en avant plutôt que le simple titre.

Métas injectées

og:image, og:image:width, og:image:height, og:image:alt, twitter:image, twitter:card: summary_large_image. La config gagne aussi twitter:site et twitter:creator.

Comment

Satori (HTML/CSS vers SVG), resvg (SVG vers PNG), sharp (compression). Tourne dans le hook postBuild, une passe par locale pour récupérer les titres localisés (fr/en/de/es/pt). Cache persistant dans node_modules/.cache/og-images, clé dérivée du contenu + TEMPLATE_VERSION, donc les rebuilds sont quasi gratuits tant que les titres ne changent pas.

Les polices TTF/OTF vivent dans plugins/og-images/fonts/ : Satori ne lit pas le woff2 déjà auto-hébergé dans static/fonts/. Elles sont build-time uniquement, jamais servies.

Vérification

Build FR complet : 43 images générées, ~26 ko chacune (1,1 Mo au total), métas bien présentes dans le HTML sur l'accueil et sur les pages de doc. tsc passe.

Note

Les 5 locales multiplient le nombre d'images au build : compter ~215 images sur un build complet à froid, ensuite le cache prend le relais.

Nouveau plugin `plugins/og-images` : au postBuild, une image 1200x630 par
page de doc, de glossaire, d'article de blog et pour les pages marketing,
à partir du titre localisé et de l'icône de la fonctionnalité (chiffre clé
sur l'accueil, points mis en avant sur premium et business). Injecte
og:image, og:image:width/height, og:image:alt, twitter:image et
twitter:card dans le HTML, et tourne par locale (fr/en/de/es/pt).

Ajoute aussi twitter:site et twitter:creator dans les métas globales.

Rendu Satori (HTML/CSS vers SVG) puis resvg (SVG vers PNG) puis sharp pour
la compression, avec un cache persistant dans node_modules/.cache pour des
rebuilds rapides. Les polices TTF/OTF vivent dans le dossier du plugin
(build-time uniquement, non servies).

Vérifié sur un build FR : 43 images, ~26 ko chacune.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant