Takip et

Feed Kurtarma: Ham Ulta Verilerini Google Merchant Center XML’ine Dönüştürme

Örnek: Fiyat Verisi Temizliği (Python)

Feed Kurtarma: Ham Ulta Verilerini Google Merchant Center XML’ine Dönüştürme

E-ticaret dünyasında ürünlerinizi doğru kitleye ulaştırmanın en etkili yollarından biri Google Alışveriş reklamlarıdır. Ancak bu reklamların temelini oluşturan ürün feed’lerinin kalitesi, kampanya başarınızı doğrudan etkiler. Özellikle Ulta gibi büyük ve dinamik bir e-ticaret sitesinden çekilen ham veriler, genellikle Google Merchant Center (GMC) gereksinimlerini karşılamaktan uzaktır. Bu teknik makale, ham Ulta verilerini temizleyerek, standartlaştırarak ve zenginleştirerek Google Merchant Center’a uygun, hatasız bir XML feed’ine nasıl dönüştüreceğinizi adım adım açıklayacaktır. Bu süreç, “Feed Kurtarma” olarak adlandırılır ve reklam performansınızı maksimize etmek için kritik öneme sahiptir.

Giriş: Ham Veri Sorunsalı ve Feed Kurtarmanın Önemi

Ulta gibi dinamik ve sürekli güncellenen e-ticaret sitelerinden veri çekmek (scraping), pazarlamacılar ve veri analistleri için cazip bir kaynaktır. Ancak bu veriler genellikle ham, yapısal olmayan ve tutarsız bir formatta gelir. Ürün başlıkları eksik olabilir, fiyat bilgileri metin içinde gömülü olabilir, stok durumu net olmayabilir veya görsel URL’leri geçersiz çıkabilir. Bu tür “ham veri” sorunları, Google Merchant Center gibi platformlara doğrudan yüklenemez ve bir dizi dönüşüm sürecinden geçirilmesi gerekir. İşte bu noktada “Feed Kurtarma” devreye girer.

Ulta Verilerinin Özellikleri

Ulta’nın web sitesi, kullanıcı deneyimini zenginleştirmek için dinamik içerik yükleme, JavaScript tabanlı etkileşimler ve bazen karmaşık HTML yapıları kullanır. Bu durum, otomatik veri çekme (scraping) süreçlerini zorlaştırabilir. Çekilen veriler genellikle aşağıdaki sorunları barındırır:

  • Tutarsız HTML Yapıları: Farklı ürün sayfalarında aynı bilgi için farklı etiketler veya sınıflar kullanılabilir.
  • Dinamik Yüklenen İçerik: Fiyat, stok durumu gibi kritik bilgiler sayfa yüklendikten sonra JavaScript ile getirilebilir, bu da basit HTTP istekleriyle çekilemez.
  • Eksik veya Yanlış Bilgiler: Bazı ürünlerin GTIN’i (Global Ticari Ürün Numarası) olmayabilir, açıklamalar yetersiz kalabilir veya görsellerin çözünürlüğü düşük olabilir.
  • Metinsel Fiyatlar: Fiyatlar “24.99 $” gibi string formatında olabilir ve sayısal işleme uygun olmayabilir.

Neden Feed Kurtarma?

Kaliteli bir ürün feed’i, Google Alışveriş reklamlarının temelidir. İyi optimize edilmiş bir feed, ürünlerinizin doğru aramalarda görünmesini sağlar, tıklama oranlarını (CTR) artırır ve dönüşüm oranlarını yükseltir. Feed kurtarma süreci, bu ham veriyi işleyerek pazarlama hedeflerinize ulaşmanızı sağlayan temiz, yapılandırılmış ve optimize edilmiş bir feed’e dönüştürür. Aksi takdirde, eksik veya hatalı verilerle oluşturulan feed’ler, Google tarafından reddedilir veya düşük performans gösterir.

Google Merchant Center ve Feed Kalitesi

Google Merchant Center, ürün feed’leri için katı kurallar ve gereksinimler belirlemiştir. Bu kurallara uyulmaması, ürünlerinizin onaylanmamasına, reklamlarınızın yayınlanmamasına veya hesabınızın askıya alınmasına yol açabilir. Feed kurtarma, bu gereksinimleri karşılamak ve potansiyel reddedilme nedenlerini ortadan kaldırmak için zorunludur. Kaliteli bir feed, aynı zamanda Google’ın ürünlerinizi daha iyi anlamasına ve ilgili aramalarda göstermesine yardımcı olur.

