0Pricing
React Academy · Ders

App Router'da Metadata API'si ve SEO

Sayfa başlıklarını, açıklamalarını ve OG etiketlerini ayarlamak için statik ve dinamik metadata nesnelerini dışa aktarın.

App Router'da Metadata API'si ve SEO, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.

Üst Bilgiler Neden Önemlidir

İyi üst bilgiler (başlık, açıklama, OG etiketleri) SEO sıralamalarını ve sosyal paylaşım ön izlemelerini iyileştirir. Next.js App Router, <head> etiketlerini sunucu tarafında oluşturan tür güvenli bir Metadata API'si sağlar.

Statik Metadata Dışa Aktarımı

Bu segment için statik etiketler ayarlamak üzere herhangi bir page.tsx veya layout.tsx dosyasından bir metadata nesnesini dışa aktarın.

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>; }

Başlık Şablonları

Alt sayfaların site adını yinelemeden otomatik olarak biçimlendirilmiş bir başlık alması için bir düzende title.template kullanın.

// 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"
};

generateMetadata ile Dinamik Metadata

Veriye dayalı etiketlere ihtiyaç duyan rotalar için eşzamansız bir generateMetadata işlevini dışa aktarın; bu işlev params ve üst metadata'yı alır.

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

Open Graph Etiketleri

openGraph anahtarı, Facebook, LinkedIn ve Slack'te sosyal paylaşım için OG etiketlerini ayarlar.

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',
  },
};

Twitter Kartı Etiketleri

twitter anahtarı, tweet'lerde zengin ön izlemeler için Twitter'a özgü kart metadata'sını ayarlar.

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

Robotlar ve Kurallı URL

robots ile taramayı denetleyin ve yinelenen içerik cezalarını önlemek için kurallı URL'ler belirleyin.

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

Favicon'lar ve Simgeler

Simge dosyalarını ayrılmış adlarla (icon.png, apple-icon.png, favicon.ico) app/ içine yerleştirin veya bunları metadata.icons içinde bildirin.

// 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',
  },
};

ImageResponse ile OG Görselleri Oluşturma

JSX'i PNG olarak oluşturarak dinamik OG görselleri üretmek için bir route.ts içinde next/og paketinden ImageResponse kullanın.

// 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 }
  );
}

Yapılandırılmış Veriler (JSON-LD)

Sayfanın JSX'ine bir <script> etiketi ekleyerek JSON-LD yapılandırılmış verileri ekleyin; bu, Metadata API'sinin bir parçası değildir ancak onunla birlikte çalışır.

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>
    </>
  );
}

Metadata'yı Doğrulama

Metadata'nızın sunucu HTML'sinde doğru oluşturulduğunu doğrulamak için tarayıcı DevTools'unu (Network sekmesi, HTML kaynağını görüntüleme) veya opengraph.xyz gibi araçları kullanın.

Hızlı Kontrol

Hangi Next.js Metadata API özelliği, alt sayfaların 'About | My App' gibi ortak bir başlık son ekini devralıp özelleştirmesine olanak tanır?

Özet

Statik etiketler için metadata, dinamik etiketler için generateMetadata() dışa aktarın. Tekrarsız başlıklar için düzenlerde title.template kullanın, sosyal ön izlemeler için openGraph ve twitter ayarlayın ve dinamik OG görselleri sunmak için bir rota işleyicisinde ImageResponse kullanın.

Sıkça Sorulan Sorular

“App Router'da Metadata API'si ve SEO” dersi ücretsiz mi?

Evet — “App Router'da Metadata API'si ve SEO” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.

“App Router'da Metadata API'si ve SEO” dersinde ne öğreneceğim?

Sayfa başlıklarını, açıklamalarını ve OG etiketlerini ayarlamak için statik ve dinamik metadata nesnelerini dışa aktarın. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

React Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“App Router'da Metadata API'si ve SEO” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu React Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. App Router Dosya Kuralları
  2. Next.js'te Sunucu ve İstemci Bileşenleri
  3. Dinamik Rotalar ve Rota Grupları
  4. App Router'da Metadata API'si ve SEO
← React Academy Sayfasına Dön