Next.js 16 App Router
Triển khai và xác minh hình ảnh OG trong ứng dụng Next.js
Chọn metadata tĩnh, generateMetadata tĩnh, generateMetadata hoặc opengraph-image được tạo, sử dụng URL tuyệt đối công khai và kiểm tra kết quả đã triển khai.
Chọn metadata dựa trên tệp hoặc dựa trên mã một cách có chủ ý
Dùng đối tượng metadata tĩnh cho giá trị cố định và generateMetadata khi dữ liệu của tuyến làm thay đổi tiêu đề, mô tả hoặc hình ảnh. Cả hai cách khai báo đều thuộc Server Components.
Tệp opengraph-image cung cấp metadata theo quy ước tệp. opengraph-image.tsx có thể trả về ImageResponse khi hình ảnh phụ thuộc vào dữ liệu của tuyến. Không khai báo đồng thời metadata tĩnh và generateMetadata trong cùng một đoạn tuyến.
metadata tĩnh với metadataBase
metadataBase phân giải URL metadata tương đối; URL ảnh công khai tuyệt đối như https://starterpackai.com/og/home.png giúp kiểm tra bên ngoài ứng dụng dễ hơ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'],
},
}generateMetadata nhận biết tuyến đường trong Next.js 16
Trong Next.js 16 App Router, params có kiểu Promise; hãy await params trước khi tải dữ liệu theo tuyến và trả về 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] },
}
}opengraph-image động với ImageResponse
Trong opengraph-image.tsx phía máy chủ, hãy await params rồi trả về ImageResponse với kích thước được khai báo rõ ràng.
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
)
}Danh sách kiểm tra xác minh triển khai
- Xác nhận metadata hoặc generateMetadata chạy trong phân đoạn tuyến Thành phần Máy chủ.
- Mở HTML đã triển khai và xác minh các giá trị og:title, og:description và og:image cuối cùng.
- Mở hình ảnh công khai tuyệt đối URL trong một phiên riêng biệt và xác minh phản hồi hình ảnh thành công.
- Kiểm tra thành phần 1200×630 được hiển thị ở kích thước thẻ liên kết nhỏ.
- Chạy trình kiểm tra metadata công khai, sau đó sử dụng trình gỡ lỗi dành riêng cho nền tảng khi bộ đệm không đồng ý.
Hướng dẫn Next.js
Câu hỏi ảnh OG trong Next.js
Các lựa chọn App Router quan trọng cho trang tĩnh và động.
Nên dùng metadata hay generateMetadata?
Dùng metadata cho giá trị cố định và generateMetadata khi nội dung phụ thuộc dữ liệu của từng tuyến.
Có thể dùng tệp opengraph-image không?
Có. App Router hỗ trợ metadata theo tệp; API metadata phù hợp khi cần kiểm soát rõ hoặc động.
Vì sao URL ảnh phải là tuyệt đối?
Trình thu thập xã hội lấy ảnh ngoài phiên trình duyệt. URL công khai tuyệt đối có thể được truy cập trực tiếp.
Hoàn thành quy trình xuất bản Next.js
Xuất bản ảnh và metadata cùng nhau
Tạo tài nguyên, sao chép đoạn mã Next.js và kiểm tra kết quả triển khai.