Veri Toplama ve İlk Temizlik Adımları

Feed kurtarma sürecinin ilk adımı, ham veriyi toplamak ve ön temizliğini yapmaktır. Bu aşama, sonraki adımların başarısı için kritik bir temel oluşturur.

Scraping Yöntemleri ve Araçları

Ulta gibi bir siteden veri çekmek için çeşitli yöntemler ve araçlar mevcuttur:

  • Python Kütüphaneleri:
    • Scrapy: Büyük ölçekli, asenkron scraping projeleri için güçlü bir framework.
    • BeautifulSoup ve Requests: Daha küçük ölçekli projeler veya belirli sayfaları çekmek için ideal, kullanımı kolay kütüphaneler.
    • Selenium veya Playwright: JavaScript ile dinamik olarak yüklenen içerikleri çekmek için bir web tarayıcısını simüle eden araçlar.
  • Node.js Kütüphaneleri: Puppeteer veya Cheerio, JavaScript tabanlı sitelerden veri çekmek için popüler seçeneklerdir.
  • Ticari Scraping Araçları: Bright Data, Scrape.it gibi platformlar, proxy yönetimi ve ölçeklenebilirlik gibi avantajlar sunar.

Hangi yöntemin seçileceği, projenin ölçeğine, bütçeye ve teknik bilgi birikimine bağlıdır. Dinamik içerik nedeniyle genellikle Selenium veya Puppeteer gibi tarayıcı otomasyon araçları tercih edilir.

Ham Verinin Yapısı

Scraping işlemi sonucunda elde edilen ham veri genellikle JSON, CSV veya direkt HTML çıktısı şeklinde olabilir. Bu veriler, genellikle ana ürün bilgileri (başlık, fiyat, açıklama, görsel URL’si), SKU, marka ve kategori gibi temel alanları içerir. Ancak bu alanlar, yukarıda belirtildiği gibi tutarsız veya eksik olabilir.

Temel Veri Temizliği

Ham veriyi topladıktan sonra, ilk temizlik adımları uygulanmalıdır. Bu adımlar, veriyi daha işlenebilir hale getirir:

  1. Boş Değerleri Doldurma: Eksik description veya brand alanları için varsayılan değerler atama veya diğer kaynaklardan tamamlama.
  2. Gereksiz Karakterleri Kaldırma: Fiyatlardan para birimi sembollerini, başlık ve açıklamalardan HTML etiketlerini veya özel karakterleri temizleme.
  3. Veri Tiplerini Düzeltme: Fiyat string’lerini float’a, stok durumunu boolean’a veya belirli bir string formatına dönüştürme.
  4. URL Doğrulama: Görsel ve ürün linklerinin geçerli ve erişilebilir olup olmadığını kontrol etme.

Örnek: Fiyat Verisi Temizliği (Python)


import re

def clean_price(price_str):
    if not price_str:
        return None
    # Para birimi sembollerini, virgülleri kaldır ve noktaya dönüştür
    cleaned = re.sub(r'[^\d.,]+', '', price_str).replace(',', '.')
    try:
        return float(cleaned)
    except ValueError:
        return None

# Kullanım örneği
raw_price = "$24.99 USD"
cleaned_price = clean_price(raw_price) # Sonuç: 24.99

raw_price_turkish = "₺129,90"
cleaned_price_turkish = clean_price(raw_price_turkish) # Sonuç: 129.90

Veri Standardizasyonu ve Zenginleştirme

Temel temizlikten sonra, veriyi Google Merchant Center'ın beklentilerine uygun hale getirmek ve reklam performansını artırmak için standardizasyon ve zenginleştirme adımları gelir.

Ürün Başlıklarını Optimize Etme

GMC'de ürün başlıkları, ürününüzün aramalarda görünmesi için en önemli faktörlerden biridir. Ham başlıklara genellikle marka, model, renk, boyut gibi kritik bilgiler eksik olabilir. Başlıklar, kullanıcıların arama sorgularına uygun olacak şekilde yeniden düzenlenmelidir.

