Günümüzün veri yoğunluklu SEO ekosisteminde, sadece “anahtar kelime takibi” yapmak artık yeterli değil. Özellikle milyonlarca URL’in yönetildiği kurumsal SEO (Enterprise SEO) projelerinde, veriyi manuel olarak işlemek hem zaman kaybına hem de kritik içgörülerin gözden kaçmasına neden oluyor. Google Search Console (GSC) arayüzünün sunduğu 1.000 satırlık dışa aktarma (export) limiti, veri odaklı bir strateji geliştirmek isteyen uzmanlar için en büyük darboğazlardan biri.
Bu rehberde, Python kullanarak Search Console API üzerinden sınırsız veri çekmeyi, bu veriyi Pandas kütüphanesi ile anlamlandırmayı ve SEO süreçlerinizi nasıl otomatize edeceğinizi teknik detaylarıyla inceleyeceğiz.
Neden Manuel Export Değil de Python API?
Bir SEO uzmanı neden vaktini kod yazmaya ayırmalı? Bu sorunun cevabı, verinin ölçeklenebilirliğinde yatıyor. Arayüz üzerinden aldığınız veriler sadece “yüzeyde” olanı gösterirken, API üzerinden çektiğiniz verilerle şu kısıtları ortadan kaldırırsınız:
| Özellik | Manuel Arayüz (GSC) | Python & API Otomasyonu |
| Veri Satır Limiti | 1.000 Satır | Sınırsız (Milyonlarca satır) |
| Zaman Maliyeti | Her rapor için manuel işlem | Tek tıkla veya zamanlanmış görevle otomatik |
| Boyut Combinations | Kısıtlı filtreleme | Sorgu, sayfa, cihaz ve ülkeyi aynı anda çekme |
| Hata Payı | Manuel veri birleştirmede yüksek | Programatik ve tutarlı veri seti |
1. Adım: Google Cloud Platform (GCP) Hazırlığı
Python kodumuzu çalıştırmadan önce Google’ın API kapılarını açmamız gerekiyor. Bu süreç teknik görünse de aslında birkaç adımdan ibaret:
- Proje Oluşturun: Google Cloud Console adresine gidin ve yeni bir proje başlatın.
- API’yi Aktifleştirin: “Library” sekmesinden “Google Search Console API” aramasını yapın ve “Enable” butonuna tıklayın.
- Kimlik Bilgileri (Credentials): “Create Credentials” diyerek bir Service Account oluşturun. Bu işlem size bir
.jsondosyası verecektir. Bu dosya, script’inizin Google sunucularıyla konuşmasını sağlayan “anahtardır”. - Erişim Yetkisi Verin: İndirdiğiniz JSON dosyasındaki e-posta adresini kopyalayın ve Google Search Console’da “Ayarlar > Kullanıcılar” kısmına giderek bu e-postayı “Kısıtlı” veya “Tam” yetkiyle ekleyin.
2. Adım: Python Ortamını Hazırlama
Bilgisayarınızda Python yüklü olduğunu varsayarak, ihtiyacımız olan kütüphaneleri terminale şu komutu yazarak yükleyelim:
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib pandas
3. Adım: Profesyonel Veri Çekme Script’i
Aşağıdaki kod bloğu, sadece basit bir veri çekme işlemi yapmaz; aynı zamanda gelen veriyi analiz edilebilir bir Pandas DataFrame yapısına dönüştürür.
import pandas as pd
from google.oauth2 import service_account
from googleapiclient.discovery import build
# 1. Kimlik Bilgilerini Yükle
SERVICE_ACCOUNT_FILE = 'anahtar_dosyaniz.json' # GCP'den indirdiğiniz dosya adı
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
creds = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
# 2. GSC API Servisini Başlat
service = build('searchconsole', 'v1', credentials=creds)
site_url = 'https://www.furkankarabacak.com/' # Kendi site adresiniz
# 3. Sorgu Parametrelerini Tanımla
request = {
'startDate': '2023-11-01',
'endDate': '2023-11-30',
'dimensions': ['query', 'page'],
'rowLimit': 25000 # İhtiyaca göre artırılabilir
}
# 4. Veriyi Çek ve İşle
response = service.searchanalytics().query(siteUrl=site_url, body=request).execute()
data = response.get('rows', [])
# Veriyi DataFrame'e Aktarma
df_list = []
for row in data:
df_list.append({
'Keyword': row['keys'][0],
'Page': row['keys'][1],
'Clicks': row['clicks'],
'Impressions': row['impressions'],
'CTR': row['ctr'],
'Position': row['position']
})
df = pd.DataFrame(df_list)
print(f"Toplam {len(df)} satır veri çekildi.")
4. Adım: SEO İçgörüleri İçin Veri Manipülasyonu
Veriyi çekmek sadece başlangıçtır. Bir SEO uzmanı olarak fark yaratacağınız nokta, bu veriyi nasıl filtrelediğinizdir. Örneğin, “Tıklama oranı düşük ama gösterimi çok yüksek olan (Fırsat) sayfalarımızı” nasıl buluruz?
# CTR %2'den küçük ve Gösterim 1000'den büyük olan sayfaları filtrele
opportunity_pages = df[(df['CTR'] < 0.02) & (df['Impressions'] > 1000)]
opportunity_pages = opportunity_pages.sort_values(by='Impressions', ascending=False)
Bu tür bir analizle, hangi sayfaların Meta Title veya Description optimizasyonuna ihtiyacı olduğunu saniyeler içinde tespit edebilirsiniz.
Stratejik Kullanım Senaryoları (Case Studies)
1. İçerik Yamyamlığı (Cannibalization) Tespiti
Aynı anahtar kelime için sitenizdeki birden fazla sayfanın yarıştığını düşünün. Python ile “Keyword” bazında gruplama yaparak, bir kelimeye kaç farklı sayfanın trafik aldığını listeleyebilir ve hangi sayfanın asıl otorite olması gerektiğine karar verebilirsiniz.
2. Z-Score Analizi ile Anomali Tespiti
Sitenizde ani bir trafik düşüşü mü var? Python kullanarak son 7 günün verisini önceki 7 günle kıyaslayabilir ve standart sapma (Z-Score) kullanarak hangi sayfaların “olağan dışı” bir düşüş yaşadığını otomatik raporlayabilirsiniz.
Sıkça Sorulan Sorular
GSC API kullanmak ücretli mi?
Hayır, Google Search Console API belirli limitler dahilinde (günlük milyonlarca sorgu) tamamen ücretsizdir.
Python bilmeden bu sistemi kurabilir miyim?
Temel Python bilgisi ve hazır script’ler ile sistemi kurabilirsiniz ancak veriyi özelleştirmek için orta seviye bir Python ve Pandas bilgisi avantaj sağlar.
API ile kaç aylık veri çekilebilir?
Search Console API, geriye dönük 16 aylık veriye erişim imkanı sunar.
Sonuç: SEO’da Veri Bilimcisi Dönemi
Arama motoru optimizasyonu artık sadece içerik yazmaktan ibaret değil. Veriyi kim daha hızlı işler ve anlamlandırırsa, rekabette o öne geçiyor. Python ve GSC API entegrasyonu, size sadece hız kazandırmaz; aynı zamanda veriye dayalı, rasyonel ve kurumsal düzeyde bir SEO vizyonu kazandırır.
Bir sonraki yazımda, bu verileri BigQuery üzerinde depolayıp Looker Studio ile nasıl interaktif dashboard’lara dönüştüreceğimizi anlatacağım.