Blog'a Dön
Teknik SEO

Next.js SEO Rehberi 2026: App Router'da Metadata, Schema ve Performans

12 dakika okuma
Yayınlanma:
Paylaş:
Next.js SEO Rehberi 2026: App Router'da Metadata, Schema ve Performans

Next.js SEO Rehberi 2026: App Router'da Doğru Yapılandırma

Next.js 15, SEO için Pages Router döneminden kökten farklı bir yaklaşım sunuyor. App Router mimarisi, metadata yönetimini, statik sayfa üretimini ve performans optimizasyonunu çok daha sistematik hale getiriyor. Ancak bu güç, beraberinde doğru yapılandırma sorumluluğunu da getiriyor.

Yanlış kurulmuş bir Next.js sitesi, React bileşen hiyerarşisi ne kadar iyi olursa olsun, arama motorlarında görünmez kalabiliyor.

Next.js App Router'da SEO Nasıl Yapılır? App Router'da her sayfa için generateMetadata fonksiyonu ile dinamik metadata üretin, sitemap.ts ve robots.ts dosyalarını route convention'a göre ekleyin, JSON-LD schema için <script type="application/ld+json"> kullanın. Core Web Vitals için Image, Font ve Script optimizasyon bileşenlerini tercih edin. Hedef: Lighthouse SEO skoru 100. Ücretsiz Destek →

İçindekiler

1. Pages Router vs App Router: SEO Farkları 2. generateMetadata ile Dinamik Metadata 3. Statik ve Dinamik OG Tags 4. JSON-LD Schema Entegrasyonu 5. sitemap.ts ve robots.ts Yapılandırması 6. hreflang ile Çok Dilli SEO 7. ISR ve Static Generation Stratejisi 8. Core Web Vitals Optimizasyonu 9. Sık Sorulan Sorular 10. Sonuç ve Aksiyon Planı

Pages Router vs App Router: SEO Farkları

Next.js 13 ile hayatımıza giren App Router, SEO yönetimini kökten değiştirdi. Pages Router'da <Head> bileşeni ile yönetilen metadata, artık yerini dosya tabanlı ve fonksiyon tabanlı bir sisteme bıraktı.

ÖzellikPages RouterApp Router
Metadata yönetiminext/head ile manuelgenerateMetadata veya metadata export
SitemapHarici kütüphane (next-sitemap)Yerleşik sitemap.ts
robots.txtPublic klasörüYerleşik robots.ts
OG ImageManuel veya next-ogImageResponse ile programatik
Schema markupManuel script tagLayout veya page'de JSON-LD
Canonical URLManuelalternates.canonical

App Router'ın en büyük avantajı, metadata'nın sayfa bileşeniyle aynı dosyada veya ayrı bir generateMetadata fonksiyonunda tanımlanabilmesidir. Bu yapı, dinamik sayfalar için çok daha temiz bir kod tabanı sağlıyor.

generateMetadata ile Dinamik Metadata

App Router'da her page.tsx veya layout.tsx dosyası, metadata nesnesi veya generateMetadata async fonksiyonu export edebilir.

Statik sayfalar için doğrudan nesne kullanın:

``typescript export const metadata: Metadata = { title: "Next.js SEO Rehberi 2026 | ModernWebSEO", description: "Next.js App Router'da SEO optimizasyonu...", alternates: { canonical: "https://modernwebseo.com/blog/nextjs-seo-rehberi-2026", }, }; ``

Dinamik sayfalar için generateMetadata fonksiyonu kullanın. Bu fonksiyon, sayfa parametrelerine ve dışarıdan çekilen veriye göre metadata üretmenizi sağlar:

``typescript export async function generateMetadata( { params }: { params: { slug: string } } ): Promise<Metadata> { const post = await getBlogPost(params.slug); return { title: post.title, description: post.description, openGraph: { title: post.title, description: post.description, images: [{ url: post.image }], }, }; } ``

generateMetadata fonksiyonu, aynı veriyi birden fazla kez fetch etmemek için React'in önbellekleme mekanizmasından otomatik olarak yararlanır. Aynı parametrelerle çağrılan fetch istekleri tek bir HTTP isteğine indirgenir.

title ve description Optimizasyonu

Title tag hâlâ en güçlü on-page SEO sinyallerinden biri. App Router'da title alanı için template yapısını kullanın:

