Open Graph: La Primera Impresión de Tu Link
Cuando alguien comparte tu URL en Twitter, LinkedIn, Slack o WhatsApp, la plataforma busca tu página y renderiza una tarjeta de preview. Sin tags Open Graph, obtienes una URL desnuda o un fragmento aleatorio de texto. Con ellas, obtienes título, descripción e imagen que hacen que la gente quiera hacer clic.
Tags Open Graph Esenciales
<head>
<!-- Requeridos -->
<meta property="og:title" content="Título de Tu Página" />
<meta property="og:description" content="Descripción atractiva de menos de 200 chars" />
<meta property="og:image" content="https://example.com/og-image.jpg" />
<meta property="og:url" content="https://example.com/pagina" />
<meta property="og:type" content="website" />
<!-- Recomendados -->
<meta property="og:site_name" content="Nombre de Tu Sitio" />
<meta property="og:locale" content="es_ES" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Descripción de la imagen" />
</head>Twitter Cards
Twitter (X) usa sus propias tags que hacen fallback a Open Graph si están ausentes:
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@tucuenta" />
<meta name="twitter:title" content="Título de Tu Página" />
<meta name="twitter:description" content="Descripción atractiva" />
<meta name="twitter:image" content="https://example.com/og-image.jpg" />Tipos de card:
| Tipo | Layout | Mejor Para |
|---|---|---|
summary | Imagen pequeña a la izquierda, texto a la derecha | Artículos, páginas generales |
summary_large_image | Imagen grande arriba, texto abajo | Posts de blog, landing pages (recomendado) |
player | Player de video/audio embebido | Contenido multimedia |
app | Card de descarga de app | Apps móviles |
La og:image Perfecta
- Tamaño: 1200 x 630 píxeles (proporción 1.91:1) — funciona en todas las plataformas
- Tamaño del archivo: Menos de 5MB (menos de 1MB preferible)
- Formato: JPG o PNG (JPG para fotos, PNG para texto/gráficos)
- URL: Debe ser absoluta (https://...), no relativa
- Texto en imagen: Mantén texto clave en el 60% central — bordes se recortan en algunas plataformas
Implementación Next.js
// app/page.tsx (App Router)
import type { Metadata } from 'next';
export const metadata: Metadata = {
title: 'Título de Tu Página',
description: 'Descripción de tu página',
openGraph: {
title: 'Título de Tu Página',
description: 'Una descripción atractiva',
url: 'https://example.com',
siteName: 'Tu Sitio',
images: [
{
url: 'https://example.com/og.jpg',
width: 1200,
height: 630,
alt: 'Descripción de la imagen',
},
],
locale: 'es_ES',
type: 'website',
},
twitter: {
card: 'summary_large_image',
title: 'Título de Tu Página',
description: 'Una descripción atractiva',
images: ['https://example.com/og.jpg'],
},
};Imágenes OG Dinámicas
Para blogs y páginas dinámicas, genera imágenes OG al vuelo:
// app/api/og/route.tsx (Next.js)
import { ImageResponse } from 'next/og';
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const title = searchParams.get('title') || 'Título Por Defecto';
return new ImageResponse(
(
<div style={{
width: '100%', height: '100%',
display: 'flex', alignItems: 'center', justifyContent: 'center',
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
color: 'white', fontSize: 60, fontWeight: 'bold',
padding: 60,
}}>
{title}
</div>
),
{ width: 1200, height: 630 }
);
}Probando y Depurando
| Plataforma | Debugger |
|---|---|
| Sharing Debugger (developers.facebook.com) | |
| Twitter/X | Card Validator (cards-dev.twitter.com) |
| Post Inspector (linkedin.com/post-inspector) | |
| General | opengraph.xyz — preview en múltiples plataformas |
Problema común: Las plataformas cachean datos OG agresivamente. Después de cambiar tus tags, usa el debugger de la plataforma para forzar un re-scrape. LinkedIn cachea por 7 días.
Checklist
- Toda página tiene
og:title,og:description,og:image,og:url - og:image usa URL absoluta con HTTPS
- og:image es 1200x630px, menos de 1MB
- Tipo de Twitter card está definido (
summary_large_imagerecomendado) - og:title es diferente de og:description (sin contenido duplicado)
- Prueba con debuggers de las plataformas antes de lanzar
Genera tus tags: Generador de Meta Tags — llena los campos, obtén meta tags listas para copiar con Open Graph y Twitter Cards.