React Academy · Pelajaran

API Metadata & SEO dalam App Router

Ekspor objek metadata statis dan dinamis untuk menetapkan judul halaman, deskripsi, dan tag OG.

Pelajaran 4 dari 413 langkah

API Metadata & SEO dalam App Router adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Mengapa metadata Penting

Metadata yang baik (judul, deskripsi, tag OG) meningkatkan peringkat SEO dan pratinjau berbagi di media sosial. Perute Aplikasi Next.js menyediakan API Metadata yang aman terhadap tipe dan menghasilkan tag <head> di sisi server.

Ekspor Metadata Statis

Ekspor objek metadata dari page.tsx atau layout.tsx mana pun untuk menetapkan tag statis bagi segmen tersebut.

import type { Metadata } from 'next';

export const metadata: Metadata = {
  title: 'My App',
  description: 'The best app ever built',
  keywords: ['react', 'nextjs', 'typescript'],
};

export default function Page() { return <main>Hello</main>; }

Templat Judul

Gunakan title.template dalam tata letak agar halaman anak secara otomatis mendapatkan judul berformat tanpa mengulangi nama situs.

// app/layout.tsx
export const metadata: Metadata = {
  title: {
    template: '%s | My App',
    default: 'My App',
  },
};

// app/about/page.tsx
export const metadata: Metadata = {
  title: 'About', // renders as "About | My App"
};

Metadata Dinamis dengan generateMetadata

Ekspor fungsi asinkron generateMetadata untuk rute yang memerlukan tag berbasis data—fungsi ini menerima params dan metadata induk.

export async function generateMetadata({ params }: { params: { id: string } }): Promise<Metadata> {
  const product = await getProduct(params.id);
  return {
    title: product.name,
    description: product.summary,
    openGraph: {
      title: product.name,
      images: [product.imageUrl],
    },
  };
}

Tag Open Graph

Kunci openGraph menetapkan tag OG untuk berbagi di Facebook, LinkedIn, dan Slack.

export const metadata: Metadata = {
  openGraph: {
    title: 'My Product',
    description: 'Buy now!',
    url: 'https://example.com/product',
    siteName: 'My App',
    images: [{ url: 'https://example.com/og.png', width: 1200, height: 630 }],
    type: 'website',
    locale: 'en_US',
  },
};

Tag Kartu Twitter

Kunci twitter menetapkan metadata kartu khusus Twitter untuk pratinjau kaya dalam tweet.

twitter: {
  card: 'summary_large_image',
  title: 'My Product',
  description: 'Buy now!',
  images: ['https://example.com/twitter.png'],
  creator: '@myhandle',
},

Robot dan Kanonis

Kontrol perayapan dengan robots dan tetapkan URL kanonis untuk mencegah penalti akibat content duplikat.

export const metadata: Metadata = {
  robots: { index: true, follow: true, googleBot: { index: true } },
  alternates: { canonical: 'https://example.com/products' },
};

Favicon dan Ikon

Tempatkan file ikon di app/ menggunakan nama khusus (icon.png, apple-icon.png, favicon.ico) atau deklarasikan dalam metadata.icons.

// Convention: place app/icon.png → auto-detected as favicon

// Or declare explicitly:
export const metadata: Metadata = {
  icons: {
    icon: '/icon.png',
    apple: '/apple-icon.png',
    shortcut: '/shortcut-icon.png',
  },
};

Membuat Gambar OG dengan ImageResponse

Gunakan ImageResponse dari next/og dalam route.ts untuk membuat gambar OG dinamis dengan JSX yang dirender menjadi PNG.

// app/og/route.ts
import { ImageResponse } from 'next/og';

export async function GET(req: Request) {
  const { searchParams } = new URL(req.url);
  const title = searchParams.get('title') ?? 'Default';
  return new ImageResponse(
    <div style={{ fontSize: 48, background: '#fff', width: '100%', height: '100%' }}>
      {title}
    </div>,
    { width: 1200, height: 630 }
  );
}

Data Terstruktur (JSON-LD)

Tambahkan data terstruktur JSON-LD dengan menyisipkan tag <script> dalam JSX halaman—fitur ini bukan bagian dari API Metadata, tetapi dapat digunakan bersamanya.

export default function ProductPage({ product }) {
  const jsonLd = {
    '@context': 'https://schema.org',
    '@type': 'Product',
    name: product.name,
    price: product.price,
  };
  return (
    <>
      <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
      <h1>{product.name}</h1>
    </>
  );
}

Memverifikasi Metadata

Gunakan DevTools peramban (tab Network, lihat sumber HTML) atau alat seperti opengraph.xyz untuk memverifikasi bahwa metadata dirender dengan benar dalam HTML server.

Pemeriksaan Singkat

Fitur API Metadata Next.js mana yang memungkinkan halaman anak mewarisi dan menyesuaikan akhiran judul bersama seperti 'Tentang | Aplikasi Saya'?

Ringkasan

Ekspor metadata untuk tag statis atau generateMetadata() untuk tag dinamis. Gunakan title.template dalam tata letak untuk judul yang DRY, tetapkan openGraph dan twitter untuk pratinjau media sosial, dan gunakan ImageResponse dalam pengendali rute untuk menyajikan gambar OG dinamis.

Gratis untuk memulai

Belajar React dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
88
Pelajaran
324

Pertanyaan yang Sering Diajukan

Apakah pelajaran “API Metadata & SEO dalam App Router” gratis?

Ya — teks lengkap “API Metadata & SEO dalam App Router” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “API Metadata & SEO dalam App Router”?

Ekspor objek metadata statis dan dinamis untuk menetapkan judul halaman, deskripsi, dan tag OG. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “API Metadata & SEO dalam App Router” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Konvensi File App Router
  2. Komponen Server vs Klien dalam Next.js
  3. Rute Dinamis & Grup Rute
  4. API Metadata & SEO dalam App Router
← Kembali ke React Academy