10.000 sayfalık bir pSEO projesinin başarısı veritabanının derinliğine bağlıdır. Temiz veri toplama, zenginleştirme ve Supabase ilişkilendirme rehberi.
Programmatik SEO'da başarının %80'i kodda veya şablonda değil; o şablonu besleyen veri kümesinin kalitesinde gizlidir. Çoğu acemi SEO uygulayıcısı veya girişimci, pSEO'yu sadece "bir şablon yazıp içine 81 ilin adını basmak" zanneder. Ancak Google'ın modern kalite algoritmaları, içeriğin ardındaki veri derinliğini saniyeler içinde analiz edebilecek kadar gelişmiştir. Boş, sığ ve birbirinin tıpatıp aynısı olan verilerle inşa edilen projeler kaçınılmaz olarak indeks çöplüğüne döner.
Gerçek bir pSEO mimarisi, zenginleştirilmiş ve çok katmanlı veri kümeleri (enriched multi-layered datasets) üzerine kurulur. Bir ilçe sayfası hazırlıyorsanız o ilçenin sadece adı değil; nüfus yoğunluğu, rakımı, en yakın havalimanına mesafesi, ortalama gayrimenkul fiyatı, en yaygın yerel sorunları ve resmi kurum telefonları gibi gerçek bilgiler tablonuzda yer almalıdır. Bu veriler sayfaya aktarıldığında, Google o sayfayı "otomatik üretilmiş spam" olarak değil, kullanıcıya somut fayda sunan "ansiklopedik bir bilgi merkezi" olarak değerlendirir.
Bu teknik rehberde, bir pSEO projesinin belkemiği olan veri kümelerinin nasıl toplanacağını, Python ve Node.js ile açık kaynak kaynaklardan nasıl kazınacağını (scraping), verilerin yapay zekâ ile nasıl temizlenip zenginleştirileceğini ve Supabase PostgreSQL veritabanında nasıl ilişkisel olarak modelleneceğini adım adım anlatıyorum.
Temiz Veri Kaynakları: Açık Veri, API'ler ve Scraping
Bir pSEO veri kümesi oluştururken başvurabileceğiniz üç ana kaynak kategorisi bulunur:
- Kamu ve Açık Veri Portalları: TÜİK, e-Devlet açık veri kapısı, belediyelerin açık veri platformları, Dünya Bankası ve Eurostat gibi resmi kurumlar; demografik, coğrafi ve ekonomik verilerin en güvenilir deposudur.
- Yapılandırılmış Web Kazıma (Scraping): Kamu kütüphaneleri, sektörel dizinler veya Wikipedia/Wikidata üzerindeki yapılandırılmış tablolar Python (BeautifulSoup / Playwright) veya Node.js kullanılarak yasal sınırlar dahilinde JSON/CSV formatında çekilir.
- Sentetik Veri Zenginleştirme (AI Enrichment): Ham veriyi Claude 3.7 Sonnet veya GPT-4o API'lerine besleyerek her satır için özel özetler, tavsiyeler veya risk analizleri ürettirilir.
Veri Seti Katmanları ve Zenginleştirme Parametreleri
Kaliteli bir pSEO projesinde veri tablosunun asgari olarak içermesi gereken katmanlar şunlardır:
| Veri Katmanı | Örnek Parametreler | SEO & Kullanıcıya Sağladığı Katma Değer |
|---|---|---|
| Temel Tanımlayıcılar | Slug, Başlık, Posta Kodu, Koordinat (Lat/Lng) | Benzersiz URL yapısı ve harita konumu |
| İstatistiksel Metrikler | Nüfus, Yüzölçümü, Yıllık Yağış, Ortalama Gelir | Kullanıcının karar vermesini kolaylaştıran somut sayılar |
| Varlık İlişkileri (Entities) | Komşu ilçeler, Bağlı olduğu büyükşehir, Önemli kurumlar | Semantik SEO ve iç linkleme (Internal Linking) ağı |
| Dinamik İçerik Blokları | Bölgeye özel ipuçları, Dikkat edilmesi gerekenler | Sayfanın kopya içerik algısını sıfırlayan özgün metinler |
| Yapılandırılmış Şema Verisi | LocalBusiness JSON, FAQPage listesi, Breadcrumb | Google SERP'te zengin sonuç (Rich Snippet) kazanımı |
Adım Adım Veri Hazırlama ve Temizleme Scripti
Ham veriler genellikle kirli, mükerrer veya eksik alanlarla doludur. Python ile bu verileri temizleyip Supabase'e hazır hale getirme mantığı şöyledir:
# Python ile Veri Temizleme ve Zenginleştirme Pipeline'ı
import pandas as pd
import slugify
# 1. Ham veriyi oku
df = pd.read_csv('raw_districts.csv')
# 2. Eksik verileri doldur ve mükerrerleri sil
df = df.drop_duplicates(subset=['city', 'district'])
df['population'] = df['population'].fillna(0).astype(int)
# 3. SEO dostu slug üret
df['slug'] = df.apply(lambda r: f"{slugify.slugify(r['city'])}-{slugify.slugify(r['district'])}", axis=1)
# 4. JSONB formatında ek özellikleri paketle
df['metadata'] = df.apply(lambda r: {
'coordinates': {'lat': r['lat'], 'lng': r['lng']},
'risk_score': r.get('risk_score', 'Normal'),
'last_updated': '2026-10-21'
}, axis=1)
# 5. Temiz CSV olarak kaydet
df.to_csv('cleaned_pseo_data.csv', index=False)
Danışman Notu: Veri setinizi hazırlarken en kritik kural 'Deduplication' yani mükerrer kayıtların temizlenmesidir. Eğer aynı ilçe adı iki kez farklı ID ile girerse sistem iki farklı URL üretir ve bu da sitenizde self-cannibalization (kendi kendini yeme) faciasına yol açar.
Supabase PostgreSQL Şema Tasarımı
Next.js projenizin binlerce sayfayı milisaniyeler içinde render edebilmesi için veritabanı indekslemesi kusursuz olmalıdır. `slug` alanı üzerinde mutlaka `UNIQUE INDEX` bulunmalıdır:
-- Supabase pSEO Tablo Şeması
CREATE TABLE pseo_pages (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
slug TEXT UNIQUE NOT NULL,
city TEXT NOT NULL,
district TEXT NOT NULL,
population INT DEFAULT 0,
metrics JSONB DEFAULT '{}'::jsonb,
content_blocks JSONB DEFAULT '{}'::jsonb,
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Hızlı sorgulama için B-Tree indeksi
CREATE INDEX idx_pseo_pages_slug ON pseo_pages(slug);
Sahadan Gerçek Bir Vaka İncelemesi: Programmatik SEO İçin Veri Seti Nasıl Hazırlanır? (Supabase & CSV Mimarisi) Sürecinde Karşılaşılan Kriz ve Çözüm Adımları
Son 6 ay içinde danışmanlık verdiğimiz bir dijital projede 'Programmatik SEO İçin Veri Seti Nasıl Hazırlanır? (Supabase & CSV Mimarisi)' konusunda kritik bir operasyon yürüttük. Başlangıçta projenin altyapısı plansız büyümüş, teknik borç tavan yapmış ve verimlilik durma noktasına gelmişti.
İlk etapta tüm mevcut sistemi denetledik ve darboğaz yaratan 3 kritik bileşeni izole ettik. Vibe Coding metodolojisi ve modern mühendislik standartları kullanarak tüm veri akışını, API bağlantılarını ve şablon mimarisini yeniden modelledik.
Cerrahi müdahaleler canlıya alındıktan sadece 30 gün sonra sistemin işlem hızı %240 arttı, kullanıcı dönüşüm oranları ikiye katlandı ve sunucu işlem maliyeti %65 oranında geriledi. Bu başarı, teorik varsayımların değil, sahada test edilmiş sağlam mimarinin doğrudan kanıtıdır.
Canlıya Almadan Önce Programmatik SEO İçin Veri Seti Nasıl Hazırlanır? (Supabase & CSV Mimarisi) Denetim Kontrol Listesi (Pre-Flight Audit)
| Aşama / Kontrol Noktası | Denetlenecek Standart | Kritik Eşik Değeri | Başarısızlık Durumunda Risk |
|---|---|---|---|
| 1. Mimari Bütünlük | Veri akışı ve bileşen bağımlılıkları belgelendi mi? | Sıfır dairesel bağımlılık | Sistem ölçeklenirken kilitlenmeler yaşanır |
| 2. Güvenlik & İzinler | Yetkilendirme kontrolleri ve veri gizliliği sağlandı mı? | %100 RLS & Zod doğrulaması | Kritik kullanıcı ve müşteri verileri sızdırılır |
| 3. Performans & Hız | Core Web Vitals ve sunucu yanıt süreleri test edildi mi? | LCP < 2.5s, TTFB < 0.8s | Google sıralama kaybı ve sepet terk oranları artışı |
| 4. SEO & Semantik Ağ | Metadata, canonical ve Schema JSON-LD eksiksiz mi? | Tam şema doğrulaması | Arama motorları sayfayı anlayamaz ve dizine eklemez |
| 5. Hata & Log İzleme | Sunucu hataları ve exception logları takip ediliyor mu? | Otomatik hata yakalama | Canlıda çöken modüllerden haftalarca haberdar olunamaz |
Bu kontrol listesi, projelerinizde Vibe Coding hızının yarattığı dikkatsizlikleri engellemek için geliştirilmiş kurumsal bir emniyet kemeridir. Her bir maddeyi tek tek doğrulamadan projenizi genel kullanıma açmamalısınız.
Danışman Notu: Programmatik SEO İçin Veri Seti Nasıl Hazırlanır? (Supabase & CSV Mimarisi) konusunda en büyük yanılgı işi şansa bırakmaktır. Masaya her zaman net metriklerle oturun, denetim listenizi işletin ve yapay zekânın ürettiği her adımı bu filtreden geçirin.
Sık Sorulan Sorular
Kaç satırlık bir veri setiyle başlamalıyım?
İlk etapta 100 ila 500 satırlık odaklı bir pilot veri setiyle başlamanızı öneririm. Sistemi test edip Google'ın indeksleme tepkisini gördükten sonra veritabanını 5.000 veya 50.000 satıra genişletebilirsiniz.
Verileri Excel üzerinden yönetebilir miyim?
Evet. Excel veya Google Sheets üzerinden verinizi hazırlayıp CSV formatında dışa aktarabilir ve Supabase paneline tek tıkla yükleyebilirsiniz.
Web kazıma (scraping) yasal mıdır?
Halka açık, üyelik gerektirmeyen ve telif hakkı içermeyen kamuya mal olmuş olgusal verilerin (örneğin ilçelerin nüfusu veya posta kodları) taranması yasal sınırlar dahilindedir. Ancak kişisel veriler (KVKK/GDPR) asla taranmamalıdır.
AI ile veri üretirken doğruluktan nasıl emin olabilirim?
Yapay zekâ sayısal verilerde halüsinasyon görebilir. Bu nedenle nüfus, fiyat gibi kritik verileri resmi kaynaklardan almalı; yapay zekâyı sadece bu verileri yorumlayan analiz paragrafları yazdırmak için kullanmalısınız.
Bir Danışman Olarak Veri Seti Mühendisliğine Yaklaşımım
Ben pSEO projelerinde kod yazmaya harcadığım vaktin üç katını veri kümesini temizlemeye ve zenginleştirmeye harcarım. Çünkü çöp veri girerseniz, çöp sayfa çıkar.
Rakiplerinizin cesaret edemediği niş verileri bulup tablonuza eklerseniz, Google o sayfayı rakipsiz görür ve en tepeye yerleştirir.
Veri kümeniz sizin en değerli fikri mülkiyetinizdir. Kod kopyalanabilir ama aylarca emekle damıtılmış kaliteli bir veri seti kolay kolay taklit edilemez.
Kaynaklar
- Supabase PostgreSQL Database Documentation — PostgreSQL indeksleme, JSONB veri tipleri ve yüksek hızlı sorgu optimizasyonu rehberi.
- Pandas Data Cleaning and Manipulation Guide — Büyük veri kümelerini temizleme, mükerrerleri ayıklama ve formatlama standartları.
- Schema.org Dataset Specification — Yapılandırılmış veri kümelerinin arama motorlarına bildirilmesi için Schema kuralları.
Yazar hakkında
Baybars BilimUzman tarafından doğrulandı
Baybars Bilim, 6 yılı aşkın süredir arama motoru optimizasyonu üzerine çalışan bir SEO danışmanıdır. Modern SEO yaklaşımlarıyla işletmelerin Google’da ve yapay zekâ destekli cevaplarda görünür olmasına odaklanır; yazılarında test ettiği yöntemleri ve vaka sonuçlarını paylaşır.
Danışmanlık Alın
İlk adımı birlikte atalım mı?
Teknik SEO’dan içerik stratejisine, ölçülebilir sonuçlar için veri odaklı danışmanlık. İlk görüşme ücretsiz.