``typescript export const metadata: Metadata = { title: { template: "%s | ModernWebSEO", default: "ModernWebSEO - SEO ve Web Tasarım Ajansı", }, }; ``

Bu yapı, alt sayfalarda sadece sayfa başlığını tanımlamanıza izin verir. Template, otomatik olarak site adını ekler.

Description için 150-160 karakter hedefleyin. Hedef anahtar kelimeyi ilk 50 karaktere dahil edin ve bir eylem çağrısı ekleyin.

Statik ve Dinamik OG Tags

Open Graph etiketleri, sosyal medya paylaşımlarında görünürlüğü ve tıklama oranını doğrudan etkiliyor. App Router'da openGraph objesi ile OG metadata'yı yönetin.

Dinamik OG görseller için Next.js'in ImageResponse API'sini kullanabilirsiniz. app/og/route.tsx dosyası oluşturarak her sayfa için programatik görsel üretin. Bu yaklaşım, her blog yazısı için ayrı görsel tasarlamak yerine otomatik görsel üretimi sağlar.

Twitter Card'lar için twitter objesini ayrıca tanımlayın. summary_large_image card türü, Twitter ve X'te daha büyük görsel gösterimi sağlar.

JSON-LD Schema Entegrasyonu

Yapılandırılmış veri, Google'ın içeriğinizi anlamasına yardımcı olur ve zengin snippet'ler kazanmanızı sağlar. Next.js App Router'da JSON-LD'yi <script> etiketi olarak ekleyin:

```tsx export default function BlogPost({ post }) { const jsonLd = { "@context": "https://schema.org", "@type": "Article", "headline": post.title, "author": { "@type": "Person", "name": post.author.name, }, "datePublished": post.publishedAt, "image": post.image, };

return ( <> <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} /> {/ Sayfa içeriği /} </> ); } ```

Schema TürüKullanım AlanıZengin Snippet Etkisi
ArticleBlog yazılarıYazar, tarih gösterimi
ProductÜrün sayfalarıFiyat, stok, yorum
LocalBusinessYerel işletmeHarita, saat, telefon
BreadcrumbListTüm sayfalaraBreadcrumb gösterimi
FAQPageSSS bölümleriAccordion sonuçlar
WebSiteAna sayfaSitelinks search box

Her sayfa türü için ilgili schema'yı ekleyin. BreadcrumbList'i siteye genelinde tüm sayfalara eklemek, Google'ın site yapısını anlamasını kolaylaştırır.

sitemap.ts ve robots.ts Yapılandırması

App Router'da sitemap ve robots dosyaları artık TypeScript/JavaScript ile programatik olarak üretiliyor. Bu, CMS'den dinamik içerik çekip otomatik sitemap oluşturmanızı sağlar.

app/sitemap.ts dosyası:

``typescript export default async function sitemap(): Promise<MetadataRoute.Sitemap> { const posts = await getAllBlogPosts(); const blogUrls = posts.map((post) => ({ url: https://modernwebseo.com/blog/${post.slug}`,

lastModified: post.updatedAtpost.publishedAt,

return [ { url: "https://modernwebseo.com", priority: 1.0 }, { url: "https://modernwebseo.com/hizmetler", priority: 0.9 }, ...blogUrls, ]; } ```

app/robots.ts dosyası ile bot kurallarını programatik yönetin. Crawl-delay direktifini ekleyin ve yönetim paneli URL'lerini disallow listesine alın.

hreflang ile Çok Dilli SEO

Türkçe ve İngilizce içerik sunan sitelerde hreflang etiketleri zorunlu. App Router'da alternates.languages objesi ile yönetin:

``typescript alternates: { canonical: "https://modernwebseo.com/blog/nextjs-seo", languages: { "tr": "https://modernwebseo.com/blog/nextjs-seo", "en": "https://modernwebseo.com/en/blog/nextjs-seo", }, }, ``

x-default değerini de ekleyin. x-default, dil tercihine uymayan kullanıcılar için gösterilecek sayfayı belirtir.

ISR ve Static Generation Stratejisi

Next.js'in SEO açısından en güçlü özelliği, Incremental Static Regeneration (ISR) desteği. Blog yazıları, ürün sayfaları ve kategori sayfaları için ISR kullanın.

generateStaticParams ile derleme zamanında hangi sayfaların statik olarak üretileceğini belirleyin. revalidate değeri ile kaç saniyede bir yeniden üretileceğini ayarlayın.

StratejiKullanım DurumuRevalidate Süresi
Static (SSG)Değişmeyen sayfalarfalse
ISRBlog, ürün sayfaları3600 (1 saat)
SSRKullanıcıya özel içerik0 (her istekte)
Client-sideDashboard, kişisel veriler-

Haber siteleri için revalidate süresini 300 saniye (5 dakika) olarak ayarlayın. Blog içerikleri için 3600-86400 saniye aralığı yeterlidir.

Core Web Vitals Optimizasyonu

Lighthouse 100 skoru, mükemmel bir teknik kurulumun göstergesi. Next.js, bu hedef için birçok yerleşik araç sunuyor.

Image Optimizasyonu: next/image bileşeni, WebP dönüşümü, lazy loading ve boyut optimizasyonunu otomatik yapıyor. priority prop'unu LCP elementi olan görsele ekleyin.

Font Optimizasyonu: next/font ile Google Fonts'u local olarak sunun. Bu yaklaşım, harici DNS çözümlemesini ortadan kaldırır ve FOUT (Flash of Unstyled Text) sorununu çözer.

Script Optimizasyonu: Üçüncü taraf scriptleri için next/script bileşenini strategy="afterInteractive" veya strategy="lazyOnload" ile yükleyin. Analytics ve chat widget'larını bu şekilde yüklemek, INP skorunu iyileştirir.

Performans MetriğiHedefnext/image Katkısınext/font Katkısı
LCP< 2.5sYüksekOrta
INP< 200msDüşükDüşük
CLS< 0.1YüksekYüksek
FCP< 1.8sOrtaYüksek

Sık Sorulan Sorular

Next.js App Router, Pages Router'a göre SEO açısından daha mı iyi? App Router, metadata yönetimi, sitemap üretimi ve streaming rendering açısından Pages Router'dan daha güçlü. Ancak mevcut Pages Router projeleri için zorunlu geçiş yapmak gerekmez. Yeni projeler için App Router tercih edin. Mevcut Pages Router sitelerinde de doğru yapılandırmayla yüksek SEO skoru elde edebilirsiniz.

generateMetadata async olmalı mı? Hayır, zorunlu değil. Veritabanı veya API'den veri çekmeden metadata oluşturabiliyorsanız, senkron metadata export yeterli. Dinamik içerik gerektiren sayfalarda async generateMetadata kullanın. Her iki yaklaşım da App Router tarafından destekleniyor.

JSON-LD nerede eklenmelidir, layout'ta mı yoksa page'de mi? Site genelinde geçerli schema'ları (WebSite, Organization) root layout'a ekleyin. Sayfa özelindeki schema'ları (Article, Product, FAQ) ilgili page bileşenine ekleyin. Bu ayrım, her sayfanın kendi bağlamına uygun yapılandırılmış veri sunmasını sağlar.

Next.js ile sitemap oluşturmak için next-sitemap kütüphanesi hâlâ gerekli mi? App Router'ın yerleşik sitemap.ts desteği, çoğu kullanım senaryosu için yeterli. next-sitemap, özellikle Pages Router projeleri için hâlâ geçerli. App Router projesinde next-sitemap kullanmak mümkün, ama yerleşik çözüm daha az bağımlılık anlamına geliyor.

Canonical URL'leri nerede tanımlamalıyım? Her sayfa için alternates.canonical değerini generateMetadata içinde açıkça belirtin. Özellikle URL parametreli sayfalar (filtreleme, sayfalama) için canonical tag zorunlu. Parametre içeren URL'lerin tümü, parametre içermeyen ana URL'ye canonical olarak işaret etmeli.

ISR ile SEO arasındaki ilişki nedir? ISR, sayfaları statik olarak sunduğu için Googlebot sayfayı hızla tarayabiliyor. Revalidate süresi geçmeden yapılan değişiklikler, Googlebot'un görmesi için yeniden derlemeyi tetikler. Kritik içerik güncellemeleri için On-Demand ISR ile manuel revalidation tetikleyebilirsiniz.

OG görsel boyutu ne olmalıdır? 1200x630 piksel, Facebook ve Twitter için standart boyut. Next.js ImageResponse API'si varsayılan olarak bu boyutu kullanıyor. Görselin dosya boyutunu 200KB altında tutun; büyük OG görseller sosyal medya crawler'larında sorun yaratabilir.

hreflang etiketleri doğru çalışıyor mu nasıl kontrol ederim? Google Search Console'daki "Uluslararası Hedefleme" raporunu inceleyin. hreflang Validator araçlarını (hreflang.org gibi) kullanarak hataları tespit edin. En yaygın hata: karşılıklı referans eksikliği. Türkçe sayfa İngilizce sayfaya işaret ediyorsa, İngilizce sayfa da Türkçe sayfaya işaret etmeli.

next/font ile Google Fonts nasıl kullanılır? next/font/google paketinden ilgili fontu import edin, subsets ve display parametrelerini ayarlayın. Font değişkenini root layout'ta HTML elementine className olarak ekleyin. Bu yapı, fontu local olarak sunarak Google Fonts CDN bağımlılığını kaldırır.

Sonuç ve Aksiyon Planı

Next.js App Router, SEO için güçlü bir temel sunuyor. generateMetadata, sitemap.ts, JSON-LD schema ve next/image gibi araçları doğru yapılandırdığınızda, teknik SEO sorunlarının büyük bölümünü otomatik olarak çözüyorsunuz.

Başlangıç için şu adımları izleyin: Önce root layout.tsx'e temel metadata template'ini ekleyin. Ardından sitemap.ts ve robots.ts dosyalarını oluşturun. Her sayfa türü için ilgili JSON-LD schema'yı tanımlayın. Son olarak Lighthouse ile Core Web Vitals skorlarınızı ölçün ve hedeflere ulaşana kadar optimize edin.

Teknik SEO kurulumunuzu profesyonel olarak yaptırmak veya mevcut Next.js projenizi denetletmek isterseniz:

Ücretsiz Teklif Al →

Etiketler

#nextjs#seo#app router#metadata#schema#teknik seo#core web vitals
Paylaş:

İlgili Yazılar

Google Search Console Dizine Ekleme: 2026 Uzman Rehberi
18 Mart 2026
20 dakika okuma
SEO

Google Search Console Dizine Ekleme: 2026 Uzman Rehberi

Neden Google sayfanızı dizine eklemiyor? Bu 2026 uzman rehberi URL İnceleme Aracı'ndan site haritası gönderimine, tarama bütçesi optimizasyonundan her kapsam hatası türünü düzeltmeye kadar her şeyi kapsıyor — Google'ın resmi dokümantasyonu referans alınarak.

#google search console#dizine ekleme#site haritası
Devamını Oku
Core Web Vitals Optimizasyonu: 2026 Kapsamlı Rehberi
18 Mart 2026
22 dakika okuma
SEO

Core Web Vitals Optimizasyonu: 2026 Kapsamlı Rehberi

Core Web Vitals skorlarınız düşükse Google sizi cezalandırıyor — hem sıralamada hem dönüşüm oranında. 750+ projede elde ettiğimiz 97 Lighthouse skoru deneyimini ve LCP, INP, CLS optimizasyon adımlarını bu rehberde paylaşıyoruz.

#core web vitals#lcp optimizasyonu#inp optimizasyonu
Devamını Oku
Web Sitesi Trafiği Nasıl Artırılır: 2026 İçin Kanıtlanmış Stratejiler
18 Mart 2026
18 dakika okuma
SEO

Web Sitesi Trafiği Nasıl Artırılır: 2026 İçin Kanıtlanmış Stratejiler

Çoğu web sitesi ayda 500'den az ziyaretçi alıyor. Teknik SEO, içerik stratejisi, site hızı ve link kurma — hepsini birleştiren kapsamlı 2026 trafik büyütme rehberi.

#web sitesi trafiği artırma#organik trafik#teknik seo
Devamını Oku

Minimal & Neo-Brutalist Akış

Web Sitenizi Neo-Brutalist Dokunuşla Yenilemeye Hazır mısınız?

2025 trendlerini sahaya taşıyan ekibimizle 15 dakikalık strateji seansı planlayın, sprint takviminizi birlikte oluşturalım.