Files
kolaytercih/docs/gece-vardiyasi/2026-09-21/01-analitik-bulgular.md
bilalgursen d10eff31b3 docs: gece vardiyası 2026-09-21 raporları
Çok ajanlı gece vardiyasının çıktıları: analitik (Rybbit) bulguları, SEO/GEO
konu planı, marka stratejisi, canlı mail testi, CEO kararları (2 tur), CTO
şartnamesi, yazar/yazılımcı raporları, bağımsız kod denetimi ve sabah özeti
(yazılı + sesli). Kod değişiklikleri gece/* dallarında.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 13:08:24 +03:00

29 KiB
Raw Blame History

01 — Analitik bulgular (Rybbit, site_id=1)

Hazırlayan: Analitik ajanı · 2026-09-21 gece vardiyası · Saat dilimi: Europe/Istanbul Pencereler: 7g = 15–21 Eyl · 30g = 23 Ağu–21 Eyl · Tüm zamanlar = 2 Ağu–21 Eyl · Organik dönem = 18 Ağu–21 Eyl (Google trafiğinin başladığı gün; iç test trafiğinden en temiz kesit). Yalnızca okuma araçları kullanıldı; Rybbit'te hiçbir şey oluşturulmadı/değiştirilmedi. Kod değiştirilmedi.

Yönetici özeti (5 madde)

  1. Gerçek kullanıcıdan ödeme başlatan yok. Organik dönemdeki 13 odeme_baslatildi olayının 13'ü de iç hesaplardan (kurucu + test hesapları). İç kullanıcılar filtrelenince odeme_baslatildi = 0, /paket görüntüleyen = 2 oturum. odeme_tamamlandi tüm zamanlarda 3 olay / 1 oturum (9–15 Ağu haftası; iç test olabilir — sipariş tablosundan doğrulanmalı). Yani bugün "ödeme hunisi" ölçülecek kadar veri üretmiyor; darboğaz daha yukarıda.
  2. Trafiğin ~%75'i Google organik ve ~%70'i katalog sayfalarına (/universite, /bolum) iniyor; bu sayfalar huniye neredeyse hiç beslemiyor. /universite girişli 580 oturumun yalnızca 14'ü (%2,4) sıra giriyor; bounce %68. Ana sayfaya inen oturumlarda bu oran ~%10. Buna karşın katalog ziyaretçisi "listeye program ekle"yi seviyor: organik dönemde 91 oturum (%10, %93'ü mobil) program_eklendi yaptı — ama bunların sadece 7'si (%7,7) sıra girdi. En büyük fırsat: katalog sayfasından sihirbaza/kayda köprü.
  3. Trafik sezonla birlikte çöktü. Haftalık oturum: 381 (18–24 Ağu) → 256 → 131 → 70 → 86 (15–21 Eyl). Son 7g: 86 oturum / 79 kullanıcı. Tercih dönemi dışındayız; önümüzdeki aylarda hacim düşük kalacak → şimdi ölçüm + içerik altyapısı zamanı, A/B testi zamanı değil.
  4. Huninin gerçek düşüş noktası /sonuc → /giris. Gerçek kullanıcıda (organik dönem, iç hesaplar hariç): sıra girildi 36 → sihirbaz tamam 29 (%81) → /sonuc 24 → /giris 5. Sihirbazın kendisi sağlıklı (adım bazında kayıp %3–11); kayıp giriş duvarında. Örneklem küçük (n=24–36), yön gösterir, oran kesin değil.
  5. Ölçüm altyapısında 4 somut delik var: (a) iç trafik dışlanmıyor ve tüm KPI'ları şişiriyor, (b) kaydet_banner_goruntulendi ve tadimlik_goruntulendi olayları bir hook hatası yüzünden hiç atılmıyor (0 kayıt), (c) Web Vitals site ayarında kapalı (0 performans olayı), (d) Google OAuth dönüşü yeni oturum + "Organic Search" olarak sayılıyor, huniyi bölüyor. Ayrıca giriş yapan kullanıcıların e-posta+adı Rybbit'e trait olarak gidiyor, IP takibi açık — KVKK/gizlilik metni açısından CEO kararı gerekir.

Veri güvenilirliği — önce bunu oku

  • Örneklem küçük. Tüm zamanlar 1.220 oturum / 941 kullanıcı; son 7g 86 oturum. Huni adımlarında n çoğu zaman < 40. Aşağıdaki yüzdeler "yön"dür; %5'lik farklara anlam yüklemeyin.
  • 2–17 Ağu dönemi ağırlıklı iç test trafiği. 296 oturum, 126 kullanıcı, oturum başı 5,9 sayfa, 349 sn, bounce %29; şehir dağılımında İstanbul+Sancaktepe %66 (get_breakdown city, 2–17 Ağu). Bu dönem "tüm zamanlar" ortalamasını olduğundan iyi gösteriyor (bounce %60 / 132 sn). Gerçek taban çizgisi organik dönemdir: 925 oturum, 820 kullanıcı, bounce %70, 2,1 sayfa/oturum, 62 sn (get_overview 18 Ağu–21 Eyl).
  • İç kullanıcılar organik dönemde de veriyi kirletiyor: bilinen iç cihaz/hesap kimlikleriyle 48 oturum, 136 sayfa görüntüleme (get_overview + user_id filtresi). Ödeme olaylarının tamamı bunlardan.
  • Bounce eden oturumda "sayfada kalma süresi" tanım gereği 0'dır; rehber yazılarındaki 0–5 sn'lik süreler okuma süresi değil, tek sayfalık oturum oranının yansımasıdır.
  • /sonuc sayfa görüntülemeleri şişkin (143 oturumda 1.602 görüntüleme): trackUrlParams açık, sonuç sayfasındaki her filtre/URL parametresi değişimi yeni pageview sayılıyor. Sayfa/oturum metriğini yukarı çeker.
  • Araç kısıtları: get_goals şema hatasıyla döndü (okunamadı); analyze_funnel bir adım 0'a düşünce hata veriyor, bu yüzden huni 3–4 adımlık parçalar halinde ölçüldü. Kayıtlı huni yok (get_funnels → boş).

1. Genel KPI ve trend

Pencere Oturum Kullanıcı Sayfa/oturum Bounce Ort. süre
Son 7g (15–21 Eyl) 86 79 2,16 %67,4 78 sn
Önceki 7g (8–14 Eyl) 70 63 2,31 %70,0 70 sn
Son 30g 646 568 2,07 %69,8 64 sn
Organik dönem (18 Ağu+) 925 820 2,12 %70,1 62 sn
Tüm zamanlar 1.220 941 3,03 %60,2 132 sn

Kaynak: get_overview (her pencere ayrı sorgu), get_overview_timeseries günlük. Haftalık oturum (günlük seriden toplandı): 18–24 Ağu 381 · 25–31 Ağu 256 · 1–7 Eyl 131 · 8–14 Eyl 70 · 15–21 Eyl 86. Zirve günü 20 Ağu (76 oturum). Düşüşün tercih/ek tercih takvimiyle örtüştüğü varsayılıyor — ÖSYM 2026 takvim tarihleri doğrulanmalı.

2. Trafik kaynakları

  • Kanal (tüm zamanlar): Organic Search 896 (%73,4) · Direct 316 (%25,9) · AI 6 (%0,5) · Referral 1. 30g: Organic %77,9, Direct %22,0, AI 1 oturum. 7g: Organic 65, Direct 21, AI 0. (get_breakdown channel)
  • Referrer (tüm zamanlar): google.com 815 · accounts.google.com 58 · search.google.com 10 · google.com.tr 7 · gemini.google.com 5 · Gmail uygulaması 3 · duckduckgo 1 · temp-mail.org 1 (muhtemelen mail QA testi).
  • AI/LLM referrer'ları: toplam 6 oturum — gemini.google.com 5 + utm_source=chatgpt.com 1. 5'i 2–17 Ağu döneminde; son 30 günde 1, son 7 günde 0. Perplexity/Copilot yok. İndikleri sayfalar: /, /bolum/bilgisayar-muhendisligi, /rehber/ais-tercih-nasil-yapilir-onaylama, 3 üniversite sayfası. GEO paketi (53eb07b) sonrası etkiyi ölçmek için henüz veri yok; hacim istatistik yapılamayacak kadar düşük.
  • Bir ziyaretçi/bot /llm.txt istedi (7g, 1 oturum). Repoda llms.txt/llm.txt rotası yok (src/app/ altında yalnız robots.ts, sitemap.ts).
  • UTM: chatgpt.com dışında hiç UTM'li trafik yok → bugüne kadar ölçülebilir hiçbir kampanya/sosyal paylaşım yapılmamış. Bing/Yandex organik de yok (yalnız Google + 1 DuckDuckGo).
  • Ölçüm hatası: accounts.google.com referrer'lı 58 oturum "Organic Search" sayılıyor (bounce %8,6). Bunlar Google ile giriş dönüşleri; giriş sayfası dağılımı da bunu doğruluyor (/listem 27, /sonuc 15, /giris 8, /paket 8 oturum giriş sayfası olarak görünüyor). Organik trafiği ~%6 şişiriyor ve OAuth dönüşünde oturumu bölüyor olması kuvvetle muhtemel.

3. Giriş/çıkış sayfaları ve /rehber performansı

Giriş sayfası kırılımı (tüm zamanlar, get_overview + entry_page starts_with):

Giriş grubu Oturum Bounce Sıra giren oturum Oran
/universite/* 580 (%47,5) %68,3 14 %2,4
/ (ana sayfa) 275 (%22,5) %38,9* 64 (322 oturumun) ~%20* / organik dönemde 12/121 ≈ %10
/bolum/* 159 (%13,0) %70,4 ≤7 ≤%4,4
/rehber/* 127 (%10,4) %75,6 13 %10,2

* İç test trafiğiyle şişkin; 30g'de ana sayfa bounce'u %60,4.

  • En çok giriş alan tekil sayfalar: / (275), /universite/sabanci-universitesi (38), /listem (27, OAuth dönüşü), /rehber/yerlesemedim-ne-yapmaliyim (19), /universite/selcuk-universitesi/sayfa/5 (19), izmir-kavram-myo (18), manas (18), /rehber/siralama-sartlari-2026 (17), /rehber/tercih-listesi-nasil-yapilir (17), /bolum/hemsirelik (16).
  • Sayfalama URL'leri Google'dan giriş alıyor: organik dönemde /universite/*/sayfa/N girişli 77 oturum (%8,3), bounce %68,8. Kullanıcı bir üniversitenin 5. sayfasına düşüyor, bağlamı yok.
  • En çok çıkış: / (212), /listem (39), sabanci (36), /sonuc (35), /giris (29), /paket (21). /sonuc + /giris + /paket toplam 85 çıkış = huni içi terk.
  • Niş bölüm sayfaları beklenmedik giriş alıyor: rus-dili-ve-edebiyati (30g: 9, 7g: 5), cagdas-turk-lehceleri, nufus-ve-vatandaslik, farsca-mutercim, uygulamali-ispanyolca — düşük rekabetli uzun kuyruk işliyor.
  • Eski alan adından kalma URL'ler 404'e düşüyor: /aydin-adnan-menderes-universitesi-2019-taban-puanlari-ve-basari-siralamalari, /2017-elektrik-elektronik-muhendisligi-basari-siralamalari-ve-taban-puanlari, /blog/2021-tyt-konulari (1'er oturum). Alan adının eski backlink'leri var demek; hacim küçük ama Search Console'dan tam liste çıkarılmalı.
  • Bozuk gelen URL'ler: /universiteler:%3EÜniversitelerin (3 oturum), /rehber/tercih-robotu-...:J<b>Tercih (1). Bir dış kaynak/scraper linki bozuk kopyalamış; düşük öncelik.

/rehber yazıları (tüm zamanlar, get_breakdown pathname starts_with /rehber; oturum / görüntüleme / bounce)

Durum Yazı Oturum Bounce
Çekiyor tercih-listesi-nasil-yapilir 27 %48
Çekiyor kac-siralama-ile-hangi-bolume-girebilirim 23 %52
Çekiyor ama tutmuyor yerlesemedim-ne-yapmaliyim 23 %74 (30g girişlerinde %100)
Çekiyor, iyi tutuyor olu-tercih-nedir 19 %26
Çekiyor ama tutmuyor siralama-sartlari-2026 19 %74
Orta yks-tercih-takvimi-2026 12 %42
Orta tercih-robotu-nedir-yok-atlas-nasil-kullanilir 11 %55
Orta ais-tercih-nasil-yapilir-onaylama 10 %80 (ama ort. 127–137 sn okunuyor)
Zayıf ek-yerlestirme-2026 (7), hazirlik-sinifi (6, %100 bounce), tercih-sonuclari (5), yatay-gecis (5), bolum-mu-universite-mi (4), onlisans-mi-lisans-mi (4), universite-kayit-rehberi (4), merkezi-yerlestirme (3), yurt-burs (3), obp (2), devlet-mi-vakif-mi (1), ozel-kosullu-programlar (1)
Ölü (0 görüntüleme) taban-puan-mi-siralama-mi, taban-siralamalar-nasil-degisir, bolumun-is-imkanini-nasil-arastirirsin, veliler-icin-tercih-rehberi 0 —

24 yazının tamamı 1–7 Ağu arasında yayınlandı (git log); 7 haftada 4'ü hiç görüntülenmedi, 12'si ≤7 oturum aldı. Rehber girişli oturumların sıra girme oranı (%10,2) katalog sayfalarının 4 katı — rehber az trafik çekiyor ama çektiği trafik daha niyetli.

4. Huni

Gerçek rotalar (src/app): / → (sihirbaz modal, ayrı rota yok: src/features/sihirbaz/components/sihirbaz-modal.tsx) → /sonuc → /giris (+/giris/dogrula) → /listem → /paket → /odeme → /odeme/sonuc. Sihirbaz adımları yalnızca olaylarla ölçülebilir (sira_girildi, sihirbaz_adim{adim}, sihirbaz_tamamlandi).

A. Gerçek kullanıcı hunisi — organik dönem, iç hesaplar user_id not_equals ile dışlandı (analyze_funnel):

Adım Oturum Önceki adıma göre
sira_girildi 36 —
sihirbaz_adim adim=2 32 %89
sihirbaz_adim adim=3 31 %97
sihirbaz_tamamlandi 28–29 %90
/sonuc görüntüleme 24 %83 (bkz. not)
/giris görüntüleme 5 %21

Ayrı sorgu (/sonuc'tan başlayan, aynı filtre): /sonuc 30 → /giris 9 (%30) → giris_denendi 5 (%17). Aynı dönemde gerçek kullanıcıda: giris_denendi 10 olay, liste_olusturuldu 3, kilit_goruntulendi 7, /listem 8 oturum, /paket 2 oturum, odeme_baslatildi 0.

Not: sihirbaz_tamamlandi → /sonuc arasındaki %17'lik "kayıp" büyük olasılıkla ölçüm kaynaklı: sihirbaz /sonuc üzerindeki profil kapısından da açılabiliyor (src/features/liste/components/tercih-profili-kapisi.tsx), o durumda yeni pageview oluşmuyor ve sıralı huni eşleşmiyor. Gerçek terk olarak yorumlanmamalı.

B. Ana sayfa → sıra girme (organik dönem): mobil 56 → 5 (%8,9) · masaüstü 65 → 7 (%10,8). Tüm zamanlar: 322 → 64 (%19,9; iç testle şişkin), 7g: 24 → 6. 36 sıra girişinin yalnız 12'si ana sayfadan; 24'ü katalog/rehber sayfalarındaki formlardan (cta-sira-form / profil kapısı) geliyor.

C. Tüm zamanlar, iç trafik dahil (referans için, karar için kullanmayın): / 322 → sıra 64 → tamam 55 → /sonuc 43; /sonuc 141 → /giris 53 → giris_denendi 32 → /listem 17; /listem 76 → /paket 20 → odeme_baslatildi 11 oturum. odeme_baslatildi 94 olay / 23 oturum / 6 kullanıcı, hepsi iç hesap veya tanıdık test hesabı (oturum listesinden doğrulandı; son 7g'deki 9 olayın 9'u tek bir kurucu oturumu, 20 Eyl).

D. Katalog tarafı: program_eklendi organik dönemde 128 olay / 91 oturum; bu oturumların 7'si sonradan sıra girdi (%7,7). netler_goruntulendi 239 olay — katalogdaki en çok kullanılan etkileşim. /bolum/hemsirelik → /giris yolu 8 kez görüldü (get_journeys), yani katalogdan giriş duvarına çarpan bir akış var.

5. JS hataları (get_errors, tüm zamanlar — toplam 7 olay, 5 oturum; hacim çok düşük)

Hata Adet / oturum Sayfa Olası kaynak
TypeError: f.getBBox is not a function 2 / 2 (ikisi de son 30g) /rehber/* (pathname filtresiyle doğrulandı; /meraklisina'da yok) src/features/rehber/components/el-cizimi-sema.tsx:55-74 — mermaid.render() çağrısında .catch yok. Hata olursa svg state'i hiç dolmuyor, kullanıcı sonsuza dek h-96 animate-pulse iskeletini görüyor (satır 92-96). 24 rehber yazısının 24'ünde mermaid şeması var.
HierarchyRequestError: insertBefore … new child contains the parent 3 / 1 (30g'den eski) sayfa tespit edilemedi Tek oturum; büyük olasılıkla tarayıcı eklentisi/çeviri aracı ya da portal kullanımı (ViewportPortal). Tekrarlamadıkça izle.
ChunkLoadError: Failed to load chunk /_next/static/chunks/… 1 / 1 /, /sonuc veya /listem (Safari/GSA) Deploy sırasında açık sekme eski chunk'ı istiyor. src/app/error.tsx içinde ChunkLoadError'da tek seferlik location.reload() yoksa eklenmeli.
Minified React error #418 (hydration metin uyuşmazlığı) 1 / 1 /universite, /bolum veya /rehber altı Sunucu/istemci farklı metin: tarih/sayı biçimlendirme (toLocaleString), "veri tazelik" damgası (GEO paketi 53eb07b) ilk şüpheli.

6. Web Vitals

Veri yok. get_site → webVitals: false; get_web_vitals → total_performance_events: 0, tüm yüzdelikler null. LCP/INP/CLS hakkında Rybbit'ten hiçbir şey söylenemez; mobil/masaüstü ayrımı yapılamadı. Trafiğin %79'u mobil ve mobil bounce masaüstünden 12 puan kötü olduğu için bu körlük önemli. Açmak site ayarı değişikliği gerektirir (bu vardiyada yasak) → kullanıcı Rybbit panelinden "Web Vitals"ı açmalı.

7. Cihaz / tarayıcı / konum

  • Cihaz (organik dönem): Mobil 735 (%79,5), bounce %72,5 · Masaüstü 190 (%20,5), bounce %60,5. Tüm zamanlar %71/%29.
  • Tarayıcı (30g): Mobile Chrome %41,4 · Mobile Safari %24,3 · Chrome %21,0 · GSA (Google uygulaması içi tarayıcı) %9,1 · Samsung Internet %1,7. OS: iOS %39,0, Android %38,3, Windows %15,9, macOS %5,9.
  • Şehir (30g): İstanbul %24, bilinmeyen %14, Ankara %10,7, İzmir %5,7, Bursa %3,4, Kayseri %2,8, Antalya %2,3. Ülke: TR %89,6; US %3,9 + CN %1,6 + SG %1,2 büyük olasılıkla bot/datacenter (blockBots açık olmasına rağmen sızan ~%7).
  • Mobil huni farkı: sıra giren oturumların %72'si mobil (26/36) — trafik payıyla (%79) uyumlu, mobilde belirgin bir sihirbaz engeli görünmüyor. program_eklendi yapanların %93'ü mobil (85/91). Tüm zamanlar hunisinde mobil /→sıra %15,0, masaüstü %23,1 ama masaüstü iç testle şişkin. Sonuç: eldeki veriyle "mobilde huni bozuk" denemez; n çok küçük.

8. Retention

get_retention haftalık (90g): 17 Ağu kohortu 312 kullanıcı → 1. hafta %1,3, 2. hafta %0,3 · 24 Ağu kohortu 258 → %1,2 · 31 Ağu kohortu 104 → %1,9. Son iki kohortta (57 ve 93 kullanıcı) geri dönen yok. Günlük (14g): 15 kohortun 4'ünde tek tük geri dönüş. 3 Ağu kohortundaki %17 iç ekip. Gerçek geri dönüş ≈ %1–2. Ürün doğası gereği (yılda bir kullanılan tercih aracı) beklenen bir tablo; ancak giriş yapmayan kullanıcıya geri dönmesi için hiçbir kanca (e-posta, kayıtlı liste hatırlatması) çalışmıyor — kaydet banner'ının gösterilip gösterilmediği bile ölçülemiyor (bkz. CTO-2).

9. Ölçüm boşlukları

Kodda tanımlı olaylar: src/lib/analitik.ts:14-32 (18 istemci olayı) + src/lib/analitik-sunucu.ts:17 (odeme_tamamlandi, sunucu tarafı).

Olay Rybbit'te (tüm zamanlar) Durum
program_eklendi 371 · netler_goruntulendi 300 · sihirbaz_adim 252 · sira_girildi 136 · sihirbaz_tamamlandi 114 · odeme_baslatildi 94 · kilit_goruntulendi 68 · giris_denendi 67 · katalog_arama 22 · hazir_panel_goruntulendi 22 · giris_cta_tiklandi 15 · danisman_sorusu 12 · liste_olusturuldu 10 · kredi_bitti 4 · odeme_tamamlandi 3 var çalışıyor
kaydet_banner_goruntulendi 0 hook hatası (CTO-2)
tadimlik_goruntulendi 0 hook hatası (CTO-2)
liste_guncellendi, liste_revize 0 kullanım yok ya da gerçek kullanıcı o aşamaya gelmiyor; hata kanıtı yok

Huniyi ölçmek için eksik olaylar:

  1. giris_basarili / kayit_tamamlandi (sunucu tarafı, odeme_tamamlandi deseniyle). Şu an yalnız "denendi" var; e-posta doğrulama ve OAuth başarısı görünmüyor. /giris → /listem arası kaybın (%47) nedeni bilinemiyor.
  2. sonuc_goruntulendi {girisli, havuz_boyutu, sira_kovasi} — /sonuc pageview'ı URL parametreleriyle şişkin ve profil kapısı akışında hiç oluşmuyor; olay tabanlı adım şart.
  3. liste_uretim_basladi ve liste_uretim_hata {kod} — src/features/rapor/components/liste-uretici.tsx:55-90 yalnız başarıyı ve kredi bitişini izliyor; AI üretim hatası/timeout görünmez.
  4. paket_goruntulendi {kaynak: kilit | kredi_bitti | nav} ve odeme_hata / odeme_iptal (iyzico callback başarısız dalı, src/lib/odeme.ts).
  5. sihirbaz_acildi {kaynak} ve sihirbaz_kapatildi {adim} — modal terk noktası; sira_girildi API başarısına bağlı olduğundan form hatası (hero-form.tsx:86 catch dalı) görünmüyor → sira_form_hata.
  6. Katalog → huni köprüsü: katalog_cta_tiklandi / rehber_cta_tiklandi {slug} — rehber ve üniversite sayfalarındaki CTA'ların tıklanma oranı bilinmiyor.
  7. rapor_yazdirildi (/rapor/yazdir) — ücretli değerin tüketildiğinin tek sinyali.
  8. Rybbit tarafı: hedef (goal) ve kayıtlı huni tanımlı değil; Web Vitals kapalı; iç trafik filtresi yok.

Öncelikli bulgular

# Bulgu Kanıt (rakam + sorgu) Etki Önerilen aksiyon Muhatap
1 Gerçek kullanıcıdan ödeme başlatan yok; ödeme verisinin tamamı iç trafik Organik dönem get_event_names: odeme_baslatildi 13 → iç user_id'ler dışlanınca 0; get_sessions event_name=odeme_baslatildi: 23 oturum / 6 kullanıcı, hepsi iç/test; /paket gerçek kullanıcı 2 oturum Yüksek Fiyat/paket optimizasyonuna vakit harcamayın; öncelik huni üstü (katalog→sihirbaz, /sonuc→giriş). odeme_tamamlandi 3 kaydının gerçek satış olup olmadığını sipariş tablosundan doğrulayın CEO
2 İç trafik dışlanmıyor, tüm KPI ve huni oranlarını şişiriyor 2–17 Ağu: 296 oturum, 5,9 sayfa/oturum, İstanbul+Sancaktepe %66; organik dönemde iç ID'lerle 48 oturum Yüksek Rybbit site ayarından ekip IP'lerini dışla ve/veya ekip tarayıcılarında Rybbit'in opt-out bayrağını kullan (localStorage disable-rybbit — Rybbit dokümanından doğrulanmalı). Raporlamada taban çizgisi 18 Ağu+ alınmalı CTO
3 Katalog sayfaları trafiğin ~%60'ını alıyor ama huniye %2–4 besliyor /universite girişli 580 oturum → 14 sıra girişi (%2,4), bounce %68; /bolum 159 → ≤7; buna karşın program_eklendi 91 oturum, yalnız 7'si sıra girdi (analyze_funnel program_eklendi→sira_girildi %7,7) Yüksek Katalog sayfasında "bu programa sıralaman yeter mi?" tarzı sıra girişi köprüsünü öne al; 1. program eklenince sihirbaza/kayda yönlendiren adım. Önce CTA tıklama olayı eklenmeli (ölçmeden değiştirmeyin) CEO → CTO
4 Huni içi en büyük düşüş /sonuc → /giris Gerçek kullanıcı: /sonuc 24–30 oturum → /giris 5–9 (%21–30) → giris_denendi 5; /sonuc çıkış sayfası 35, /giris 29 Yüksek (n küçük) /sonuc'ta girişsiz kullanıcıya gösterilen değer önerisini (tadımlık satır, hazır panel) gözden geçir; ama önce tadimlik_goruntulendi düzeltilmeli ki gösterilip gösterilmediği bilinsin CEO, Marka
5 kaydet_banner_goruntulendi ve tadimlik_goruntulendi hiç atılmıyor get_event_names tüm zamanlar: ikisi de listede yok (0), oysa program_eklendi 371; kod: use-gorunum-olayi.ts:28-31 ref null iken effect erken dönüyor ve deps değişmediği için bir daha çalışmıyor Orta CTO-2'deki düzeltme CTO
6 Web Vitals kapalı get_site webVitals:false; get_web_vitals 0 olay Orta Rybbit panelinden aç (kullanıcı işlemi). Mobil %79 + bounce %72,5 iken performans körü kalınmamalı CTO / Bilal
7 Google OAuth dönüşü "Organic Search" + yeni oturum sayılıyor referrer accounts.google.com 58 oturum, bounce %8,6; giriş sayfası /listem 27, /sonuc 15 Orta Huni analizini oturum yerine kullanıcı/olay bazlı kur; giris_basarili sunucu olayı ekle; Rybbit'te accounts.google.com'u referrer dışlama listesine al (ayar varsa — doğrulanmalı) CTO
8 Trafik 5 haftada %77 düştü (381 → 86 oturum/hafta) get_overview_timeseries günlük, haftalık toplam Orta Sezon dışı strateji kararı: evergreen içerik + 2027 tercih dönemi için SEO birikimi; kısa vadede dönüşüm deneyi için trafik yetersiz CEO, SEO
9 24 rehber yazısının 4'ü sıfır, 12'si ≤7 oturum get_breakdown pathname starts_with /rehber Orta SEO başlığına bakın SEO
10 Rehber şemalarında getBBox hatası → şema yerine kalıcı gri iskelet get_errors pathname starts_with /rehber: 2 olay / 2 oturum (30g) Düşük–Orta (hacim küçük ama her rehber yazısını etkileyebilir) CTO-3 CTO
11 Giriş yapan kullanıcının e-posta + adı Rybbit'e gidiyor, IP takibi açık src/components/rybbit-identify.tsx:28-31; get_site trackIp:true; oturum kayıtlarında trait olarak e-posta görünüyor Orta (hukuki) Self-host olsa da gizlilik metni/KVKK aydınlatmasıyla tutarlılığı kontrol edin; gerek yoksa trait'leri kaldırıp yalnız kullanıcı ID'si gönderin CEO → CTO
12 AI/LLM trafiği neredeyse yok kanal AI: 6 oturum tüm zamanlar, son 30g 1, son 7g 0; /llm.txt isteği 1 Düşük (şimdilik) GEO etkisini aylık izleyin; llms.txt rotası değerlendirilsin SEO/GEO
13 Eski alan adı URL'leri 404 3 farklı eski URL, 1'er oturum (organik dönem, giriş sayfası regex dışı sorgu) Düşük Search Console'dan 404 + backlink listesi; ilgili /universite, /bolum sayfalarına 301 SEO → CTO

CTO'ya iletilecek teknik maddeler

  1. İç trafik filtresi. Rybbit site ayarında IP dışlama ve/veya ekip cihazlarında opt-out. Kod tarafında alternatif: src/app/layout.tsx:129-136'daki Script'i bir çerez/localStorage bayrağıyla koşullamak. Hangi yöntem seçilirse seçilsin, mail QA / tarayıcı test ajanlarının trafiği de dışlanmalı (referrer'da temp-mail.org göründü).
  2. Görünüm olayı hook'u koşullu render'da çalışmıyor. src/components/use-gorunum-olayi.ts:28-31: effect yalnız [ad, anahtarEki] değişince kuruluyor; bileşen ilk render'da null dönüyorsa ref.current null → erken return → bir daha hiç gözlemlenmiyor. Etkilenenler: src/features/liste/components/kaydet-banner.tsx:43-47 (liste < 3 ve kapali başlangıçta true) ve src/features/rapor/components/tadimlik-satiri.tsx:100-104 (satir async geliyor). Çalışanlar (listem-govde.tsx:140,145, sihirbaz-cagri-karti.tsx:232) eleman baştan mount olduğu için etkilenmiyor. Çözüm yönü: callback ref'e geçmek ya da gözlemi, elemanı saran ve yalnız eleman varken mount olan küçük bir alt bileşene taşımak.
  3. Mermaid render hatası yutulmuyor. src/features/rehber/components/el-cizimi-sema.tsx:55-74: import("mermaid").then(async …) zincirinde catch yok; getBBox hatasında iskelet sonsuza dek kalıyor. En azından hata durumunda iskeleti kaldırıp ariaLabel metnini düz yazı olarak göstermek. Hata /rehber/*'de görüldü, /meraklisina'da görülmedi.
  4. ChunkLoadError toparlanması. src/app/error.tsx'te ChunkLoadError için tek seferlik yeniden yükleme var mı kontrol edilmeli (1 olay, Safari/GSA).
  5. Hydration #418. Katalog/rehber sayfalarında sunucu-istemci metin farkı; ilk şüpheli yerel tarih/sayı biçimlendirmesi ve GEO paketindeki veri tazelik damgası. Tek olay — düşük öncelik, ama yeniden görülürse sayfa bazında daraltın (get_errors + pathname filtresi).
  6. Eksik olaylar (öncelik sırasıyla): giris_basarili (sunucu), sonuc_goruntulendi, liste_uretim_hata, paket_goruntulendi{kaynak}, odeme_hata, sihirbaz_kapatildi{adim}, katalog_cta_tiklandi / rehber_cta_tiklandi, sira_form_hata. Tip birliği: src/lib/analitik.ts:14-32; sunucu olayları: src/lib/analitik-sunucu.ts:17.
  7. /sonuc pageview şişmesi. trackUrlParams: true + /sonuc'taki URL parametre değişimleri → 143 oturumda 1.602 pageview. Maskeleme (data-mask-patterns, layout.tsx:132) sıralamayı gizliyor ama sayımı engellemiyor. Ya /sonuc'ta parametre değişimlerini replaceState ile pageview tetiklemeyecek şekilde yapın ya da raporlamada /sonuc için oturum sayısını kullanın.
  8. Sayfalama URL'leri. /universite/[slug]/sayfa/[no] sayfaları Google'dan doğrudan giriş alıyor (77 oturum). Teknik karar SEO ile birlikte: canonical'ı 1. sayfaya vermek mi, yoksa sayfalama sayfalarının başlık/H1'ini ("… — sayfa 5") ve üst bağlamını güçlendirmek mi.
  9. Rybbit paneli (kod değil, ayar — kullanıcı onayıyla): Web Vitals'ı aç; hedef ve kayıtlı huni tanımla (sira_girildi → sihirbaz_tamamlandi → giris_basarili → liste_olusturuldu → odeme_baslatildi → odeme_tamamlandi). get_goals MCP aracı şu an şema hatası veriyor (meta.total string dönüyor) — Rybbit/MCP sürüm uyumsuzluğu, bilgi notu.
  10. PII. src/components/rybbit-identify.tsx:28-31 e-posta ve adı trait olarak gönderiyor; CEO kararına göre kaldırılabilir (yalnız kullaniciId yeterli).

SEO/GEO ekibine iletilecek içerik sinyalleri

  • Trafiği taşıyan şey rehber değil, programatik katalog. Girişlerin %47,5'i /universite/, %13'ü /bolum/; rehber %10,4. Uzun kuyruk işliyor: vakıf/KKTC/yurt dışı üniversiteleri (Sabancı 38, Manas 18, İzmir Kavram MYO 18, Nevşehir HBV 17, Bayburt 13, Kıbrıs Aydın/İlim, Saraybosna, Ahmet Yesevi) ve niş bölümler (rus dili, çağdaş türk lehçeleri, nüfus ve vatandaşlık, farsça mütercim, uygulamalı ispanyolca). Rekabetin düşük olduğu bu kümelerde katalog sayfalarının üstüne kısa, özgün bir "bu üniversite/bölüm için tercih notu" bloğu en yüksek kaldıraçlı içerik işi olabilir.
  • Katalog sayfalarının bounce'u %68–70 ve huniye katkısı %2–4. İçerik tarafında: sayfanın ilk ekranında "sıralamanla bu programlar tutar mı?" sorusuna bağlanan net bir köprü metni.
  • Niyeti yüksek rehber konuları: tercih-listesi-nasil-yapilir (27), kac-siralama-ile-hangi-bolume-girebilirim (23), olu-tercih-nedir (19, bounce %26 — en iyi tutan), yks-tercih-takvimi-2026 (12). Rehber girişli oturumlar %10,2 oranında sıra giriyor (katalogun 4 katı). Bu kümeyi derinleştirin.
  • Trafik çekip tutamayanlar: yerlesemedim-ne-yapmaliyim (23 oturum, 30g girişlerinde %100 bounce) ve siralama-sartlari-2026 (19, %74–87). Arama niyeti–içerik uyumu ve ilk ekran kontrol edilmeli; "yerleşemedim" okuyucusu ürünün hedef kitlesi değil (tercih bitmiş) — ek yerleştirme/2027 hazırlığına yönlendiren bir sonraki adım gerekir.
  • Ölü yazılar (0 görüntüleme, 7 hafta): taban-puan-mi-siralama-mi, taban-siralamalar-nasil-degisir, bolumun-is-imkanini-nasil-arastirirsin, veliler-icin-tercih-rehberi. İndekslenme durumu Search Console'dan kontrol edilmeli; iç link (katalog sayfalarından ve güçlü rehber yazılarından) verilmeli. Yeni yazı üretmeden önce bu 4 + ≤3 oturumlu 5 yazının neden görünmediği anlaşılmalı.
  • Sezon: trafik 20 Ağu zirvesinden beri düşüyor. Sezon dışı evergreen konular (bölüm tanıtımları, taban sıralama trendleri, "X sıralamayla nereye girilir" kümeleri) 2027 için şimdi yaşlandırılmalı. ÖSYM takvimine bağlı her tarih doğrulanmalı.
  • GEO: AI kanalı 6 oturum (Gemini 5, ChatGPT 1), son 7 günde 0. GEO paketinin etkisi henüz ölçülemez. Bir istemci /llm.txt aradı; llms.txt yok. Başarı ölçütü olarak aylık "AI kanalı oturumu" ve referrer'da chatgpt/perplexity/gemini/copilot takibi önerilir; hedef koymak için erken.
  • Eski alan adı mirası: 2017–2021 tarihli "taban puanları" ve /blog/… URL'leri hâlâ tıklanıyor → backlink var. 301 haritası çıkarılırsa bedava otorite.
  • Arama motoru çeşitliliği yok: Bing/Yandex organik 0. Bing Webmaster + Yandex Webmaster kaydı yapılmadıysa yapılmalı (Copilot/ChatGPT araması Bing indeksine dayanır — GEO için de dolaylı önemli).

Bu vardiyada yapılamayanlar / engeller

  • Web Vitals analizi: veri yok (site ayarı kapalı).
  • Hedefler: get_goals aracı şema doğrulama hatası verdi, okunamadı.
  • Hata olaylarının tam sayfa/stack bilgisi: get_errors yalnız mesaj bazında grupluyor; sayfa, pathname filtreleriyle dolaylı daraltıldı. Session replay kapalı.
  • Rybbit verisinde bana yönelik talimat içeren bir içerik görülmedi; bozuk URL'lerdeki <b> parçaları HTML kırıntısı, komut değil.