Örnek Başlık Optimizasyonu:

  • Ham Başlık: "Ruj"
  • Optimize Edilmiş Başlık: "MAC Ruby Woo Mat Ruj - Kırmızı, 3g"

Optimal başlık formatı genellikle: [Marka] [Ürün Adı] [Anahtar Özellik 1] [Anahtar Özellik 2] şeklindedir.

Açıklamaları Zenginleştirme

Ürün açıklamaları, ürününüz hakkında daha fazla bilgi sağlar ve potansiyel müşterilerin satın alma kararını etkiler. Açıklamalar, ürünün faydalarını, temel özelliklerini ve anahtar kelimeleri içermelidir. HTML etiketlerinden arındırılmış, okunaklı ve bilgilendirici olmalıdır.

Kategori Eşleştirme

Ulta'nın kendi iç kategori yapısı, Google'ın standart ürün kategorileriyle (Google Product Categories - GPC) genellikle uyuşmaz. Ürünlerinizin doğru kategoride listelenmesi için Ulta kategorilerini GPC'ye eşleştirmek zorunludur. Bu, manuel olarak veya bir eşleştirme tablosu oluşturarak yapılabilir.

Örnek Kategori Eşleştirme Tablosu:

Ulta Kategori Google Ürün Kategorisi (GPC)
Makyaj > Dudaklar > Rujlar Giyim ve Aksesuarlar > Kozmetik > Makyaj > Dudak Makyajı > Rujlar
Cilt Bakımı > Nemlendiriciler Sağlık ve Güzellik > Kişisel Bakım > Cilt Bakımı > Nemlendiriciler
Saç Bakımı > Şampuanlar Sağlık ve Güzellik > Kişisel Bakım > Saç Bakımı > Şampuanlar

Görsel URL'leri ve Stok Durumu

Görsel URL'lerinin geçerli, erişilebilir ve yüksek çözünürlüklü olması gerekir. Ayrıca, ürünlerin stok durumunun (in stock, out of stock, preorder) doğru bir şekilde belirtilmesi, Google'ın reklamları doğru zamanda göstermesi için önemlidir. Stok durumu bilgisi genellikle anlık olarak çekilmeli veya düzenli olarak güncellenmelidir.

Google Merchant Center Gereksinimlerini Anlama

Google Merchant Center, ürün feed'leri için belirli alanları zorunlu kılar ve bazılarını da önerir. Bu gereksinimleri tam olarak anlamak, feed'inizin onaylanması için hayati öneme sahiptir.

Zorunlu Alanlar

Her ürün için aşağıdaki alanlar kesinlikle sağlanmalıdır:

  • id: Her ürün için benzersiz bir kimlik.
  • title: Ürün başlığı (optimize edilmiş hali).
  • description: Ürün açıklaması (zenginleştirilmiş hali).
  • link: Ürünün Ulta'daki doğrudan URL'si.
  • image_link: Ana ürün görselinin URL'si.
  • price: Ürünün güncel fiyatı (örn: "24.99 USD").
  • availability: Stok durumu (in stock, out of stock, preorder).
  • brand: Ürünün markası.
  • gtin: Global Ticari Ürün Numarası (UPC, EAN, ISBN, JAN) veya mpn (Üretici Parça Numarası) ve brand kombinasyonu. Özel ürünler için identifier_exists alanı false olarak ayarlanabilir.
  • condition: Ürünün durumu (new, refurbished, used).

Önerilen Alanlar

Bu alanlar zorunlu olmasa da, ürünlerinizin performansını artırmak ve daha spesifik aramalarda görünmesini sağlamak için şiddetle tavsiye edilir:

  • google_product_category: Google Ürün Kategorisi.
  • product_type: Kendi iç kategori yapınız.
  • item_group_id: Varyant ürünleri (farklı renk, boyut) gruplamak için.
  • color, size, material, pattern: Ürün özelliklerini detaylandırmak için.
  • shipping, tax: Gönderim ve vergi bilgileri.
  • custom_label_0, custom_label_1, vb.: Özel etiketler, kampanya yönetimi için esneklik sağlar.

Veri Formatı Kuralları

GMC, her alan için belirli format kuralları belirler. Örneğin, fiyatlar sayısal bir değer ve para birimi koduyla (örn: "24.99 USD") belirtilmelidir. URL'ler geçerli olmalı ve HTTP/HTTPS protokolünü kullanmalıdır. Başlıklar ve açıklamalar belirli karakter limitlerine sahip olabilir. Bu kurallara uymak, feed'inizin sorunsuz bir şekilde işlenmesini sağlar.

