On this page
Generación de Imágenes Open Graph (OG)
Las imágenes de Open Graph se pueden usar para mostrar vistas previas de páginas cuando se comparten en sitios de redes sociales como Twitter/X, LinkedIn, Facebook, etc. Analog soporta la generación de imágenes Open Graph usando API Routes.
Configuración
Primero, instala las dependencias necesarias de satori:
npm install satori satori-html sharp --saveyarn add satori satori-html sharppnpm install -w satori satori-html sharpConfiguración de una Ruta API
A continuación, define una ruta API en el directorio src/server/routes.
// src/server/routes/api/v1/og-images.ts
export default defineEventHandler(async (event) => {
const fontFile = await fetch(
'https://og-playground.vercel.app/inter-latin-ext-700-normal.woff',
);
const fontData: ArrayBuffer = await fontFile.arrayBuffer();
const query = getQuery(event); // query params
const template = `
<div tw="bg-gray-50 flex w-full h-full items-center justify-center">
<div tw="flex flex-col md:flex-row w-full py-12 px-4 md:items-center justify-between p-8">
<h2 tw="flex flex-col text-3xl sm:text-4xl font-bold tracking-tight text-gray-900 text-left">
<span>${query['title'] ? `${query['title']}` : 'Hello World'}</span>
</h2>
</div>
</div>
`;
return new ImageResponse(template, {
debug: true, // disable caching
fonts: [
{
name: 'Inter Latin',
data: fontData,
style: 'normal',
},
],
});
});
- La ruta API utiliza la clase
ImageResponsedel sub-paquete@analogjs/content/og. - Proporciona HTML que se renderiza a un png.
- Las clases de Tailwind son soportadas, y opcionales.
Añadiendo Metadatos Open Graph
Las imágenes de Open Graph se registran a través de meta tags dentro de la etiqueta head de HTML.
<html>
<head>
<meta
property="og:image"
content="https://your-url.com/api/v1/og-images?title=Developer"
/>
<meta
name="twitter:image"
content="https://your-url.com/api/v1/og-images?title=Developer"
key="twitter:image"
/>
...
</head>
</html>
Las meta tags pueden ser configuradas manualmente en el index.html o dinámicamente usando Route Metadata