Genera una imagen Open Graph para cada página: la tarjeta que muestra un enlace a tu sitio en un chat, en una red social o en un resultado de búsqueda.
Sintaxis
$ vela enable ogNo depende de otras funciones ni necesita backend. En un sitio estático las tarjetas se escriben como archivos al compilar; en un servidor se generan la primera vez que se piden.
Qué obtienes
src/lib/og/card.svelte, la tarjeta: un componente de Svelte con su propio bloque<style>, que puedes rediseñar a tu gusto.src/lib/server/og.ts, que convierte el componente en un PNG de 1200 × 630 con Takumi.- Una ruta en
src/routes/og/[...path].pngque sirve la tarjeta de cada página en la misma ruta que la página:/og/about.pngpara/about,/og/index.pngpara/. withCardalrededor de las etiquetas meta ensrc/routes/+layout.svelte, que apunta elog:imagede cada página a su tarjeta.- El paquete
@takumi-rs/core, endependencies.
De dónde sale el texto de la tarjeta
La ruta se lo pide a la página. El título y la descripción que define una página están en las etiquetas meta que genera, y la tarjeta los lee de ahí, así que una página nueva tiene su tarjeta sin configurar nada:
// src/routes/pricing/+page.ts
import { definePageMetaTags } from 'svelte-meta-tags';
export const load = () => ({
...definePageMetaTags({ title: 'Precios', description: 'Un solo plan, con cobro mensual.' })
});Una página sin título recibe una tarjeta con el nombre del sitio. Una ruta sin página, o una página que redirige (por ejemplo, una que exige iniciar sesión), no tiene tarjeta.
Diseñar la tarjeta
Edita src/lib/og/card.svelte. Recibe title, description y siteName, y se genera fuera del navegador, así que:
- Usa flexbox para la maquetación y da estilo en el bloque
<style>del propio componente. Las clases de Tailwind yapp.cssno le llegan. - Funcionan las propiedades personalizadas, los degradados,
oklch()ycolor-mix(). - El texto se dibuja en Geist, que el renderizador incluye. Para usar otra fuente, registra su archivo en
src/lib/server/og.ts; el comentario de ese archivo muestra cómo.
Abre /og/index.png con vela dev en marcha para ver el resultado.
Una página con su propia imagen
Una página que define una imagen Open Graph la conserva. La tarjeta solo sustituye a la imagen por defecto del sitio (static/og.jpg):
definePageMetaTags({
title: 'Día del lanzamiento',
openGraph: { images: [{ url: 'https://example.com/launch.jpg', width: 1200, height: 630 }] }
});Antes de desplegar
La URL de la imagen en las etiquetas meta se construye a partir de url en src/lib/site.ts. Ponle la dirección en la que se despliega el sitio; si no, los servicios que leen og:image irán al host equivocado.
Para quitarlo, ejecuta vela disable og.