Bölgelere Göre Rakiplerin Semantik Çekirdeklerini Mobil Proxylerle Toplama: Adım Adım Kılavuz
Makale içeriği
- Giriş
- Ön hazırlık
- Temel kavramlar
- Adım 1: hedef sorguları ve bölge listesini belirleme
- Adım 2: şehirler bazında mobil proxyleri ayarlama ve geografinin doğrulanması
- Adım 3: python ortamını ve proje yapısını hazırlama
- Adım 4: her bölge i̇çin doğrudan rakip listesi oluşturma
- Adım 5: sorgular ve şehirler i̇çin en i̇yi 50 sonucu tarama (google ve yandex
- Adım 6: verilerin temizlenmesi, normalizasyonu ve alanların çıkarılması
- Adım 7: toplanan semantik verinin niyete göre kümelenmesi
- Adım 8: verileri birleştirin ve analiz kesitleri hazırlayın
- Adım 9: farklılıkları analiz etmek ve sorguların yerelleştirilmesi
- Sonucun kontrolü
- Tipik hatalar ve çözümler
- Ek olanaklar
- Sık sorulan sorular
- Sonuç
Giriş
Bu adım adım kılavuzda, mobil proxyleri kullanarak Rusya'nın farklı bölgelerinde rakiplerin semantik çekirdeklerini toplamayı öğreneceksiniz. Google ve Yandex arama sonuçlarını tarama, gruplama ve analiz araçlarıyla birlikte tüm süreci baştan sona geçeceğiz: ortam hazırlığı, şehir bazlı proxy ayarları, hedef anahtar kelimeler için en iyi 50 sonuç tarama, URL, başlık, açıklama, pozisyonların çıkarılması, toplanan semantik verilerin niyetlere (bilgi, ticari, navigasyon) göre kümelenmesi, bölgelere göre sonuçlerin karşılaştırılması ve SEO çözümleri için pratik bir rapor hazırlanması.
Sonuç olarak, elde edeceğiniz: 1) Her şehir için rakiplerin listesi, 2) Rakiplerin farklı bölgelerde sıralandığı anahtar kelimeler tablosu, 3) Bölgesel sonuçların ve sorgu yerelleştirmeleri arasındaki farklılıkların metrikleri, 4) bütçe tasarrufu ve içerik önceliklendirmesi için gruplandıralan niyet kümeleri, 5) her ay çalıştırılabilir bir tekrar edilebilir süreç.
Bu kılavuz SEO uzmanları, dijital pazarlama uzmanları, analistler ve bölgesel sonuçların nasıl çalıştığını anlayarak hızlıca faydalı verileri elde etmek isteyen herkes için uygundur. Zorluk seviyesi: yeni başlayanlar için bazı ileri düzey unsurlarla. Derin programlama becerileri gerekmeyecek, fakat en azından biraz Python bilgisi faydalı olacaktır.
Önceden bilmeniz gerekenler: SEO’nun temel prensipleri, snippetlerin nasıl oluşturulduğu, bilgi ve ticari sorgular arasındaki farklar, CSV/Excel ile çalışma becerisi. Gereken süre: önceden hazırlanmış sorgular ve şehir listesi ile — ilk çalıştırma için 6–10 saat, tekrar eden iterasyonlar için 1–3 saat.
✅ Kontrol: Şehirler bazında elde edeceğiniz kesin rakip listesinin, genel ve özgün semantik bilgisinin anlamını, yerelleştirilmiş sorguları ve bunların bölgesel SEO'da nasıl kullanılacağını açıklayabileceğinizi anlıyorsunuz.
Ön Hazırlık
Gerekli araçlar: 1) Rus şehirlerine (Moskova, St. Petersburg, Yekaterinburg, Novosibirsk, Kazan ve görevlerinize göre diğer şehirler) ait mobil proxylere erişim ve bir hesap mobileproxy.space. 2) Python 3.10+ ve pip paket yöneticisi. 3) Python kütüphaneleri: requests, beautifulsoup4, lxml, pandas, urllib3, tldextract (alan adlarını çıkarmak için). 4) Metin editörü (VS Code veya benzeri). 5) Elektronik tablo editörü (Excel, Google E-Tablolar veya LibreOffice Calc). 6) Sorguları gruplama ve kümeleme için Windows'da Key Collector. 7) Terminal veya komut istemi. 8) Opsiyonel: proxyyi hızlıca kontrol etmek için curl. 9) Yandex üzerinden coğrafi kontrol yapmak için bir tarayıcıya erişim (Yandex'ten IP-coğrafi lokasyon kontrolü için internet ölçüm aracı).
Sistem gereksinimleri: Windows 10/11 veya macOS 12+ veya Linux (Ubuntu 22.04+), minimum 8 GB RAM, istikrarlı internet 10 Mbps+, veri ve günlükler için 2-5 GB boş disk alanı.
Kurulması gerekenler: 1) Python'un en son stabil sürümünü kurun. 2) Windows için Key Collector'ı kurun. 3) mobileproxy.space'de bir hesap oluşturun, bakiyenizi yükleyin ve ihtiyaç duyduğunuz şehirler için proxy satın alın (her şehir için 1 proxy, yük dengelemesi için 2–3 tercih edilir). 4) Kütüphaneleri kurun: terminalde şunu yazın: pip install requests beautifulsoup4 lxml pandas urllib3 tldextract. 5) Metin editörünüzü ve terminalinizi ayarlayın.
Yedekleme oluşturma: projeye ait bir klasör oluşturun ve data/raw, data/clean, reports, config, logs alt klasörlerini oluşturun ve düzenli olarak CSV dosyalarını yedek klasöre veya buluta kopyalayın.
⚠️ Dikkat: Eylemlerinizin yasalara ve hizmet kurallarına uygun olduğundan emin olun. Bazı arama motorları otomatik veri toplamayı sınırlamaktadır. Akıllı bir sorgu limiti kullanın, robots.txt dosyasını okuyun, kurallara uyun ve resmi API'leri tercih edilen yöntem olarak düşünün.
İpucu: Python için sanal bir ortam oluşturun (python -m venv .venv ardından aktif hale getirin) ve gereklilikleri requirements.txt dosyasına yazarak projeyi kolayca taşıyın.
✅ Kontrol: Terminalde python --version ve pip --version komutları düzgün çalışmalıdır, kütüphaneler hatasız kurulmuştur, Moskova için en az bir proxy erişiminiz olmalı ve Yandex Internet ölçüm aracını tarayıcıda açabilmelisiniz.
Temel Kavramlar
Açık bir dil ile anahtar terimler: 1) Semantik çekirdek — sıralamak istediğiniz veya rakipleri analiz ettiğiniz anahtar kelimelerin listesi. 2) Bölgesel sonuçlar — kullanıcı konumunu dikkate alarak oluşturulan arama sonuçları (şehir, bölge). 3) Mobil proxyler — gerçek mobil IP adreslerinden trafik taklidi yaparak geolokasyonu seçmeyi sağlayan mobil operatörlerden proxy sunucuları. 4) SERP tarama — arama sonuçları sayfasından veri çıkarma (URL, başlık, snippet, pozisyon). 5) Niyet — kullanıcının muhtemel amacı: bilgi (öğrenmek), ticari (satın almak/sipariş vermek), navigasyon (belirli bir siteyi bulmak). 6) En iyi 50 — reklamsız ilk 50 organik sonuç.
Temel çalışma prensipleri: Arama motoruna sorgu gönderiyoruz, coğrafi konumu doğrulamak için proxy kullanıyoruz, HTML sayfasını alıyoruz, gerekli elemanları çıkartıyoruz, bunları bir tabloya kaydediyoruz. Her bir şehir ve her bir sorgu için tekrarlıyoruz. Ardından, gruplama ve analiz yapıyoruz.
Önemli olanı anlamak: 1) Farklı şehirlerde SEO'daki alan adı ve sayfa seti değişkenlik gösterebilir. 2) Yerelleştirilmiş sorgular genellikle şehir isimlerini içerir veya yerel bir niyeti ima eder (örneğin, teslimat, yakınında, adres). 3) Çok sık yapılan sorgular gecikmelere veya yasaklamalara neden olabilir. 4) Coğrafi kontrol doğru olmalıdır. 5) Bazı sonuçlar kişiselleştirilmiş olabilir; temiz oturumlar kullanın, oturum açmayın.
İpucu: Analiz esnasında sadece anahtar kelimelere değil, rakiplerin alan adlarına ve içerik türüne de dikkat edin ki doğru stratejiyi (yerel sayfalar, dizinler, makaleler, açılış sayfaları) seçebilmeniz için.
Adım 1: Hedef Sorguları ve Bölge Listesini Belirleme
Aşama Hedefi
Sorguların kesin listesini ve tarama yapılacak şehirlerin listesini oluşturmaktır. Bu, tarama ve karşılaştırma için temeldir.
Adım Adım Talimatlar
- Bir tablo açın (Excel veya Google Tablo) ve Seeds adlı bir sayfa oluşturun.
- A sütununa, ürününüzü veya nişinizi yansıtan temel sorguları listeleyin. Örneğin: “su teslimatı”, “dizüstü bilgisayar tamiri”, “mobilya satın al” vb.
- B sütununa, önemliyse, ayrıntılar veya eş anlamlılar ekleyin. Örneğin: “içme suyu”, “MacBook tamiri”, “giyinme dolabı”.
- Cities adlı bir sayfa oluşturun. A sütununa şehirleri listeleyin: Moskova, St. Petersburg, Yekaterinburg, Novosibirsk, Kazan, Nijni Novgorod, Samara, Çelyabinsk, Omsk, Rostov-na-Donu, Ufa, Krasnoyarsk ve diğer hedef bölgeler.
- Önceliği belirleyin: en yüksek talebe sahip 10-15 anahtar şehir seçin.
- Temel ve ayrıntılı sorguları birleştirerek hedef sorgular listesini oluşturun. Örneğin: “su teslimatı”, “eve su teslimatı”, “içme suyu teslimatı”, “dizüstü bilgisayar tamiri”, “acil dizüstü bilgisayar tamiri”.
- Tabloyu data/raw klasöründe seeds_and_cities.xlsx olarak kaydedin.
Önemli Noktalar: Şu anda sorgulara şehir isimleri eklemeyin, böylece yerelleşmeyi belirgin coğrafya olmadan değerlendirebilirsiniz. Bunu daha sonra coğrafi değişkenlerle kontrol edeceksiniz.
İpucu: İlk çalıştırma için listeyi 50-200 sorgu ile sınırlayın, böylece proxy'leri aşırı yüklenmemiş olursunuz ve gereksiz zaman harcamazsınız.
✅ Kontrol: 50-200 sorgu ve 10-15 şehir ile tek bir dosyanız var. Sorgular anlaşılır ve iş hedeflerinize uygun.
Olası sorunlar ve çözümler: Eğer listeyi oluşturmakta zorlanıyorsanız, web sitenizin iç arama önerilerinden, müşteri ile olan sohbetlerden, hizmet listelerinden ve ürün kategorilerinden veri alabilirsiniz. Ardından, manuel olarak arama önerilerini genişletebilirsiniz.
Adım 2: Şehirler Bazında Mobil Proxyleri Ayarlama ve Geografinin Doğrulanması
Aşama Hedefi
Mobileproxy.space'den her şehir için mobil proxyleri bağlamak, IP'nin gerçekten gerekli şehirle eşleştiğini Yandex Internet ölçüm aracı ile doğrulamak.
Adım Adım Talimatlar
- Mobileproxy.space'de kişisel alanınıza girin. Şehir ve operatör seçeneği sunan bir tarifeyi seçin. Listenizdeki her şehir için en az bir proxy alın. Optimal olarak, her şehir için 2-3 proxy alın.
- Her proxy için: host, port, kullanıcı adı ve şifreyi yazın. Örneğin: proxy.example.host:12345, kullanıcı:şifre.
- Bağlantı veya API için döngü desteği varsa, IP değiştirmek için kullanılacak bağlantıyı kaydedin. Bu, captcha durumlarında oturumların sıfırlanmasında faydalı olacaktır.
- config/proxies.csv adlı bir dosya oluşturun. Şu sütunları ekleyin: city, host, port, user, password, rotation_url (varsa) ve doldurun.
- Tarayıcıyı açın, Moskova için sistem veya tarayıcı proxy'sini etkinleştirin ve Yandex'ten IP ve coğrafi lokasyon kontrol servisine girin (Yandex Internet ölçüm aracı). Şehrin Moskova olarak tanımlandığından emin olun.
- St.Petersburg, Yekaterinburg ve diğer şehirler için kontrolü tekrar edin, proxy ayarlarını değiştirerek.
- Tarayıcıda proxy'yi kaldırın. Gelecekte coğrafi kontrolü programla yapacağız.
⚠️ Dikkat: Proxy'leri yalnızca hizmet koşullarına ve yasalara uygun bir şekilde kullanın. Proxy'lerin amacı coğrafyayı doğru bir şekilde belirlemek ve yükü eşit şekilde dağıtmaktır, sınırlamaları aşmak değildir.
İpucu: Basit bir gecikme oluşturun: proxy değiştirdikten sonra, coğrafi kontrol için 10-20 saniye bekleyin, böylece "cache" veya ağ gecikmesini önleyebilirsiniz.
✅ Kontrol: Her şehir için uygun bir proxy etkinleştirip Yandex Internet ölçüm araçında doğru şehir görüntülemeniz mümkün.
Problemler ve çözümler: Eğer şehir yanlış tanımlanıyorsa, döngü ile IP'yi değiştirin, aynı şehir için başka bir operatör alın veya destekle iletişime geçin. Eğer tarayıcı proxy'yi yok sayıyorsa, ayarları ve doğrulamayı kontrol edin.
Adım 3: Python Ortamını ve Proje Yapısını Hazırlama
Aşama Hedefi
Tarama ve analiz için güvenilir bir ortam oluşturun: dizin yapısı, bağımlılıklar, proxy üzerinden iletişim testi.
Adım Adım Talimatlar
- Proje klasörünü oluşturun, örneğin regional-serp-competitors.
- İçinde alt klasörleri oluşturun: config, data/raw, data/clean, logs, reports, scripts.
- Sanall bir ortam oluşturun: terminalde “python -m venv .venv” yazın ve etkinleştirin (Windows: “.venv\Scripts\activate”, macOS/Linux: “source .venv/bin/activate”).
- Bağımlılıkları kurun: “pip install requests beautifulsoup4 lxml pandas urllib3 tldextract”.
- config/settings.yaml dosyasını oluşturun. Temel parametreleri ekleyin: gecikmeler, bekleme süreleri (örneğin: delay_min: 3, delay_max: 8), tekrar deneme sayısı (retries: 3), user-agent.
- scripts/test_proxy_geo.py adında bir script oluşturun, bu script bir proxy üzerinden Yandex Internet ölçüm aracının sayfasını yükleyecek ve HTML'de belirlenen şehri yazdıracaktır.
- Scriptte proxy'yi şu formatta bir sözlük olarak tanımlayın: {"http": "http://user:pass@host:port", "https": "http://user:pass@host:port"} ve IP kontrol sayfasına requests.get isteği yapın, ardından HTML içindeki şehir alanını (örneğin “Şehir” yazısıyla göstermektedir) bulun.
- Birkaç şehir için scripti çalıştırın ve çıktıların beklentilerinizi karşılayıp karşılamadığından emin olun.
İpucu: Tek bir User-Agent belirleyin, örneğin “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0 Safari/537.36”, ve gerektiğinde her 20-50 istekte bir değiştirin.
✅ Kontrol: test_proxy_geo.py scripti, proxy değiştiğinde farklı şehirleri doğru bir şekilde göstermelidir. Günlüklerde sürekli zaman aşımları ve yetkilendirme hataları olmamalıdır.
Problemler ve çözümler: Eğer requests 407 Proxy Authentication Required hatası alıyorsa, kullanıcı adı ve şifreyi kontrol edin, sembolleri gözden geçirin. Eğer captcha alıyorsanız, bekleme süresini artırın ve IP döngüsünü daha az ve yavaş gerçekleştirin.
Adım 4: Her Bölge İçin Doğrudan Rakip Listesi Oluşturma
Aşama Hedefi
Her şehirdeki rakiplerin alan adlarını belirlemek, böylece sıralamalarını takip edebilir ve semantik verileri toplayabilirsiniz.
Adım Adım Talimatlar
- Hedef hizmet veya ürünü net bir şekilde yansıtan 5-10 anahtar kelime seçin.
- scripts/collect_competitors.py adında bir script oluşturun. Her şehir için uygun olan proxy'yi alın. Seçilen her sorgu için Yandex ve Google'da sırasıyla arama yapın.
- Yandex için dil ve bölgeyi dikkate alan sorgu parametreleri kullanın. Örneğin, lr (bölge kodunu) biliyorsanız ekleyin, aksi takdirde proxy-coğrafya kullanın.
- Google için hl=ru, gl=ru parametrelerini ayarlayın. Coğrafya IP üzerinden belirlenecektir. Güvenli arama parametrelerini ek olarak test edebilirsiniz.
- İlk 20-30 organik sonucu çıkarın. Reklam bloklarını, servisleri ve alaka derecesine göre ölçmediğiniz araçları atlayın.
- Alan adlarını tldextract ile normalleştirin. Her şehir için alan adlarının sıklığını kaydedin: alan adı, üst sıralarda ne kadar süreyle yer aldığı, hangi anahtar kelimelerle.
- data/raw/competitors_by_city.csv dosyasını city, domain, engine, frequency, queries sütunları ile hazırlayın.
Önemli Noktalar: Kişisel servislerin (haritalar, pazaryerleri) baskın olabileceğini unutmayın. Eğer gerçek rakiplerinizse bunları bırakın. Eğer B2B'seniz haber toplama hizmetlerini filtreleyin.
İpucu: Ek olarak, her şehirde 1-2 sorgu için tarayıcınız altında uygun proxy ile “elle kontrol” oluşturun ve alan adlarını scriptin sonuçlarıyla karşılaştırın. Bu, taramanın doğruluğuna olan güveninizi artıracaktır.
✅ Kontrol: Her şehirde 10-30 alan adından oluşan bir liste vardır ve bu listede sıklıkları belirtilmiştir. Üst sırada yerel web siteleri ve uluslararası aktörler bulunmaktadır. Script sonuçları, manuel kontrol sonuçlarına yakındır.
Problemler ve çözümler: Manuel kontrol sonuçlarındaki farklılıklar, sonuç dinamikleri, kişiselleştirme veya reklam bloklarının yanlış filtrasyonu ile olabilir. Gecikmeleri artırın, temiz bir oturum kullanın ve ek kontroller yapın.
Adım 5: Sorgular ve Şehirler İçin En İyi 50 Sonucu Tarama (Google ve Yandex)
Aşama Hedefi
Ayrıntılı bir sonuç tablosu oluşturulması: URL, başlık, açıklama, pozisyon, arama motoru, şehir ve sorgu.
Adım Adım Talimatlar
- scripts/serp_scraper.py adında bir script oluşturun. Yapı: Yandex ve Google’a sorgu yapmak için fonksiyonlar, HTML’i taramak için fonksiyon, satırları CSV’ye kaydetme.
- Per city per query limit: 50, gecikmeler delay_min, delay_max, maksimum tekrar retries: 3, User-Agent satırları listesi gibi parametrelerle bir yapılandırma oluşturun.
- Arama URL'si oluşturarak şekillendirin. Google örneği: “https://www.google.com/search?q=arap&num=50&hl=ru&gl=ru&pws=0”. Yandex örneği: “https://yandex.ru/search/?text=arap&lr=region_code&numdoc=50”, lr mevcut değilse, IP-geosuna güvenin.
- Şehir bazında proxy ayarları yapın. Proxy sözlüğü: {"http": "http://user:pass@host:port", "https": "http://user:pass@host:port"}.
- 20-30 saniye bekleme süresi ile sayfayı isteyin. Hatalarla başa çıkın: zaman aşımı, 429, 5xx. Hatalar oluştuğunda 30-60 saniye bekleyin ve aynı proxy'i tekrar kullanın.
- Google tarama: sonuç dökümörleri bulmaya çalışın: başlıklar ve bağlantılar için h3 etiketi blokları, yanındaki div/span'da snippet. Ön bellek, görseller, videolar, reklamları dışlayın. Eğer yapı farklı ise, sonuçlar bloğunda “a” bulduklarınızı kullanarak tüm görünür başlıkları filtreleyin.
- Yandex tarama: organik sonuçların kartlarını arayın. Sonuç bağlantısı, başlık ve öneri metnini çıkartın. Analiz dışında kalıyorsa hizmetleri dışlayın, aksi takdirde type=feature olarak işaretleyin.
- 1'den 50'ye pozisyonları sıralayın. Yandex ve Google’daki sonuçlar arasında pozisyon organik kartlar arasında sayılmalıdır.
- Sıra ile engine, city, query, position, url, title, snippet, fetched_at (tarih/zaman), proxy_id ile birlikte satırları kaydedin.
- Her şehir için sırayla toplama başlatın. Her şehir için tüm sorguları döngüye alın. Sorgular arasında 3-8 saniye, şehirler arasında 10-20 saniye bekleyin.
- Son verileri data/raw/serp_results.csv olarak kaydedin. Her saat başı, yedek klasöre tarih ön ek işareti ile bir kopya oluşturun.
⚠️ Dikkat: Bazı arama motorları otomatik veri toplamayı yasaklar. Resmi API'yi (örneğin, Google Özel Arama API) veya ilgili hizmetleri değerlendirin. Eğer HTML'i tararsanız, bunu dikkatli ve minimal ölçekte yapın, yalnızca analitik amaçlar için ve limiti aşmadan.
İpucu: Tarama işlemini sabah erken veya akşam geç saatlerinde yapın, yüklerin düşük olduğu zamanlarda. Rastgele beklemeler ve User-Agent değişimi captcha olasılığını azaltır.
✅ Kontrol: Sonuçları içeren bir CSV dosyası her bir şehir ve sorgu için hazırlanmalı, 50 sonuç ile birlikte yapılmalıdır. Alanlar doldurulmuş ve URL'ler doğru olmalıdır; pozisyonlar sıralı olmalıdır.
Problemler ve çözümler: Eğer captcha ile karşılaşıyorsanız, beklemeleri artırın, eş zamanlı sorgu sayısını azaltın, IP döngüsünü 2-5 dakikadan daha sık yapmamaya çalışın. Eğer HTML yapısı değiştiyse, seçicileri güncelleyerek 2-3 sorgu için manuel kontrolü hızlandırın.
Adım 6: Verilerin Temizlenmesi, Normalizasyonu ve Alanların Çıkarılması
Aşama Hedefi
Verileri analize hazırlamak: çöpleri çıkarmak, URL'leri normalleştirmek, alanları çıkarmak ve alakasız elemanları dışlamak.
Adım Adım Talimatlar
- CSV’yi pandas’a yükleyin (scripts/clean_results.py dosyası). Boş başlık/snippet varsa kontrol edin ve gerekiyorsa alternatif HTML düğümlerinden geri yükleyin.
- Satırları (engine, city, query, url) üzerinde dvellerden dışlayın. İlk karşılaşmaları bırakın.
- Arama motorları içindeki bağlantıları, belleğe yönlendirmeleri, haritalar veya haber bağlantılarını gerekmediği takdirde dışlayın. Temiz organik sonuçları type=organic olarak işaretleyin.
- URL’leri normalleştirin: köprüleri kaldırın, şemayı https’ye çekin, takip parametrelerini (utm_*, gclid vb.) çıkarın. Temizlenmiş URL’leri ayrı bir sütun olan clean_url içinde saklayın.
- tldextract ile ikinci seviye alan adını ve uzantısını alın. root_domain sütununa kaydedin, örneğin “site.ru”.
- Temizlenmiş dosyayı data/clean/serp_results_clean.csv olarak kaydedin.
İpucu: Test sonuçları ayrımı hızlandırmak adına harita/dizini/pazaryeri gibi suşik alanları için is_local_feature sütununu eklemeyi unutmayın.
✅ Kontrol: Satır sayısı, tekrar ve çöpleri kaldırarak azaltılmış olmalıdır. Alanlar doğru bir şekilde çıkarılmış, teknik bağlantılar olmamalıdır. Şehir ve sorgu bazında unique root_domain sayısını hesaplayabilirsiniz.
Problemler ve çözümler: Eğer sonuçların çok fazlası çöp olarak işaretlenmişse, filtreleri gözden geçirin ve kuralları netleştirin. Bazen, bütünlük açısından büyük toplama hizmetlerini terk etmemek faydalı olabilir.
Adım 7: Toplanan Semantik Verinin Niyete Göre Kümelenmesi
Aşama Hedefi
Anahtar kelimeleri niyet ve tema kümeleri halinde gruplandırarak, bölgesel tanıtım için gerekli içerik ve sayfa türlerinin neler olduğunu anlamak.
Adım Adım Talimatlar
- Parsa verilerinden altyapıya bir dizi unique запрос собирайте: query sütunu alıp, tekrarları kaldırın. data/clean/unique_queries.csv dosyasına kaydedin.
- Windows'da Key Collector'ı açın ve yeni bir proje oluşturun: Dosya → Yeni Proje. Proje adını belirtin, örneğin “Bölgesel SERP Rakipleri”.
- Araçlar menüsünden İthalat → Dosyadan → unique_queries.csv dosyasını seçerek getiriniz. UTF-8 biçimini kontrol edin.
- Konu grupları oluşturun. Key Collector’da morfoloji veya anahtar kelimelere göre yapılandırma aracını kullanın. Başlangıçta makul benzerlik eşiklerini belirleyin (örneğin 3 ortak terim), ardından gruplama için el ile doğrulayın.
- Her grubu niyetine göre işaretleyin: bilgi, ticari, yönlendirme. Bunun için özel bir alan oluşturabilirsiniz. Örnekler: bilgi — “nasıl seçilir”, “bu nedir”; ticari — “fiyat”, “satın al”, “sipariş et”; yönlendirme — “marka”, “resmi site”.
- Sonuç CSV formatına aktarın: query, cluster, intent. data/clean/queries_clustered.csv olarak kaydedin.
İpucu: Eğer Key Collector yoksa, pandas’da basit bir mantık oluşturun: her niyet için bir token listesi oluşturun ve kelimenin bulunmasına göre sorguyu sınıflandırın. Son ardından tartışmalı durumları manuel olarak kontrol edin.
✅ Kontrol: Her bir sorgunun bir kümesi ve niyeti olmalıdır. Çoğu ticari sorgular mantıksal bir şekilde gruplandırılmış olmalıdır, bilgi sorguları ticari olanlardan ayrık olmalıdır.
Problemler ve çözümler: Eğer gruplar çok genişse, benzerlik eşiklerini düşürün. Eğer çok dar iseler, artırın veya bunları el ile birleştirin. Karmaşık konularda hibrit bir yaklaşımın faydalı olacağını unutmayın: otomatik ilk kümeleme + el ile düzeltme.
Adım 8: Verileri Birleştirin ve Analiz Kesitleri Hazırlayın
Aşama Hedefi
SEROP sonuçlarını kümelerle birleştirmek, bölgelere ve rakip alan adlarına göre karşılaştırmalı analiz için yararlı metrikleri hesaplamak.
Adım Adım Talimatlar
- data/clean/serp_results_clean.csv ve data/clean/queries_clustered.csv dosyalarını pandas’a yükleyin (scripts/analyze_regions.py dosyası).
- Her sonucu cluster ve intent ile birleştirmek için query sütunu üzerinden birleştirin.
- Her city + query kombinasyonu için alan adı sırasını hesaplayın. Bu, pozisyonda zaten mevcuttur, doğruluğunu kontrol edin.
- Kümelere göre alan adları oranlarını hesaplayın: city, cluster, root_domain üzerine gruplayarak, ortalama pozisyon ve top-10 oranını birleştirin.
- top-10 için bir işaret ekleyin: pozisyon ≤ 10. Kümeler ve niyetler açısından alanın top-10 kapsamını hesaplayın.
- Geçici tabloları data/clean/analytics_*.csv olarak kaydedin: örneğin coverage_by_city_domain.csv, top10_share_by_intent.csv.
İpucu: Raporlarda “ısı haritaları” gösterif yapmak iyi olur: yatayda şehirler, dikeyde alan adları, renk — top-10'da sorgular. Bu sıkı oyuncuları belirlemekte faydalıdır.
✅ Kontrol: Tablolar hatasız bir şekilde oluşturulmalı ve anlaşılır verilere sahip olmalıdır: yerel oyuncuların kendi şehirlerinde top-10 oranları yüksek, federallerin birçok şehirde sabit oranları vardır.
Problemler ve çözümler: Eğer verilerde top-50'de az yer alıyorsa, tarama ve filtrelerin doğruluğunu kontrol edin. Sorgu listesini genişletin ya da sonuçları 100'e çıkarmayı düşünün, uygun ve güvenliyse.
Adım 9: Farklılıkları Analiz Etmek ve Sorguların Yerelleştirilmesi
Aşama Hedefi
Hangi sorguların yerel olduğunu, hangilerinin olmadığını ve bunun farklı şehirlerdeki SEO stratejisini nasıl etkilediğini belirlemek. Güçlü yerelliğe sahip kümeleri ve alan adlarını tespit etmek.
Adım Adım Talimatlar
- Her sorgu için, şehirler bazında top-10’daki alan adlarını toplayın. Şehirler arasındaki kesişimleri (örn. Moskova vs. St. Petersburg) hesaplayın. Metriğiniz: Jaccard = |kesişim| / |birleşim|.
- Tüm şehir çiftleri için bir Jaccard pivot tablosu oluşturun. Düşük değerler güçlü bir bölgesel bağımsızlık sonucunu gösterir.
- Yerelleştirilen sorguları belirleyin: ortalama Jaccard oranı tüm şehir çiftleri için eşiğin altındadır (örn. 0.3). Yerelleştirilmeyen sorgular ise üstte olmalıdır (örn. 0.6).
- Niyetleri karşılaştırın: genellikle ticari sorguların yerelleştirilme oranı bilgi sorgularından daha fazladır. Bunu her niyet içinde Jaccard ortalamaları ile kontrol edin.
- Bir şehirdeki “benzersiz” rakipleri tespit edin: yalnızca bir şehirde top-10'da yer alan alan adları. Yerel bağlantılar ve ortaklıklar için bir liste hazırlayın.
- Raporu oluşturun: 1) En yerelleştirilmiş sorgular, 2) En yerelleştirilmemiş sorgular, 3) Şehir için benzersiz alan adları, 4) Birkaç şehirde kendini sağlamlaştıran alan adları.
- Raporu reports/regional_differences.csv olarak kaydedin ve öneriler içeren metin bir özet oluşturun.
İpucu: Alan için “pozisyon istikrarı” metriğini ekleyin: her şehir adına ortalama ve standart sapma pozisyonları. Bu, alanın nerede daha güçlü olduğunu anlamaya yardımcı olur.
✅ Kontrol: Raporlarda, bazı sorguların şehirler arasında belirgin farklılıklar gösterdiği, diğerlerinin ise hemen hemen hiç değişmediği görülmektedir. Seçiminizden en az 5 yerelleştirilmiş ve 5 yerelleştirilmemiş sorgu bilebilir.
Problemler ve çözümler: Eğer fark minimalse, belki konu bölgeden az etkilenmektedir ya da seçki çok dar. Eş zamanlı intente yönelik sorgular ekleyin (“yakın”, “bugün teslimat”, “şehrimde”) ve analizi yeniden gerçekleştirin.
Sonucun Kontrolü
Kontrol listesi: 1) 10'dan fazla şehir için çalışan mobil proxyleriniz var, coğrafi kontrol edilmiştir. 2) Tarayıcı, yapılan her şehir ve sorgu için en iyi 50'yi toplar, CSV içi boş değildir. 3) Temizleme ve normalizasyon işleme geçmiştir, alanlar çıkartılmıştır. 4) Niyet gruplandırması tamamlanmıştır, her sorguya bir niyet atanmıştır. 5) Şehirler arasındaki farklılıklar hakkında raporlar oluşturulmuştur. 6) Rapor, yerelleştirilen ve yerelleştirilmemiş sorguların listelerini içermektedir. 7) Verilere dayalı öneriler yerel bazda SEO'da bulunmaktadır.
Nasıl test edilir: 1) Uygun proxy üzerinden tarayıcıda birkaç sorguyu manuel olarak karşılaştırın. 2) 5-10 satırlık CSV'nin gerçek sonuçlarla uyumlu olup olmadığını karşılaştırın. 3) Beklenecek yerlerde, şehirlerde gerçekten farklılık gösteren top-10 sıralarına sahip olduklarından emin olun.
Başarılı bir çalışmanın göstergeleri: planlanan şehir × sorgu kombinasyonlarının veri kapsamı, %80’den az olmamalıdır; ağ hatası minimum olmalıdır; anlaşılır ve yeniden üretilebilir raporlar olmalıdır.
Tipik Hatalar ve Çözümler
- Problem: captcha ve yasaklar. Sebep: yüksek sorgu sıklığı, benzer başlıklar, duraklatma yok. Çözüm: gecikmeleri artırın, paralellikleri azaltın, IP'yi daha seyrek döndürün, User-Agent değiştirin ve resmi API’leri düşünün.
- Problem: yanlış geolokasyon. Sebep: kararsız bir coğrafi bellek veya kesme. Çözüm: Yandex üzerinden geolokasyonu kontrol edin, IP’yi değiştirin, başka bir operatör veya şehir alın.
- Problem: verilerde çöp ve tekrarlar. Sebep: temizlenmemiş URL’ler, reklam blokları. Çözüm: alan adlarıyla filtreleme ekleyin, URL’leri normalleştirin, yalnızca organik olanları saklayın.
- Problem: HTML seçimlerinde istikrarsızlık. Sebep: SERP yapı değişiklikleri. Çözüm: daha genel paternler kullanın, 2-3 sorgu üzerinde parser'ı kontrol edin, seçimleri güncelleyin.
- Problem: çok dar kümeler. Sebep: yüksek benzerlik eşiği. Çözüm: eşiği azaltın, yakın kümeleri el ile birleştirin, tokenizasyonu kontrol edin.
- Problem: bölgelerin zayıf ayırıcı olması. Sebep: sorguların yanlış seçilmesi. Çözüm: yerel niyetler ekleyin ve şehir çiftleri arasında Jaccard oranını kontrol edin.
- Problem: proxy aşırı yüklenmesi. Sebep: fazla ardışık sorgu. Çözüm: zamanlayarak dağıtım yapın, ek proxy kullanın, kuyruklar ve beklemeler ekleyin.
Ek Olanaklar
Gelişmiş ayarlar: 1) HTML yanıtlarını anahtar (engine, city, query) üzerinden depolamak. 2) SQLite veya PostgreSQL'ye veri saklamak ve şehir, sorgu, alan adı bakımından indeklemeler oluşturmak. 3) Hataları logs altında zaman damgaları ile özel dosyalara kaydetmek. 4) Problematik sorgular için başsız tarayıcı (örneğin, Selenium ile) eklemek. 5) Resmi API’leri kullanmak: Google Özel Arama API, Yandex.API (uygun uç noktalar mevcutsa). Bu, riskler azaltabilir ve istikrarı artırabilir.
Optimizasyon: 1) Gecikmeleri ve User-Agent’ları rastgele yapın. 2) Akıllı yeniden deneme: sadece başarısız olan sorguları tekrar edin. 3) “Ağır” sorguları ayrı bir kuyruğa alın ve daha sonra işleyin. 4) Haftalık veya aylık veri toplama ve değişiklikleri izleme ayarlayın.
Ne yapılabilir: 1) Şehirler arasındaki Rank-Biased Overlap'ı hesaplayarak sonuç benzerliğini daha ayrıntılı değerlendirin. 2) Otomatik öneri yaratma: belirli bir şehir için hangi sayfaların oluşturulmasının faydalı olacağını belirleyin. 3) Gelişmiş gruplama için Rus dili için morfolojik analizciler kullanın. 4) Şehirler arasında alan ve niyetlerin kapsama altındaki grafikleri görselleştirmek için bir kontrol paneli hazırlayın (örneğin Power BI).
İpucu: Analizden kaçınılacak alanları “kara liste” ekleyin, ancak gerektiğinde ham verileri geri yüklemek için bir kopyasını saklayın.
Sık Sorulan Sorular
Soru 1: Mobil proxy olmadan geçinmek mümkün mü? Cevap: Evet, resmi API'ler varsa veya şehir veri merkezlerini kullanıyorsanız. Ama mobil proxy'ler genelde gerçek yerel sonuçları daha doğru yansıtır.
Soru 2: CAPTCHA olasılığını nasıl azaltabilirim? Cevap: Gecikmeleri artırın, eş zamanlılığı düşürün, User-Agent değiştirin, IP döngüsünü sık yapmayın, ve varsa resmi API kullanın.
Soru 3: Bir sorgunun yerelleştirildiğini nasıl anlayabilirim? Cevap: Eğer top-10'daki alan adları seti şehirler arasında büyük ölçüde değişiyorsa (düşük Jaccard), ve sonuçlarda yerel dizinler ve haritalar sıkça görünüp duruyorsa, sorgu yerelleştirilmiştir.
Soru 4: Google ve Yandex'teki HTML yapı değişimleri ne yapmalıyım? Cevap: Parser’ı modüler tutun, 2-3 referans sorgusu üzerinden otomatik testler ekleyin. Değişiklik olduğunda yalnızca parser modülünü güncelleyin.
Soru 5: İniyetleri nasıl doğru işaretlerim? Cevap: Otomatik yöntemleri (kelime öneri listeleri) manuel testlerle birleştirin. İniyetleri dönüşüm verileriyle netleştirin.
Soru 6: Eğer bir şehirde çok az veri varsa ne yapmalıyım? Cevap: Sorgu listesini genişletin, LSI lexemes ekleyin ve uzun kuyrukları teste tabi tutun; günün farklı bir saatinde yeniden çalıştırın, alternatif semantik kaynaklar kullanın.
Soru 7: Toplama hizmetlerini ve pazaryerlerini nasıl dikkate almalıyım? Cevap: Onları tamamen kaldırmayın. Ayrı bir tür olarak etiketleyin ve etkinizi değerlendirin. Bu, trafik için rekabet eden rakiplerdir.
Soru 8: Google ve Yandex verilerini nasıl bir araya getirebilirim? Cevap: Evet, raporlarda engine etiketini tutun. Ayrı ayrı ve birlikte karşılaştırarak alanların nerede en dayanıklı olduğunu görün.
Soru 9: Verileri ne sıklıkla güncellemem gerekir? Cevap: Dinamik bir nişte her 2-4 haftada bir, stabil bir nişte her 1-2 ayda bir. Trend izlemek için rapor versiyonlarını saklayın.
Soru 10: Hangi metrikler en faydalıdır? Cevap: Alan başına top-10 oranları, ortalama pozisyon, konum istikrarı, şehirler arası Jaccard, niyetlerin kapsamıdır.
Sonuç
Gerçekleştirilenlerin özeti: şehir bazında proxy’ler hazırladınız, coğrafyayı doğruladınız, Python ortamını ayarladınız, seçilen sorgular ve bölgelerde Google ve Yandex'te en iyi 50 sonuç topladınız, verileri temizlediniz ve normalleştirdiniz, niyetlere göre semantik veriyi gruplandırdınız ve şehirler arasındaki sonuç farklılıklarını analiz ettiniz. Sonuç olarak, rakiplerinizin her şehirde güçlü olduğu sorguların nerelerde olduğunu ve hangi sorguların yerelleştirildiğini gösteren pratik bir rapor elde ettiniz.
İleride yapılacaklar: 1) Ticari niyete sahip yerel kümeler için özel açılış sayfaları oluşturup Optimize edin. 2) E-E-A-T işaretlerini olan şehirlerde pozisyon istikrarını güçlendirin. 3) Veri toplama ve değişimleri izleme için düzenli sistem kurun. 4) İçeriğin, belirli şehirlerde talep gören bilgilerle uyumlu şekilde ayarlandığından emin olun.
Gelişim alanları: 1) CRM ile entegrasyon yaparak bölgesel dönüşüm incelemsi gerçekleştirin. 2) Davranışsal sinyalleri ve yerel bağlantıları artırın. 3) Şehir sayısını ve sorgu konularını genişletin. 4) Raporlamayı otomatikleştirin ve BI araçlarıyla verileri görselleştirin.
İpucu: Her aşamayı belgeleyin ve konfigürasyonları saklayın. Böylece, tedarik sürecinizi yeni şehirler ve nişler için kolayca ölçeklendirebilirsiniz.
İpucu: Rapor şablonu ve çalıştırma kontrol listesi tutun. Bu, ardışık iterasyonlarda %30-40 daha az zaman tasarrufu sağlar.