Neden kendi rank takip aracımı yazdım

Birkaç yıl boyunca her ay farklı SEO araçlarına ciddi paralar ödedim. Bir gün faturaları topladım ve kendime şunu sordum: bu araçların gerçekten kullandığım kısmı ne kadar?

Cevap: çok az. Asıl ihtiyacım olan, belirli kelimelerde belirli sayfaların nerede durduğunu her gün aynı koşullarda ölçmekti.

Neden kendim?

  1. Maliyet. Proje sayısı arttıkça ücretli araçların fiyatı katlanarak büyüyor.
  2. Veri gizliliği. Müşterilerimin kelime listeleri ve sıralamaları başkasının sunucusunda durmasın istiyorum.
  3. Esneklik. Hangi cihazdan, hangi konumdan, hangi sıklıkla ölçeceğime ben karar veriyorum.

En basit hali

İşin veri toplama kısmını bir SERP API'si ya da kendi altyapın hallediyor. Burada önemli olan, sonuçları düzgün saklamak:

rank_kaydet.py
import sqlite3
from datetime import date

db = sqlite3.connect("rank.db")
db.execute("""
CREATE TABLE IF NOT EXISTS rank (
    gun TEXT, kelime TEXT, url TEXT, sira INTEGER,
    PRIMARY KEY (gun, kelime)
)""")

def kaydet(kelime: str, sonuclar: list[str], alan_adi: str) -> None:
    sira = next((i + 1 for i, u in enumerate(sonuclar) if alan_adi in u), None)
    url = sonuclar[sira - 1] if sira else None
    db.execute("REPLACE INTO rank VALUES (?, ?, ?, ?)",
               (date.today().isoformat(), kelime, url, sira))
    db.commit()

Sonra tek bir SQL sorgusuyla haftalık değişimi görmek mümkün:

SELECT kelime,
       MAX(CASE WHEN gun = date('now') THEN sira END)             AS bugun,
       MAX(CASE WHEN gun = date('now', '-7 day') THEN sira END)   AS gecen_hafta
FROM rank
GROUP BY kelime
ORDER BY bugun;

Pişman mıyım?

Hayır. İlk sürüm bir hafta sonu sürdü. Bugün kullandığım araç çok daha gelişmiş, ama hâlâ aynı basit tabloya yazıyor. Kendi aracını yazmanın en güzel tarafı, bir şey ters gittiğinde nedenini bilmek.

Bir şeyi kullanıyorsan, en azından nasıl çalıştığını bilecek kadar onu kendin yapabilmelisin.

Comments / questions

There's no comment section here. If you have a question or want to add something, message me on Telegram or send an email to [email protected]. Thanks!

Related pages