Next.js 16 App Router
Implementar y verificar imágenes OG en una aplicación Next.js
Elija metadata estático, generateMetadata con reconocimiento de ruta o un opengraph-image generado, utilice URL públicos absolutos e inspeccione el resultado implementado.
Elija deliberadamente metadata basado en archivos o en código
Utilice una exportación de objetos estática metadata para valores fijos y generateMetadata cuando los datos de ruta cambien el título, la descripción o la imagen. Ambas exportaciones pertenecen a Server Components.
Un archivo llamado opengraph-image puede proporcionar metadata basado en archivos. Un opengraph-image.tsx generado puede devolver ImageResponse cuando lo visual depende de los datos de la ruta. No exporte metadata y generateMetadata estáticos del mismo segmento de ruta.
Estático metadata con metadataBase
metadataBase resuelve URLs relativas de metadata; una URL absoluta y pública como https://starterpackai.com/og/home.png facilita la verificación fuera de la aplicación.
import type { Metadata } from 'next'
export const metadata: Metadata = {
metadataBase: new URL('https://starterpackai.com'),
title: 'A clear page title',
description: 'A concise share description',
openGraph: {
images: ['https://starterpackai.com/og/home.png'],
},
}Con reconocimiento de ruta generateMetadata en Next.js 16
En el App Router de Next.js 16, params es una Promise: ejecuta await params antes de cargar los datos de la ruta y devolver generateMetadata.
import type { Metadata } from 'next'
type Props = { params: Promise<{ slug: string }> }
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const { slug } = await params
const post = await getPost(slug)
return {
title: post.title,
openGraph: { images: [post.ogImageUrl] },
}
}Dinámico opengraph-image con ImageResponse
En opengraph-image.tsx del servidor, ejecuta await params y devuelve una ImageResponse con dimensiones explícitas.
import { ImageResponse } from 'next/og'
export const size = { width: 1200, height: 630 }
export const contentType = 'image/png'
export default async function Image({
params,
}: {
params: Promise<{ slug: string }>
}) {
const { slug } = await params
return new ImageResponse(
<div style={{ display: 'flex', padding: 80 }}>{slug}</div>,
size
)
}Lista de verificación de verificación de implementación
- Confirme que metadata o generateMetadata se ejecuta en un segmento de ruta de componente del servidor.
- Abra el HTML implementado y verifique los valores finales de og:title, og:description y og:image.
- Abra la imagen pública absoluta URL en una sesión separada y verifique una respuesta de imagen exitosa.
- Compruebe la composición renderizada de 1200×630 en un tamaño de tarjeta de enlace pequeño.
- Ejecute un verificador público metadata y luego use depuradores específicos de la plataforma cuando los cachés no estén de acuerdo.
Guía de Next.js
Preguntas sobre OG en Next.js
Decisiones clave de App Router para páginas estáticas y dinámicas.
¿metadata o generateMetadata?
Usa metadata para valores fijos y generateMetadata cuando el contenido dependa de los datos de la ruta.
¿Puedo usar un archivo opengraph-image?
Sí. App Router admite metadatos basados en archivos; las API metadata ofrecen más control explícito o dinámico.
¿Por qué la URL de imagen debe ser absoluta?
Los rastreadores sociales obtienen la imagen fuera de tu sesión. Una URL pública absoluta se puede resolver sin ambigüedad.
Complete el flujo de trabajo de publicación Next.js
Publica juntos la imagen y los metadatos
Crea el recurso, copia un fragmento para Next.js y verifica el despliegue.
