Cursor'a “SEO'yu optimize et” dedim, ChatGPT sitemi hâlâ okumuyor ve önermiyor
“SEO'yu optimize et” gibi bir prompt, Cursor'a ya da Claude Code'a bir bitiş çizgisi vermez; araç çoğu zaman bir meta etiketi ekleyip durur. Bunun yerine üç şey yapın: müşterilerinizin ne sorduğunu ve asistanların bugün kimi önerdiğini araştırın; araca her prompt'ta tek bir ölçülebilir iş ve bir kabul kriteri verin (ör. “herkese açık her sayfanın H1'i ve ilk paragrafı curl çıktısında görünsün”); sonra her düzeltmeyi terminalde bir komutla kendiniz kanıtlayın. Siteyi baştan yapmanız ya da araç değiştirmeniz gerekmiyor: iş ölçülebilir olunca aynı kod aracı düzeltmelerin çoğunu yapabilir.
“SEO’yu optimize et” neden bir şey değiştirmiyor
Yapay zekâ kod aracı ne isterseniz onu yapar. “SEO’yu optimize et” ne bir sayfa, ne bir sonuç, ne de bir test söyler; araç bildiği en küçük değişikliği seçer, çoğu zaman bir meta etiketi ekler ve işin bittiğini söyler. İstekte, ChatGPT’nin artık sitenizi okuyup okuyamadığını ne ona ne de size gösterecek bir şey yoktur.
Genel bir prompt’un ıskalamasının üç sebebi daha var:
- Asıl sebepler SEO listelerinde yok. Sosyal medyada dolaşan 20 maddelik bir SEO listesini Google’ın kendi belgeleriyle test ettik; vibe-coded bir siteyi en sık görünmez yapan üç şey listede hiç yoktu: yalnızca JavaScript’te duran metin, sahte 404’ler ve açık kalmış önizleme kopyaları.
- Araç, botların gördüğünü görmüyor. Vercel’in analizinde büyük yapay zekâ botlarının hiçbiri JavaScript çalıştırmıyordu (Vercel, Aralık 2024; üçüncü taraf araştırma); sayfa tarayıcınızda bitmiş görünürken onlar için neredeyse boş olabilir. Prompt ondan ham HTML’e bakmasını istemiyorsa araç bunu hiç fark etmeyebilir.
- Bazı sebepler kodunuzda değil. 29 Eylül 2026’da katman.pro’nun robots.txt’si GPTBot’a izin verirken bir Cloudflare ayarı yapay zekâ eğitim botlarına 403 döndürüyordu (kendi ölçümümüz). Kodunuzda yaptığınız bir değişiklik, CDN panelinizdeki bir ayara dokunmaz.
Kitabımızdaki kural: kod aracınıza asla “sıralamayı yükselt” ya da “SEO’yu optimize et” demeyin. Ölçülebilir bir iş verin (“her sayfaya benzersiz title”) ve bir kabul kriteri koyun (“iki sayfa aynı title’ı paylaşmıyor”).
| Bunun yerine | Bunu isteyin | Kabul |
|---|---|---|
| “SEO’yu optimize et” | Her sayfaya tek kaynaktan benzersiz title ve meta açıklama | İki sayfanın aynı title’ı ya da açıklamayı paylaşmadığını gösteren test geçiyor |
| “Siteyi yapay zekâya uygun yap” | Herkese açık sayfaların metni sunucudan gelen HTML’de | JavaScript kapalıyken her sayfanın H1’i ve ilk paragrafı okunuyor |
| “robots.txt’yi düzelt” | Yapay zekâ botlarını adıyla sayan bir robots.txt ve sayfa listesinden üretilen sitemap | Disallow: / yok; sitemap’teki her adres 200 dönüyor ve kanonik |
| “Schema ekle” | Her sayfanın kendi verisinden üretilen JSON-LD | Zengin Sonuçlar Testi’nde hata yok; içindeki her fiyat ve iddia sayfada var |
| “404’leri düzelt” | Olmayan her adres için gerçek 404 durum kodu | Uydurma bir adrese curl 404 dönüyor |
1. Adım: koddan önce araştırma
Yapay zekâ kod aracı her oturumda sıfırdan başlar; kurallar yazılı değilse tahmin eder. Bu yüzden ilk prompt’tan önce kısa bir research.md yazın:
- 10–12 müşteri cümlesi: markanızı geçirmeden, müşterinizin ChatGPT’ye yazacağı cümleler. Satış konuşmalarınızdan, destek e-postalarınızdan, yorumlardan çıkarın.
- Asistanlar bugün ne diyor: her soruyu oturum açmadan, web araması açıkken sorun; kimlerin sayıldığını ve hangi sayfaların kaynak gösterildiğini yazın. Soru setinin tamamı ChatGPT, Claude ve Perplexity sitemi öneriyor mu? sayfasında.
- Tek cümleniz, dört parçayla: müşteri ne getirir, siz ne yaparsınız, eline ne geçer, hangi korkusu gereksiz.
- “X değildir” notu, asistanlar sizi başka bir ürünle karıştırıyorsa.
- Rakipler ve kanıt, her biri kaynağı ve tarihiyle.
Sonra her oturumu P0 prompt’uyla açın. Kitaptaki hâlinin kısaltılmışı:
Bu projede SEO (Google, Bing) ve GEO (ChatGPT, Claude, Gemini, Perplexity gibi
asistanlarda görünürlük) üzerinde çalışacağız. Önce research.md dosyasını oku.
Kurallar:
- research.md'de kaynağı olmayan hiçbir sayı, müşteri yorumu, rakip bilgisi ya
da iddia ekleme. Bilmediğin yere [DOLDUR] yaz.
- Sayfada görünmeyen hiçbir bilgiyi schema'ya, meta açıklamaya ya da
llms.txt'ye yazma.
- Giriş gerektiren uygulama ekranlarına dokunma; yalnızca herkese açık sayfalar.
- Her değişiklikten sonra hangi dosyada neyi değiştirdiğini liste hâlinde yaz.
Kabul: araç research.md’yi özetleyip sayfa planını size onaylatmadan kod yazmıyor.
Ardından P1’i isteyin: kodu hiç değiştirmeyen bir denetim. Herkese açık her sayfa için bir tablo (sayfa sunucuda mı tarayıcıda mı çiziliyor, title, canonical, H1 sayısı, JSON-LD, sayfaya gelen iç linkler); ayrıca olmayan bir adres 404 mü dönüyor, menüler gerçek <a href> linkleri mi kullanıyor, sitenin bir önizleme kopyası yayında mı. Düzeltmeye tahminden değil, bu rapordan başlayın.
2. Adım: her prompt’ta tek iş, her işte bir kabul kriteri
Prompt’ları sırayla verin; kabul kriteri sağlanmadan bir sonrakine geçmeyin. Kitabımızdaki prompt’lardan kısaltılmış üç örnek:
Metin sunucudan gelen HTML’de (P2)
Sayfaların metni JavaScript çalışmadan da HTML'de görünmeli: başlıklar,
paragraflar, fiyatlar, SSS cevapları ve linkler. Mevcut çatıya göre en küçük
değişikliği seç ve neden seçtiğini yaz: sunucu tarafı render (SSR), derleme
anında statik üretim (SSG) ya da herkese açık sayfalar için ön-render.
Uygulama içi ekranları olduğu gibi bırak. Yönlendirmede # parçası değil,
gerçek yollar kullan. Bittiğinde her sayfa için şu komutun çıktısında H1'in
ve ilk paragrafın göründüğünü göster:
curl -s https://ALANADI/SAYFA | sed 's/<[^>]*>/ /g' | tr -s ' ' | head -c 600
Kabul: JavaScript kapalıyken her sayfanın H1’i ve ilk paragrafı okunuyor.
Kanıtlayın:
curl -s https://siteniz.com/ | sed 's/<[^>]*>/ /g' | tr -s ' ' | head -c 600
curl -s https://siteniz.com/ | sed 's/<[^>]*>/ /g' | wc -w
İlk komut bir botun aldığı açılış metnini gösterir, ikincisi kelimeleri sayar. Sonuç yüzlerceyse iyi; birkaç düzineyse metniniz hâlâ JavaScript’te.
robots.txt ve sitemap (P4)
Kökte robots.txt oluştur:
- Arama motorlarına ve yapay zekâ botlarına adıyla izin ver: Googlebot,
Bingbot, OAI-SearchBot, ChatGPT-User, GPTBot, ClaudeBot, Claude-User,
Claude-SearchBot, PerplexityBot, Perplexity-User.
- Yalnızca uygulama yollarını kapat (ör. /api/, /admin/, /app/); her biri
eğik çizgiyle bitsin.
- En alta: Sitemap: https://ALANADI/sitemap.xml
sitemap.xml'i sayfa listesinden derleme anında üret: yalnızca 200 dönen,
kanonik ve dizine girmesini istediğimiz adresler. lastmod yalnızca sayfanın
metni değiştiğinde değişsin. Giriş, ödeme ve teşekkür sayfalarını sitemap'e
koyma, bunlara noindex ekle; ama noindex'li bir sayfayı robots.txt'de kapatma,
yoksa Google noindex'i hiç göremez.
Kabul: robots.txt’de Disallow: / yok; sitemap’teki her adres 200 dönüyor ve kanonik; noindex’li sayfa sitemap’te değil.
Kanıtlayın:
curl -s https://siteniz.com/robots.txt | grep -iE '^disallow:[[:space:]]*/[[:space:]]*$' || echo "siteyi kapatan satır yok"
curl -s https://siteniz.com/sitemap.xml | grep -o '<loc>[^<]*' | sed 's/<loc>//' |
while read -r url; do echo "$(curl -s -o /dev/null -w '%{http_code}' "$url") $url"; done
İkinci komutun her satırı 200 ile başlamalı. GPTBot ve ClaudeBot eğitim verisi toplar; onlara izin vermek bir iş kararıdır ve OpenAI’a göre GPTBot’u engellemek ChatGPT aramasını etkilemez. robots.txt ayrıca yalnızca bir ricadır: CDN’iniz botu kapıda çevirirse bot onu hiç okumaz. 3. adımdaki kontroller bu yüzden botları doğrudan dener.
Sayfanın kendi verisinden JSON-LD (P5)
Sayfalara JSON-LD ekle, yalnızca sayfada görünen bilgiyle:
- Tüm sitede: Organization (name, url, logo, sameAs) ve WebSite.
- Ürün / hizmet sayfası: Service ya da SoftwareApplication; fiyat sayfadaki
ile birebir aynı.
- Yazılar ve rehberler: Article (headline, datePublished, dateModified, author).
- Alt sayfalar: BreadcrumbList. SSS bölümü olan sayfa: FAQPage.
JSON-LD'yi sayfa içeriğiyle aynı veriden üret; elle ikinci kez yazma.
Bittiğinde her sayfanın JSON-LD bloğunun geçerli JSON olduğunu doğrulayan
bir test ekle.
Kabul: Google’ın Zengin Sonuçlar Testi’nde hata yok; schema’daki her fiyat ve iddia sayfada aynen yazıyor.
Kanıtlayın (python3 gerekir), sonra adresi Zengin Sonuçlar Testi’ne yapıştırın:
curl -s https://siteniz.com/ | python3 -c "import sys,re,json; b=re.findall(r'application/ld\+json\">(.*?)</script', sys.stdin.read(), re.S); [json.loads(x) for x in b]; print(len(b), 'JSON-LD blogu gecerli JSON')"
Komut 0’dan büyük bir sayı basmalı; hata veriyorsa JSON bozuktur. Yine de schema bir kestirme değil. Sayfayı zengin sonuca aday yapar ama garanti vermez; Google da AI Overviews ya da AI Mode’da görünmek için eklemeniz gereken özel bir schema.org işaretlemesi olmadığını yazıyor (Google, yapay zekâ özellikleri ve siteniz). Buradaki işi, kim olduğunuzu sayfayla aynı bilgilerle, makinenin okuyacağı tek bir yerde söylemek.
Kalan on prompt
Prompt kitabının geri kalanı aynı kalıpla ilerliyor: tek kaynaktan head etiketleri (P3), durum sayfaları (P6), rakipleri de sayan karşılaştırma rehberi (P7), llms.txt ve “X değildir” notu (P8), görseller, iç linkler, 404’ler ve önizleme adresleri, hız, ölçüm ve her yayından önce son kontrol (P14). Her birinin işi ve kabul kriteri Katman yöntemi sayfasında; prompt’ların tam metni Katman kitabında.
3. Adım: aracın “bitti” demesine değil, komuta güvenin
Kod aracının “yaptım” demesine güvenmeyin ve her teknik düzeltmeden sonra kontrolleri yeniden çalıştırın: bir düzeltme sessizce başka bir şeyi bozabilir. Örnek sitemizde eklenen bir Cache-Control: no-transform başlığı HTML sıkıştırmasını kapattı; sayfalar yaklaşık 4 kat büyük gitti (kendi ölçümümüz).
SITE=https://siteniz.com
echo "404: $(curl -s -o /dev/null -w '%{http_code}' $SITE/olmayan-sayfa)"
echo "kelime: $(curl -s $SITE/ | sed 's/<[^>]*>/ /g' | wc -w)"
for b in GPTBot/1.2 OAI-SearchBot/1.0 ClaudeBot/1.0 PerplexityBot/1.0; do
echo "$b: $(curl -s -o /dev/null -w '%{http_code}' -A "Mozilla/5.0 (compatible; $b)" $SITE/)"
done
curl -s -o /dev/null -D - -H 'Accept-Encoding: br, gzip' $SITE/ | grep -i content-encoding
İyi sonuç şöyle görünür:
- olmayan sayfa:
404; - kelime: düzinelerle değil yüzlerle;
- her bot:
200; - son satır:
brya dagzip.
403 alan bir botu çoğu zaman kodunuz değil, CDN’iniz ya da güvenlik duvarınız geri çeviriyor: Cloudflare yapay zekâ botlarını engelliyor sayfasına bakın ya da yapay zekâ bot kontrolü aracını çalıştırın. Vibe-coded siteler için bir dakikalık altı test ChatGPT vibe-coded sitemi görmüyor sayfasında. Hepsi geçince araca bu kontrolleri her yayından önce çalışan bir betik olarak kaydettirin: bu da P14.
Bu kontrollerden geçmek, botların sitenizi okuyabildiğini gösterir; asistanların sizi önerip önermediğini göstermez. OpenAI, robots.txt değişikliklerinin ChatGPT aramasına yaklaşık 24 saatte yansıdığını yazıyor. Her değişiklikten 14 gün sonra sabit soru setinizi tekrar sorun ve karşılaştırın: ChatGPT, Claude ve Perplexity sitemi öneriyor mu?
Katman nerede devreye girer
Katman; Cursor, Claude Code, VS Code ve diğer yapay zekâ kod araçlarının içinde çalışan bir MCP sunucusudur. Araştırma, prompt’lar ve kontroller kodunuzun yanında olur: Katman işini projenizdeki .katman/ klasöründe tutar, koddaki değişiklikleri kod aracınız yapar.
- Denetim Haftası, 7 gün için bir kez 3 $, neyin yanlış olduğunu bulur ve ne yapacağınızı söyler.
katman_scan_codekodunuzu okuyup sayfaların sunucuda mı yoksa yalnızca tarayıcıda mı çizildiğini söyler;katman_audit_sitecanlı siteyi botların gördüğü gibi denetler;katman_researchresearch.md’yi yazar;katman_planbunu görevlere çevirir ve her görevin bir prompt kodu, bir kabul kriteri ve onu doğrulayan aracı olur. Sitenize sayfa ya da dosya yazmaz. - Katman Pro, ilk 100 müşteri için kurucu fiyatıyla ayda 29 $ (sonra 49 $) ya da yılda 290 $, işi yapan araçları ekler:
katman_promptP0–P14’ü araştırmanızla doldurulmuş ve çatınıza göre notlarla verir;katman_page_briefsayfa brifi yazar;katman_generaterobots.txt, llms.txt ve JSON-LD üretir ve onları yalnızcawrite: trueverdiğinizde projenize yazar. - PDF kursu, yani Denetim Haftası’ndan ve Pro’dan ayrı satılan Katman kitabı ve 30 günlük GEO çalışma defteri, prompt kitabının tamamını içerir: 15 prompt’un hepsi, kabul kriterleriyle, kendiniz yapıştırmak isterseniz. Bkz. PDF kursu.
Daha fazlası: Katman ne yapar ve fiyatlar.
Kaynaklar: Katman kitabı (29 Eylül 2026); Google, yapay zekâ özellikleri ve siteniz; OpenAI botları; metin içinde linklenen Vercel analizi (üçüncü taraf araştırma). Google ve OpenAI sayfaları 30 Eylül 2026’da kontrol edildi. Yazan: Katman ekibi, Rnify Limited.
Kimler için değil
- Önerilmeyi garanti eden tek bir prompt arayanlar: hiçbir prompt bunu vaat edemez.
- Bu sayfadaki kontrollerin hepsinden zaten geçen siteler: sıradaki iş durum sayfaları ve site dışında anılmak.
- İşi başkasının yapmasını isteyenler: bu sayfa kendi kod aracınıza daha iyi talimat vermekle ilgili.
Sık sorulan sorular
“SEO'yu optimize et” dediğimde Cursor neden yalnızca bir meta etiketi ekledi?
Çünkü “SEO'yu optimize et” ne bir sayfa, ne bir sonuç, ne de bir test söylüyor; araç bildiği en küçük işi yapıp bittiğini söylüyor. Bunun yerine ölçülebilir tek bir iş ve geçti-kaldı bir kontrol verin, ör. “iki sayfa aynı title'ı paylaşmıyor”.
“SEO'yu optimize et” yerine ne yazmalıyım?
Her prompt'ta tek bir iş ve bir kabul kriteri. Örneğin: herkese açık sayfaların metnini sunucudan gelen HTML'e taşı; curl her sayfanın H1'ini ve ilk paragrafını basmadan işi kabul etme.
Bu Claude Code, Windsurf, Lovable ya da Bolt'ta da işe yarar mı?
Evet. Prompt'lar, sayfalarınızı değiştirebilen her yapay zekâ kod aracı ya da site yapıcı için düz metin; kabul kontrolleri de araçtan bağımsız terminal komutları.
Cursor, Cloudflare'in yapay zekâ botlarını engellemesini düzeltebilir mi?
Kodunuzu düzenleyerek çoğu zaman hayır. Engel bir Cloudflare ayarı; panelden ya da Cloudflare'in API'siyle değişir. Önce her botu curl ile test edin, sonra Cloudflare rehberimizi izleyin.
Önce llms.txt ve schema mı istemeliyim?
İlk iş olarak hayır. Google, yapay zekâ özelliklerinde görünmek için özel dosya ya da schema gerekmediğini yazıyor; önce yapay zekâ botlarının 200 aldığından ve metninizin HTML'de olduğundan emin olun.
Düzeltmenin gerçekten işe yaradığını nasıl anlarım?
Kabul kontrolündeki komutu, aracın “bitti” demesine güvenmeden kendiniz çalıştırın. Sonra değişiklikten 14 gün sonra sabit soru setinizi tekrar sorup karşılaştırın.
Bu prompt'lar ChatGPT'nin sitemi önermesini sağlar mı?
Bunu kimse vaat edemez. Prompt'lar sitenizi okunur ve alıntılanır yapar; önerilmek ayrıca müşterinin durumuna yazılmış bir sayfaya ve başkalarının sizin hakkınızda söylediklerine bağlı.