𝗚𝗲𝗻𝗲𝗿𝗮𝘁𝗶𝗻𝗴 𝗢𝗚 𝗜𝗺𝗮𝗴𝗲𝘀 𝗳𝗼𝗿 𝗭𝗲𝗿𝗼 𝗗𝗼𝗹𝗹𝗮𝗿𝘀

Du kannst OG-Bilder für hunderte von Artikeln generieren, ohne für eine API zu bezahlen.

Ich verwende Playwright, um Screenshots von HTML-Templates zu erstellen. Das bietet volle CSS-Kontrolle und erfordert keine externen Keys.

Wenn du eine statische Website betreibst, ist dies der beste Weg, um die Batch-Bildgenerierung zu handhaben.

Hier ist die Aufschlüsselung meines Ansatzes.

Warum ich mich für Playwright statt anderer Optionen entschieden habe:

  • Cloudinary: Kostet Geld für benutzerdefinierte Schriftarten und hat eine komplexe URL-Syntax.
  • Vercel OG: Funktioniert für dynamische Websites, aber ich nutze statische Websites auf Cloudflare.
  • Node-canvas: Schwierig in der CI einzurichten aufgrund von C++-Abhängigkeiten.
  • Pillow: Schwierig einzusetzen bei komplexen CSS-Layouts oder Flexbox.

Die Playwright-Methode ist einfach. Ich erstelle einen HTML-String mit CSS. Ich übergebe ihn an einen Headless-Browser. Ich mache einen Screenshot.

Der Browser erledigt alles: Schriftarten, Verläufe und Flexbox.

Wichtige technische Details:

  • Akzentfarben: Mein Skript verwendet Regex, um Farben basierend auf Artikel-Tags auszuwählen. Ein „AI“-Tag wählt Lila. Ein „Webdev“-Tag wählt Blau.
  • Dynamische Größenanpassung: Das Skript passt die Schriftgröße basierend auf der Titellänge an, um Überläufe zu verhindern.
  • Schriftarten-Probleme vermeiden: Ich verwende wait_until="networkidle". Dies stellt sicher, dass Google Fonts geladen werden, bevor der Screenshot erstellt wird. Ohne dies verwendet das Bild eine generische Systemschriftart.
  • Geschwindigkeitsoptimierung: Ich öffne eine Browser-Instanz und verwende das Page-Objekt für alle Artikel wieder. Das spart in der CI-Pipeline erheblich Zeit.

Der Workflow:

  1. Das Skript generiert das PNG.
  2. Das Skript schreibt die Bild-URL zurück in das Frontmatter des Artikels.
  3. Die CI-Pipeline committet das Bild.
  4. Die Website wird bereitgestellt.

Dies stellt sicher, dass das Bild live ist, bevor der Artikel auf Plattformen wie Dev.to oder Hashnode veröffentlicht wird.

Wann man dies vermeiden sollte:

Nutze dies nicht für die On-Demand-Generierung. Playwright benötigt etwa 2 Sekunden pro Bild. Es erfordert ein schwerfälliges Browser-Binary. Für eine Live-Anfrage ist es zu langsam.

Nutze dies für Batch-Builds, bei denen du den Zeitpunkt kontrollierst.

Quelle: https://dev.to/morinaga/what-i-learned-generating-og-images-for-articles-with-playwright-and-zero-api-cost-31o4