Ir para o conteúdo principal

Next.js 16 App Router

Implemente e verifique imagens OG em um aplicativo Next.js

Escolha metadata estático, generateMetadata com reconhecimento de rota ou um opengraph-image gerado, use URLs absolutos públicos e inspecione o resultado implantado.

Escolha metadata baseado em arquivo ou código deliberadamente

Use uma exportação de objeto estático metadata para valores fixos e generateMetadata quando os dados da rota alteram o título, a descrição ou a imagem. Ambas as exportações pertencem a Server Components.

Um arquivo chamado opengraph-image pode fornecer metadata baseado em arquivo. Um opengraph-image.tsx gerado pode retornar ImageResponse quando o visual depende dos dados da rota. Não exporte metadata e generateMetadata estáticos do mesmo segmento de rota.

Estático metadata com metadataBase

metadataBase resolve URLs relativas de metadata; uma URL pública absoluta como https://starterpackai.com/og/home.png facilita a auditoria fora do aplicativo.

tsx
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'],
  },
}

generateMetadata com reconhecimento de rota em Next.js 16

No App Router do Next.js 16, params é uma Promise: faça await params antes de carregar os dados da rota e retornar generateMetadata.

tsx
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] },
  }
}

opengraph-image dinâmico com ImageResponse

No opengraph-image.tsx do servidor, faça await params e retorne uma ImageResponse com dimensões explícitas.

tsx
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 verificação de verificação de implantação

  • Confirme se metadata ou generateMetadata é executado em um segmento de rota do componente de servidor.
  • Abra o HTML implantado e verifique os valores finais og:title, og:description e og:image.
  • Abra a imagem pública absoluta URL em uma sessão separada e verifique uma resposta de imagem bem-sucedida.
  • Verifique a composição 1200×630 renderizada em tamanho pequeno de cartão de link.
  • Execute um verificador público metadata e use depuradores específicos da plataforma quando os caches discordarem.

Guia de Next.js

Dúvidas sobre OG no Next.js

Escolhas centrais do App Router para páginas estáticas e dinâmicas.

Devo usar metadata ou generateMetadata?

Use metadata para valores fixos e generateMetadata quando o conteúdo depender dos dados da rota.

Posso usar um arquivo opengraph-image?

Sim. O App Router oferece metadados por arquivo; as APIs metadata dão controle explícito ou dinâmico.

Por que a URL da imagem deve ser absoluta?

Robôs sociais buscam a imagem fora da sua sessão. Uma URL pública absoluta pode ser resolvida diretamente.

Publique imagem e metadados juntos

Crie a imagem OG, copie um trecho para Next.js e verifique o deploy.