XML Yapılandırması ve Dönüşüm Süreci

Tüm veriler temizlenip standartlaştırıldıktan sonra, sıra bu veriyi Google Merchant Center'ın kabul ettiği XML formatına dönüştürmeye gelir. GMC, Atom 1.0 veya RSS 2.0 tabanlı XML şemalarını destekler.

XML Şeması

Google Alışveriş feed'leri için genellikle Atom 1.0 şeması kullanılır. Bu şema, ürün bilgilerini belirli etiketler altında yapılandırır ve Google'ın özel uzantılarını (g: öneki ile belirtilenler) kullanır.

XML Oluşturma Adımları

  1. Kök Element ve Namespace Tanımları: XML dosyasının başında veya kök elementi ve gerekli namespace (ad alanı) tanımları yer alır. Google'ın özel etiketleri için xmlns:g="http://base.google.com/ns/1.0" ad alanı eklenmelidir.
  2. Kanal Bilgileri: Feed'in genel bilgilerini içeren , , gibi etiketler eklenir.
  3. Her Ürün İçin veya Elementleri: Her bir ürün, içinde bir (Atom için) veya içinde bir (RSS için) elementi olarak temsil edilir.
  4. GMC Alanlarını Ekleme: Her veya içine, daha önce hazırladığınız tüm zorunlu ve önerilen GMC alanları, g: önekiyle (örn: , ) eklenir.

Python ile XML Oluşturma Örneği (lxml kütüphanesi ile):


from lxml import etree

def create_gmc_xml(products_data):
    # Google Merchant Center namespace
    ns_g = "http://base.google.com/ns/1.0"
    # Atom 1.0 namespace
    ns_atom = "http://www.w3.org/2005/Atom"

    # Kök elementi oluştur
    root = etree.Element("feed", nsmap={'g': ns_g, None: ns_atom})

    # Feed genel bilgilerini ekle
    title = etree.SubElement(root, "title")
    title.text = "Ulta Ürün Feed'i"
    link = etree.SubElement(root, "link", href="https://www.example.com", rel="self")
    updated = etree.SubElement(root, "updated")
    updated.text = "2023-10-27T10:00:00Z" # Son güncelleme tarihi

    for product in products_data:
        entry = etree.SubElement(root, "entry")
        
        # Zorunlu alanlar
        etree.SubElement(entry, f"{{{ns_g}}}id").text = str(product['id'])
        etree.SubElement(entry, f"{{{ns_g}}}title").text = product['title']
        etree.SubElement(entry, f"{{{ns_g}}}description").text = product['description']
        etree.SubElement(entry, f"{{{ns_g}}}link").text = product['link']
        etree.SubElement(entry, f"{{{ns_g}}}image_link").text = product['image_link']
        etree.SubElement(entry, f"{{{ns_g}}}price").text = f"{product['price']:.2f} USD"
        etree.SubElement(entry, f"{{{ns_g}}}availability").text = product['availability']
        etree.SubElement(entry, f"{{{ns_g}}}brand").text = product['brand']
        etree.SubElement(entry, f"{{{ns_g}}}condition").text = product['condition']

        # GTIN veya MPN/brand
        if 'gtin' in product and product['gtin']:
            etree.SubElement(entry, f"{{{ns_g}}}gtin").text = product['gtin']
        elif 'mpn' in product and product['mpn'] and 'brand' in product and product['brand']:
            etree.SubElement(entry, f"{{{ns_g}}}mpn").text = product['mpn']
            # Brand zaten eklenmişti
        else:
            etree.SubElement(entry, f"{{{ns_g}}}identifier_exists").text = "false"

        # Önerilen alanlar (örnek)
        if 'google_product_category' in product and product['google_product_category']:
            etree.SubElement(entry, f"{{{ns_g}}}google_product_category").text = product['google_product_category']
        if 'color' in product and product['color']:
            etree.SubElement(entry, f"{{{ns_g}}}color").text = product['color']
        # Diğer alanlar da benzer şekilde eklenebilir

    # XML'i string olarak döndür
    return etree.tostring(root, pretty_print=True, encoding='utf-8', xml_declaration=True).decode()

