Dynamische Open Graph Bilder mit Next.js unter Verwendung von @vercel/og erstellen

Dynamische Open Graph Bilder mit Next.js unter Verwendung von @vercel/og erstellen

Vercel
Next.js
Tailwind CSS
TypeScript
In diesem Blogbeitrag lernen wir, wie man dynamische Open Graph-Bilder mit Next.js und Tailwind CSS unter Verwendung des Pakets @vercel/og erstellt.

Was ist Open Graph?

Open Graph ist ein Protokoll zum Teilen von Webinhalten in sozialen Medien. Es erlaubt Ihnen zu kontrollieren, wie Ihre Inhalte erscheinen, wenn sie auf Social Media Plattformen wie Facebook, Twitter und LinkedIn geteilt werden.

Was ist @vercel/og?

`@vercel/og`` ist eine Bibliothek, mit dem Sie dynamische Open Graph-Bilder mit Next.js und Tailwind CSS erstellen können. Es macht es einfach und unkompliziert, Open Graph Bilder in Ihre Next.js Anwendung zu integrieren.
Wenn es auf Vercel gehostet wird, verwendet es das Edge Functions Feature, um die Open Graph Bilder am Rand zu erzeugen.

Erste Schritte

Zuerst erstellen wir ein neues Next.js Projekt.
npx create-next-app
Als nächstes installieren wir die Bibliothek @vercel/og.
npm install @vercel/og

Erstellen des Open-Graph-Images

Nun erstellen wir das Open Graph-Image.
Zuerst erstellen wir einen Api-Endpunkt namens og.tsx im Verzeichnis pages/api. Ein sehr einfaches Beispiel für ein Open Graph-Image sieht wie folgt aus:
import { ImageResponse } from "@vercel/og";

export const config = {
  runtime: "edge",
};

export default function handler() {
  return new ImageResponse(
    (
      <div
        style={{
          fontSize: 128,
          background: "white",
          width: "100%",
          height: "100%",
          display: "flex",
          textAlign: "center",
          alignItems: "center",
          justifyContent: "center",
        }}
      >
        Hello world!
      </div>
    ),
    {
      width: 1200,
      height: 630,
    }
  );
}
Source: Vercel docs
Dies wird ein Open Graph Bild mit dem Text "Hello world!" erstellen.
Starten Sie den Entwicklungsserver, indem Sie npm run dev ausführen und besuchen Sie http://localhost:3000/api/og, um das Open Graph Bild zu sehen.

Das Open-Graph-Bild dynamisch machen

Lassen Sie uns nun das Open Graph-Bild dynamisch machen. Dies können wir mit dem Parameter NextRequest erreichen. Dieses Objekt enthält Informationen über die Anfrage, einschließlich der Abfrageparameter. Wir können dann die Methode new Url(req.url) verwenden, um die Abfrageparameter zu erhalten.
import { ImageResponse } from "@vercel/og";
import { NextRequest } from "next/server";

export const config = {
  runtime: "edge",
};

export default function handler(req: NextRequest) {
  const { searchParams } = new URL(req.url);
  const text = searchParams.get("text");

  return new ImageResponse(
    (
      <div
        style={{
          fontSize: 128,
          background: "white",
          width: "100%",
          height: "100%",
          display: "flex",
          textAlign: "center",
          alignItems: "center",
          justifyContent: "center",
        }}
      >
        {text}
      </div>
    ),
    {
      width: 1200,
      height: 630,
      emoji: "fluent",
    }
  );
}

}
Jetzt können wir den Text, der im Open Graph Bild angezeigt werden soll, als Abfrageparameter übergeben. Als Beispiel, wenn wir Hello from query param 👋 anzeigen möchten, können wir die URL http://localhost:3000/api/og?text=Hello%20from%20query%20param%20👋 aufrufen.
Bitte beachten Sie, dass die Option emoji im Objekt ImageResponse auf fluent gesetzt ist.

Gestaltung des Open-Graph-Bildes

Lassen Sie uns nun das Open Graph Bild mit Tailwind CSS gestalten.
Um Tailwind CSS zu verwenden, müssen wir tw anstelle von style verwenden.
import { ImageResponse } from "@vercel/og";
import { NextRequest } from "next/server";

export const config = {
  runtime: "edge",
};

export default function handler(req: NextRequest) {
  const { searchParams } = new URL(req.url);
  const text = searchParams.get("text");

  return new ImageResponse(
    (
      <div tw="text-6xl bg-white w-full h-full flex flex-col items-center justify-center">
        {text}
        <p tw="flex text-red-500">
          and styled with
          <span tw="ml-2 text-red-700">TailwindCSS ⭐</span>
        </p>
      </div>
    ),
    {
      width: 1200,
      height: 630,
      emoji: "fluent",
    }
  );
}
Jetzt können wir die Seite öffnen, um das gestylte Open Graph-Bild mit Tailwind-CSS zu sehen. Hier ist ein Beispiellink:
Bitte denken Sie daran, dass die `tw'-Eigenschaft noch experimentell ist und sich in Zukunft ändern kann.

Fazit

In diesem Tutorial haben wir gelernt, wie man dynamische Open Graph Bilder mit Next.js und Tailwind CSS unter Verwendung der @vercel/og Bibliothek erstellt.
Es ist eine großartige Möglichkeit, dynamische Open-Graph-Bilder für Ihre Next.js-Projekte zu erstellen, um sie in den sozialen Medien zu teilen.

Weiterführende Links


Über mich

Ich bin ein Softwareentwickler aus Deutschland mit mehr als 12 Jahren Erfahrung. Ich interessiere mich leidenschaftlich für Technik und liebe es, neue Dinge zu lernen. Zurzeit arbeite ich als Senior Softwareentwickler bei einer Firma namens "Engel & Völkers Technology".

Folge mir und erfahre, woran ich gerade arbeite:

Haben Sie noch Fragen?Zögern Sie nicht mich zu kontaktieren.