Alışveriş Sepeti

Sepetiniz boş

Performans & SEO · 14 dk

E-Ticarette Teknik SEO: JSON-LD Yapısal Veri, Dinamik OpenGraph ve 100k+ Ürün Site Haritası

Google arama sonuçlarında doğrudan yıldızlı değerlendirmeler, anlık stok rozeti ve fiyat etiketleri çıkaran Schema.org JSON-LD, dinamik sosyal medya kartları ve devasa XML sitemap mimarisi.

Yazar: Stilgen Core Engineering

E-Ticarette Teknik SEO: JSON-LD Yapısal Veri, Dinamik OpenGraph ve 100k+ Ürün Site Haritası

1. Neden Klasik Meta Etiketleri Artık Yetersiz?

Sadece <title> ve <meta name="description"> yazarak Google'da ilk sıraya çıkma çağı 10 yıl önce kapandı. Modern e-ticaret rekabetinde kullanıcıların arama sonuçlarında tıklama oranını (CTR) ikiye katlayan şey Zengin Sonuçlardır (Rich Snippets):

  • Arama sonucunun hemen altında 5 üzerinden 4.8 yıldız rozeti,
  • "Stokta Var (InStock)" yeşil yazısı ve kargo süresi tahmini,
  • Doğrudan Google üzerinde beliren fiyat ve para birimi bilgisi.

Google botları bu verileri sayfanın HTML'inden tahmin etmekle uğraşmaz. Bunları doğrudan JSON-LD (JavaScript Object Notation for Linked Data) formatında yapılandırılmış olarak sunmanız gerekir.

2. Stilmerce Ürün JSON-LD Şeması

Stilmerce'in her ürün sayfası için sunucu tarafında ürettiği eksiksiz Schema.org yapısal veri bloğu:

// components/ProductJsonLd.tsx
export function ProductJsonLd({ product }: { product: ProductWithReviews }) {
  const schema = {
    '@context': 'https://schema.org',
    '@type': 'Product',
    name: product.title,
    image: product.images,
    description: product.description,
    sku: product.sku,
    mpn: product.mpn || product.sku,
    brand: {
      '@type': 'Brand',
      name: product.brandName || 'Stilmerce',
    },
    offers: {
      '@type': 'Offer',
      url: `https://stilgen.com/products/${product.slug}`,
      priceCurrency: 'TRY',
      price: (product.priceCents / 100).toFixed(2),
      priceValidUntil: '2027-12-31',
      itemCondition: 'https://schema.org/NewCondition',
      availability: product.stock > 0 
        ? 'https://schema.org/InStock' 
        : 'https://schema.org/OutOfStock',
      seller: {
        '@type': 'Organization',
        name: 'Stilmerce Storefront',
      },
    },
    aggregateRating: product.reviewCount > 0 ? {
      '@type': 'AggregateRating',
      ratingValue: product.averageRating.toFixed(1),
      reviewCount: product.reviewCount,
    } : undefined,
  };

  return (
    <script
      type="application/ld+json"
      dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
    />
  );
}

3. 100.000+ Ürün İçin Parçalı ve Streaming Sitemap.xml Mimarisi

Google'ın sitemap kurallarına göre tek bir XML dosyası 50.000 linki veya 50 MB boyutu aşamaz. 150.000 ürünü olan bir mağazada tek bir statik sitemap oluşturmaya kalkarsanız hafıza tükenir.

Stilmerce, Sitemap İndeksleme ve Streaming mimarisi kullanır:

// app/sitemap.ts: Otomatik bölünmüş sitemap oluşturucu
export async function generateSitemaps() {
  const totalProducts = await getTotalProductCount();
  const sitemapsNeeded = Math.ceil(totalProducts / 25000);
  
  // Örn: [{ id: 0 }, { id: 1 }, { id: 2 }, { id: 3 }]
  return Array.from({ length: sitemapsNeeded }, (_, i) => ({ id: i }));
}

export default async function sitemap({ id }: { id: number }) {
  const products = await getProductBatch(id * 25000, 25000);
  return products.map(p => ({
    url: `https://stilgen.com/products/${p.slug}`,
    lastModified: p.updatedAt,
    changeFrequency: 'daily',
    priority: 0.8,
  }));
}

Sıfır Bellek Tüketimi

Googlebot /sitemap/0.xml, /sitemap/1.xml gibi parçaları çağırdıkça veriler veritabanı stream'i ile üretilir; sunucuda devasa XML dosyaları depolamaya gerek kalmaz.