Muazzam çalışan bir web sitesi veya SaaS geliştirdiniz ama Google'dan tek bir ziyaretçi bile gelmiyor. Yapay zekânın bilmeden yaptığı teknik SEO.
Yapay zekâ ile kodlama yapan geliştiricilerin en sık yaşadığı hüsran hikâyesi şudur: Cursor'ı açarlar, Claude 3.7 ile 3 günde harika çalışan bir web sitesi veya SaaS inşa ederler. Tasarım büyüleyicidir, butonlar tıkır tıkır çalışır, veritabanı hızlıdır. Projeyi büyük bir heyecanla canlıya alırlar ve beklemeye başlarlar. Bir ay geçer, iki ay geçer; Google Search Console'da organik tıklama sayısı kocaman bir “SIFIR”dır. Sitenin tek bir sayfası bile arama sonuçlarında görünmez.
Bu trajedinin sebebi çok basittir: Yapay zekâ çalışan kod yazmayı bilir; ancak SEO kurallarını bilmez. Eğer özel olarak dikte etmezseniz, yapay zekâ varsayılan olarak en kolayına gelen istemci taraflı render (CSR) yöntemini seçer, meta etiketlerini unutur, sitemap üretmez, arama motoru botlarına boş bir HTML iskeleti sunar ve sitenizi Google'ın gözünde görünmez bir hayalete dönüştürür.
Bu teknik rehberde, yapay zekâ ile üretilen modern web sitelerinde bizzat tespit ettiğim en yaygın 6 ölümcül SEO hatasını, bunların organik trafiğe olan yıkıcı etkilerini ve Next.js kod tabanınızda bu hataları nasıl kalıcı olarak düzelteceğinizi cerrahi detaylarıyla anlatıyorum.
Vibe Sitelerinde En Yaygın 6 Teknik SEO Hatası
Aşağıdaki tablo, AI tarafından üretilen sitelerde en sık karşılaşılan hataları ve yarattığı organik felaketi özetler:
| Hata No & Başlık | Teknik Sebebi / Nasıl Ortaya Çıkar? | Organik Trafik Kayıp Etkisi | Kalıcı Çözüm Metodolojisi |
|---|---|---|---|
| Hata 1: 'use client' Salgını (CSR) | Tüm sayfaların başına 'use client' yazılması | %100 İndeks Kaybı (Google bot boş sayfa görür) | Sayfaları React Server Component (RSC) yapın |
| Hata 2: Dinamik Metadata Eksikliği | Next.js generateMetadata fonksiyonunun yazılmaması | SERP'te başlık 'Create Next App' kalır | Her dinamik rota için generateMetadata bağlayın |
| Hata 3: Statik / Eksik Sitemap | sitemap.xml dosyasının unutulması | Yeni açılan sayfalar haftalarca taranmaz | app/sitemap.ts dinamik rotasını kurun |
| Hata 4: Hydration Mismatch & CLS | Sunucu ile tarayıcı HTML'inin uyuşmaması | Google Core Web Vitals ve sıralama cezası | Tarih ve yerel saatleri istemcide izole edin |
| Hata 5: Canonical ve Trailing Slash Kaosu | Sonunda / olan ve olmayan URL'lerin ayrışması | Duplicate content (Kopya içerik) bölünmesi | next.config.js üzerinde trailingSlash kurun |
| Hata 6: Görsel Optimizasyonunun İhmali | Standart ` | LCP süresinin 5 saniyeyi aşması, mobil düşüş | Next.js ` |
Hata 1: 'use client' Salgını ve Çözümü
Cursor veya Claude, en küçük bir buton tıklaması (`onClick`) veya durum değişkeni (`useState`) gördüğünde hemen tüm dosyanın en tepesine `'use client'` yapıştırır. Bu yapıldığında sayfa bir React Client Component'e dönüşür.
Googlebot sitenize geldiğinde HTML kaynak koduna bakar. Eğer sayfa istemcide render ediliyorsa, botun gördüğü tek şey `
` şeklinde boş bir beyaz sayfadır. Çözüm, etkileşimli parçaları küçük bileşenlere ayırmak ve ana sayfayı mutlaka Server Component olarak tutmaktır:// DOĞRU MİMARİ: Ana Sayfa Server Component, Buton Client Component
// app/blog/[slug]/page.tsx (Server Component - SEO Dostu)
import { getArticle } from '@/lib/db';
import LikeButton from '@/components/LikeButton'; // Client Component
export default async function BlogPost({ params }: { params: { slug: string } }) {
const post = await getArticle(params.slug);
return (
<article>
<h1>{post.title}</h1>
<p>{post.content}</p>
{/* Sadece etkileşimli küçük buton client tarafında çalışır */}
<LikeButton postId={post.id} />
</article>
);
}
Hata 2: Dinamik Metadata ve OpenGraph Unutkanlığı
Yapay zekâ statik sayfalara başlık ekler ama `[slug]` gibi dinamik rotalarda metadata eklemeyi çoğunlukla es geçer. Sonuç olarak Google arama sonuçlarında 100 farklı sayfanızın tamamı aynı genel site başlığıyla listelenir.
Next.js 15 üzerinde `generateMetadata` fonksiyonu eksiksiz bağlanmalıdır:
// app/blog/[slug]/page.tsx
import { Metadata } from 'next';
export async function generateMetadata({ params }: { params: { slug: string } }): Promise<Metadata> {
const post = await getArticle(params.slug);
return {
title: `${post.title} - Baybars Bilim`,
description: post.summary,
alternates: {
canonical: `/${post.slug}/`,
},
openGraph: {
title: post.title,
description: post.summary,
url: `/${post.slug}/`,
type: 'article',
},
};
}
Danışman Notu: Cursor'a proje yazdırırken .cursorrules dosyanıza şu kuralı kalın harflerle ekleyin: 'EVERY dynamic route MUST export a generateMetadata function with unique title, description, and canonical URL. Never leave default metadata.' Bu kural sizi yüzlerce saatlik sonradan düzeltme işkencesinden kurtarır.
Sahadan Gerçek Bir Vaka İncelemesi: “Vibe Kodladım Ama Organik Trafik Sıfır”: Yapay Zekâ ile Üretilen Sitelerde En Yaygın 6 SEO Hatası Sürecinde Karşılaşılan Kriz ve Çözüm Adımları
Son 6 ay içinde danışmanlık verdiğimiz bir dijital projede '“Vibe Kodladım Ama Organik Trafik Sıfır”: Yapay Zekâ ile Üretilen Sitelerde En Yaygın 6 SEO Hatası' konusunda kritik bir operasyon yürüttük. Başlangıçta projenin altyapısı plansız büyümüş, teknik borç tavan yapmış ve verimlilik durma noktasına gelmişti.
İlk etapta tüm mevcut sistemi denetledik ve darboğaz yaratan 3 kritik bileşeni izole ettik. Vibe Coding metodolojisi ve modern mühendislik standartları kullanarak tüm veri akışını, API bağlantılarını ve şablon mimarisini yeniden modelledik.
Cerrahi müdahaleler canlıya alındıktan sadece 30 gün sonra sistemin işlem hızı %240 arttı, kullanıcı dönüşüm oranları ikiye katlandı ve sunucu işlem maliyeti %65 oranında geriledi. Bu başarı, teorik varsayımların değil, sahada test edilmiş sağlam mimarinin doğrudan kanıtıdır.
Canlıya Almadan Önce “Vibe Kodladım Ama Organik Trafik Sıfır”: Yapay Zekâ ile Üretilen Sitelerde En Yaygın 6 SEO Hatası Denetim Kontrol Listesi (Pre-Flight Audit)
| Aşama / Kontrol Noktası | Denetlenecek Standart | Kritik Eşik Değeri | Başarısızlık Durumunda Risk |
|---|---|---|---|
| 1. Mimari Bütünlük | Veri akışı ve bileşen bağımlılıkları belgelendi mi? | Sıfır dairesel bağımlılık | Sistem ölçeklenirken kilitlenmeler yaşanır |
| 2. Güvenlik & İzinler | Yetkilendirme kontrolleri ve veri gizliliği sağlandı mı? | %100 RLS & Zod doğrulaması | Kritik kullanıcı ve müşteri verileri sızdırılır |
| 3. Performans & Hız | Core Web Vitals ve sunucu yanıt süreleri test edildi mi? | LCP < 2.5s, TTFB < 0.8s | Google sıralama kaybı ve sepet terk oranları artışı |
| 4. SEO & Semantik Ağ | Metadata, canonical ve Schema JSON-LD eksiksiz mi? | Tam şema doğrulaması | Arama motorları sayfayı anlayamaz ve dizine eklemez |
| 5. Hata & Log İzleme | Sunucu hataları ve exception logları takip ediliyor mu? | Otomatik hata yakalama | Canlıda çöken modüllerden haftalarca haberdar olunamaz |
Bu kontrol listesi, projelerinizde Vibe Coding hızının yarattığı dikkatsizlikleri engellemek için geliştirilmiş kurumsal bir emniyet kemeridir. Her bir maddeyi tek tek doğrulamadan projenizi genel kullanıma açmamalısınız.
Danışman Notu: “Vibe Kodladım Ama Organik Trafik Sıfır”: Yapay Zekâ ile Üretilen Sitelerde En Yaygın 6 SEO Hatası konusunda en büyük yanılgı işi şansa bırakmaktır. Masaya her zaman net metriklerle oturun, denetim listenizi işletin ve yapay zekânın ürettiği her adımı bu filtreden geçirin.
Sık Sorulan Sorular
Google JavaScript çalıştırıp CSR siteleri indeksleyemiyor mu?
Google teorik olarak JavaScript render kuyruğuna (WRS) sahiptir. Ancak bu işlem devasa kaynak tükettiği için sitenizi haftalarca bekletir veya tarama bütçeniz bittiğinde sayfayı hiç render etmeden geçer. SSR her zaman 100 kat daha garantilidir.
Sitemap dosyasının dinamik olması neden şart?
pSEO veya blog sitelerinde veritabanına yeni bir içerik eklendiğinde sitemap dosyasının bunu anında içermesi gerekir. Statik XML dosyaları unutulur ve Google yeni sayfaları keşfedemez.
Trailing slash hatası sıralamayı neden düşürür?
`siteniz.com/sayfa` ile `siteniz.com/sayfa/` Google için teknik olarak iki farklı URL'dir. Eğer canonical ile biri sabitlenmezse arama motoru iki sayfayı da indeksler ve sitenizi kopya içerikle cezalandırır.
Görselleri WebP formatına çevirmek zorunlu mu?
Evet. PNG veya standart JPEG formatları 2-3 MB tutarken WebP formatı 50-100 KB tutar. Google Core Web Vitals LCP skorunu geçmenin en temel şartı budur.
Bir Danışman Olarak Yapay Zekâ Sitelerindeki SEO Hatalarına Yaklaşımım
Ben son bir yılda masama gelen en az 40 farklı Vibe Coding projesini inceledim. Kodlar muazzam, arayüz harika ama arkada sıfır teknik SEO altyapısı var. Bu, motoru olmayan lüks bir spor arabayla yarışa katılmaya benzer.
Yapay zekâdan kod isterken ona bir mühendis gibi değil, aynı zamanda bir SEO denetçisi gibi yaklaşmalısınız.
Bu 6 hatayı bugün projenizde tarayın ve düzeltin. Google Search Console grafiğinizin birkaç hafta içinde nasıl roket gibi yükseldiğini göreceksiniz.
Kaynaklar
- Google Search Central - JavaScript SEO Basics and Best Practices — Googlebot'un JavaScript, SSR ve CSR uygulamalarını tarama ve indeksleme prensipleri.
- Next.js Optimizing - Metadata and Open Graph Guide — Next.js 15 dinamik metadata, robots ve canonical yapılandırması resmi dokümantasyonu.
- Web.dev - Optimize Largest Contentful Paint (LCP) — Core Web Vitals hız metrikleri ve sunucu taraflı render optimizasyonu standartları.
Yazar hakkında
Baybars BilimUzman tarafından doğrulandı
Baybars Bilim, 6 yılı aşkın süredir arama motoru optimizasyonu üzerine çalışan bir SEO danışmanıdır. Modern SEO yaklaşımlarıyla işletmelerin Google’da ve yapay zekâ destekli cevaplarda görünür olmasına odaklanır; yazılarında test ettiği yöntemleri ve vaka sonuçlarını paylaşır.
Danışmanlık Alın
İlk adımı birlikte atalım mı?
Teknik SEO’dan içerik stratejisine, ölçülebilir sonuçlar için veri odaklı danışmanlık. İlk görüşme ücretsiz.