# 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-...:JTercih` (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 `` parçaları HTML kırıntısı, komut değil.