Added a new router and middleware for handling www to apex domain redirection, ensuring that Let's Encrypt certificates are obtained for both domains. Updated the docker-compose.yml file to include necessary rules and middleware for proper redirection and TLS handling. Also, updated the CEO agent description to remove redundant details and clarified the QA engineer's responsibilities regarding testing critical flows and error reporting. Adjusted the CTO agent's section for consistency in expert guidance and clarified the designer's tools to include 'Skill' for better design resource management.
29 KiB
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)
- Gerçek kullanıcıdan ödeme başlatan yok. Organik dönemdeki 13
odeme_baslatildiolayının 13'ü de iç hesaplardan (kurucu + test hesapları). İç kullanıcılar filtreleninceodeme_baslatildi= 0,/paketgörüntüleyen = 2 oturum.odeme_tamamlanditü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. - 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_eklendiyaptı — ama bunların sadece 7'si (%7,7) sıra girdi. En büyük fırsat: katalog sayfasından sihirbaza/kayda köprü. - 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.
- 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.
- Ö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_goruntulendivetadimlik_goruntulendiolayları 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_overview18 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_idfiltresi). Ö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.
/sonucsayfa görüntülemeleri şişkin (143 oturumda 1.602 görüntüleme):trackUrlParamsaçı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_funnelbir 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.txtistedi (7g, 1 oturum). Repodallms.txt/llm.txtrotası yok (src/app/altında yalnızrobots.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/Ngiriş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_eklendiyapanları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:
giris_basarili/kayit_tamamlandi(sunucu tarafı,odeme_tamamlandideseniyle). Ş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.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.liste_uretim_basladiveliste_uretim_hata{kod} —src/features/rapor/components/liste-uretici.tsx:55-90yalnız başarıyı ve kredi bitişini izliyor; AI üretim hatası/timeout görünmez.paket_goruntulendi{kaynak: kilit | kredi_bitti | nav} veodeme_hata/odeme_iptal(iyzico callback başarısız dalı,src/lib/odeme.ts).sihirbaz_acildi{kaynak} vesihirbaz_kapatildi{adim} — modal terk noktası;sira_girildiAPI başarısına bağlı olduğundan form hatası (hero-form.tsx:86catch dalı) görünmüyor →sira_form_hata.- Katalog → huni köprüsü:
katalog_cta_tiklandi/rehber_cta_tiklandi{slug} — rehber ve üniversite sayfalarındaki CTA'ların tıklanma oranı bilinmiyor. rapor_yazdirildi(/rapor/yazdir) — ücretli değerin tüketildiğinin tek sinyali.- 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
- İç 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ü). - 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'danulldönüyorsaref.currentnull → erken return → bir daha hiç gözlemlenmiyor. Etkilenenler:src/features/liste/components/kaydet-banner.tsx:43-47(liste < 3 vekapalibaşlangıçta true) vesrc/features/rapor/components/tadimlik-satiri.tsx:100-104(satirasync 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. - Mermaid render hatası yutulmuyor.
src/features/rehber/components/el-cizimi-sema.tsx:55-74:import("mermaid").then(async …)zincirindecatchyok;getBBoxhatasında iskelet sonsuza dek kalıyor. En azından hata durumunda iskeleti kaldırıpariaLabelmetnini düz yazı olarak göstermek. Hata/rehber/*'de görüldü,/meraklisina'da görülmedi. - ChunkLoadError toparlanması.
src/app/error.tsx'te ChunkLoadError için tek seferlik yeniden yükleme var mı kontrol edilmeli (1 olay, Safari/GSA). - 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). - 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. - /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şimlerinireplaceStateile pageview tetiklemeyecek şekilde yapın ya da raporlamada /sonuc için oturum sayısını kullanın. - 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. - 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_goalsMCP aracı şu an şema hatası veriyor (meta.total string dönüyor) — Rybbit/MCP sürüm uyumsuzluğu, bilgi notu. - PII.
src/components/rybbit-identify.tsx:28-31e-posta ve adı trait olarak gönderiyor; CEO kararına göre kaldırılabilir (yalnızkullaniciIdyeterli).
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.txtaradı;llms.txtyok. 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_goalsaracı şema doğrulama hatası verdi, okunamadı. - Hata olaylarının tam sayfa/stack bilgisi:
get_errorsyalnı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.