# Örnek kullanım (gerçek verilerle değiştirilmeli)
# products = [
#     {
#         'id': 12345,
#         'title': 'MAC Ruby Woo Mat Ruj - Kırmızı, 3g',
#         'description': 'MAC Cosmetics\'in ikonik Ruby Woo mat rujunu keşfedin. Yoğun pigmentli, uzun süre kalıcı formül.',
#         'link': 'https://www.ulta.com/ruby-woo-matte-lipstick',
#         'image_link': 'https://www.ulta.com/images/ruby-woo.jpg',
#         'price': 24.00,
#         'availability': 'in stock',
#         'brand': 'MAC Cosmetics',
#         'condition': 'new',
#         'gtin': '773602061030',
#         'google_product_category': 'Giyim ve Aksesuarlar > Kozmetik > Makyaj > Dudak Makyajı > Rujlar',
#         'color': 'Kırmızı'
#     }
# ]
# xml_output = create_gmc_xml(products)
# print(xml_output)

Doğrulama, Hata Ayıklama ve Optimizasyon

XML feed'i oluşturulduktan sonra, Google Merchant Center'a yüklemeden önce ve yükledikten sonra dikkatlice doğrulanmalı ve hatalar ayıklanmalıdır.

GMC Feed Tanılama

Google Merchant Center, yüklediğiniz feed'i otomatik olarak tarar ve "Teşhis" bölümünde detaylı bir rapor sunar. Bu rapor, feed'inizdeki hataları, uyarıları ve iyileştirme fırsatlarını gösterir.

  • Hatalar: Ürünlerin onaylanmasını engelleyen kritik sorunlardır (örn: eksik zorunlu alanlar, geçersiz fiyat formatı).
  • Uyarılar: Ürünler onaylansa da performansını etkileyebilecek veya gelecekte hataya dönüşebilecek sorunlardır (örn: düşük çözünürlüklü görsel, eksik önerilen alan).
  • Fırsatlar: Feed'i daha da optimize etmek için önerilerdir.

Hata Türleri ve Çözümleri

  • Eksik Alanlar: En yaygın hatalardan biridir. Hangi alanların eksik olduğunu belirleyin ve veri çekme veya temizleme aşamalarını kontrol ederek bu bilgileri ekleyin.
  • Geçersiz Değerler: Fiyat formatı, URL geçerliliği, stok durumu metni gibi değerlerin GMC kurallarına uygun olduğundan emin olun.
  • Görsel Hataları: Görsel URL'lerinin erişilebilir, doğru formatta ve minimum boyut gereksinimlerini karşıladığından emin olun.
  • GTIN Sorunları: GTIN'ler benzersiz olmalı ve doğru formatta girilmelidir. Eğer GTIN yoksa, mpn ve brand kullanın veya identifier_exists alanını false olarak ayarlayın.
  • Kategori Eşleştirme Hataları: Google Ürün Kategorileri'nin doğru ve en spesifik seviyede eşleştiğinden emin olun.

Performans Optimizasyonu

Feed'i yalnızca hatasız hale getirmek yeterli değildir; aynı zamanda performansını da optimize etmelisiniz:

  • Başlık ve Açıklama Optimizasyonu: Anahtar kelimeleri ve ürünün en çekici özelliklerini içeren başlıklar ve açıklamalar kullanın.
  • Özel Etiketler (Custom Labels): Kampanya yönetimi için özel etiketler oluşturun. Örneğin, "yeni gelenler", "çok satanlar", "indirimli ürünler" gibi etiketlerle ürün grupları oluşturabilirsiniz.
  • Promosyonlar: Fiyat indirimleri veya özel teklifler için promosyon feed'lerini kullanın.

A/B Testleri

Farklı başlık formatları, açıklamalar veya görsellerin performansını ölçmek için A/B testleri yapabilirsiniz. Bu, hangi elementlerin daha yüksek tıklama ve dönüşüm oranları sağladığını anlamanıza yardımcı olur.

Sürekli Bakım ve Otomasyon

Feed kurtarma tek seferlik bir işlem değildir. Ürün bilgilerinin sürekli güncel kalması ve feed'in hatasız çalışması için düzenli bakım ve otomasyon şarttır.

Periyodik Gün

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık