Technical SEO Audit Checklist: 100-Point Guide

Complete 100-point technical SEO audit checklist covering crawlability, Core Web Vitals, structured data, international SEO, indexation, and site architecture for 2026.

E
ECOSIRE Research and Development Team
|19 Mart 202610 dk okuma2.3k Kelime|

Teknik SEO Denetim Kontrol Listesi: 100 Noktalı Kılavuz

Teknik bir SEO denetimi, meta etiketler ve anahtar kelime yoğunluğuyla ilgili değildir; sitenizin arama motorlarıyla ne kadar iyi iletişim kurduğunun sistematik bir mühendislik incelemesidir. Taranabilirlik, indeksleme, Önemli Web Verileri, yapılandırılmış veriler, standartlaştırma ve uluslararası sinyaller, tek bir içerik parçası değerlendirilmeden önce sıralamanızı etkiler. 2026'da yapay zeka destekli arama motorları ve AEO'nun (Yanıt Motoru Optimizasyonu) geleneksel SEO kadar önemli hale gelmesiyle birlikte, teknik temel her zamankinden daha fazla önem kazanıyor.

Bu 100 maddelik kontrol listesi kategoriye göre düzenlenmiştir. Sistematik bir şekilde çalışın ve bulguları bir e-tabloda izleyin. Diğer optimizasyon çalışmalarından önce kritik öğeleri (C olarak işaretlenmiş) düzeltin; bunlar, geri kalanların herhangi bir etki yaratmasını engelleyebilir.

Önemli Çıkarımlar

  • Taranabilirlik ilk kapıdır; Googlebot sayfalarınıza ulaşamıyorsa başka hiçbir şeyin önemi yoktur
  • Önemli Web Verileri (LCP, INP, CLS) onaylanmış sıralama sinyalleridir; hedef LCP < 2,5s, INP <200ms, CLS <0,1
  • Kanonik etiketler yinelenen içeriğin seyreltilmesini önler; her sayfanın kendisine işaret eden bir etikete ihtiyacı vardır
  • hreflang çok dilli siteler için zorunludur; Her URL grubu için x-default ayarlanmalıdır
  • Yapılandırılmış veriler (JSON-LD) zengin sonuçlar sağlar ve AI/LLM kaynak ilişkilendirmesi için kritik öneme sahiptir
  • HTTPS, 2026'daki masa bahisleridir; karma içerik, etkilenen sayfaların dizine eklenmesini engeller
  • Mobil öncelikli indeksleme, mobil deneyiminizin Google tarafından değerlendirildiği anlamına gelir
  • Açıklayıcı bağlantı metni içeren dahili bağlantı, PageRank'i dağıtır ve konunun uygunluğunu işaret eder

Bölüm 1: Taranabilirlik ve Dizine Ekleme (C = Kritik)

robots.txt

  • (C) robots.txt'a /robots.txt'den erişilebilir ve 200 değerini döndürür
  • (C) Site Haritası URL'si bildirildi: Sitemap: https://example.com/sitemap.xml
  • Anahtar sayfalar Disallow tarafından yanlışlıkla engellenmiyor
  • Agresif botlar için ayrı tarama hızı yönergeleri
  • AI tarayıcılarına politikaya göre açıkça izin verilir veya izin verilmez (GPTBot, ClaudeBot, OAI-SearchBot)
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /auth/
Sitemap: https://ecosire.com/sitemap.xml

# Allow AI indexers
User-agent: GPTBot
Allow: /
User-agent: ClaudeBot
Allow: /

XML Site Haritası

  • (C) Site Haritası doğru Content-Type: application/xml ile 200 değerini döndürür
  • (C) Tüm standart URL'ler dahil; robots.txt veya noindex tarafından engellenen URL yok
  • <lastmod> tarihleri doğrudur (tümü aynı statik tarih değildir)
  • <priority> ve <changefreq> sayfa türüne göre uygun şekilde ayarlanmış
  • Site haritası, 50.000'den fazla URL'ye sahip siteler için dizin + alt site haritalarına bölünmüştür
  • Site Haritası Google Arama Konsolu ve Bing Web Yöneticisi Araçları'na gönderildi
  • Resim ağırlıklı sayfalar için resim site haritası eklendi
  • Site haritasındaki alternatif dil URL'leri (hreflang)
// Next.js sitemap.ts — programmatic with correct lastmod
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const posts = await getAllBlogPosts();
  return [
    {
      url: 'https://ecosire.com',
      lastModified: new Date(),
      changeFrequency: 'daily',
      priority: 1.0,
    },
    ...posts.map((post) => ({
      url: `https://ecosire.com/blog/${post.slug}`,
      lastModified: new Date(post.updatedAt),
      changeFrequency: 'weekly' as const,
      priority: 0.8,
    })),
  ];
}

Tarama Bütçesi

  • Sayfalandırma sayfalarında rel="next" / rel="prev" (veya SSR ile sonsuz kaydırma) kullanılır
  • Yönlü gezinme URL'leri ya standartlaştırılmıştır ya da noindex'lenmiştir
  • Dizine eklenen URL'lerden hariç tutulan oturum kimlikleri ve izleme parametreleri
  • Bir atlama noktasıyla sınırlı olan yönlendirme zincirleri (A'dan B'ye, A'dan B'ye C'ye değil)
  • Soft 404 yok — 404 sayfa HTTP 404'ü döndürür, 200'ü değil

Bölüm 2: HTTPS ve Güvenlik

  • (C) Geçerli sertifikayla HTTPS üzerinden sunulan tüm sayfalar
  • (C) HTTP, HTTPS'ye yönlendirir (301, 302 değil)
  • (C) Karışık içerik uyarısı yok (HTTPS sayfalarındaki HTTP kaynakları)
  • HSTS max-age=31536000; includeSubDomains; preload ile etkinleştirildi
  • SSL sertifikasının 90+ günü kaldı
  • Sertifika www ve www olmayan çeşitleri kapsar
  • Sertifika zinciri tamamlandı (ara CA eksik değil)
# Nginx HTTPS configuration
server {
    listen 443 ssl http2;
    server_name ecosire.com;

    ssl_certificate     /etc/letsencrypt/live/ecosire.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ecosire.com/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}

Bölüm 3: Önemli Web Verileri

En Büyük İçerikli Boya (LCP) — Hedef: 2,5 saniyenin altında

  • (C) CrUX/PageSpeed Insights'ta tanımlanan LCP öğesi
  • <link rel="preload" as="image"> ile önceden yüklenmiş kahraman resmi/videosu
  • LCP resmi doğru fetchpriority="high" özelliğiyle sunuldu
  • Mümkün olduğunda PNG/JPEG değil, WebP veya AVIF formatındaki resimler
  • Uygun boyuttaki resimler (800 pikselde 4000 piksellik resim görüntülenmez)
  • Edge önbelleğe almayla statik varlıklar sunan CDN
  • Sunucu TTFB'si 800 ms'nin altında (LCP penceresini azaltır)
// Next.js: priority prop preloads the hero image
<Image
  src="/hero.webp"
  alt="Hero image"
  width={1200}
  height={630}
  priority
  sizes="100vw"
/>

Sonraki Paint ile Etkileşim (INP) — Hedef: 200 ms'nin altında

  • Uzun görevler (50 ms'nin üzerinde) tanımlandı ve bölündü
  • Ağır JavaScript ertelendi veya yavaş yüklendi
  • Olay işleyicileri etkilidir ve düzenin yeniden hesaplanmasına neden olmaz
  • async veya defer ile yüklenen üçüncü taraf komut dosyaları

Kümülatif Düzen Kayması (CLS) — Hedef: 0,1'in altında

  • (C) Tüm görseller ve videolar açık width ve height niteliklerine sahiptir
  • Web yazı tipleri, boyut ayarlama geri dönüşüyle font-display: optional veya swap kullanır
  • Reklam alanlarının ayrılmış boyutları var
  • Dinamik olarak ekranın üst kısmına eklenen içerikten kaçınıldı
  • Animasyonlar yalnızca transform ve opacity kullanır (top, left, width değil)

Bölüm 4: URL Yapısı ve Kanonikleştirme

  • (C) Her sayfada kendine referans veren bir kanonik etiket bulunur
  • (C) Kanonik etiket URL'si, sunulan gerçek URL'yle eşleşir (sondaki eğik çizgi tutarlıdır)
  • www ve www olmayanlar standart sürüme yönlendirme yapar
  • URL'ler küçük harftir, kelime ayırıcı olarak kısa çizgi kullanılır, alt çizgi yoktur
  • Önemli sayfalar için kökten en fazla 4 düzeyde URL derinliği
  • Kurallılaştırma olmadan yinelenen içerik oluşturan URL parametresi yok
  • Sayfalandırılmış seriler ilk sayfaya göre standart hale getirilir (veya her sayfa kendi kendine standart hale getirilir)
// Next.js generateMetadata with canonical
export async function generateMetadata({ params }: Props): Promise<Metadata> {
  const { locale, slug } = await params;
  const base = locale === 'en' ? '' : `/${locale}`;
  const canonicalUrl = `https://ecosire.com${base}/blog/${slug}`;

  return {
    alternates: {
      canonical: canonicalUrl,
      languages: buildHreflangUrls(slug), // all 11 locales
    },
  };
}

Bölüm 5: Meta Veriler ve Sayfa İçi SEO

  • (C) Her sayfada benzersiz bir <title> etiketi bulunur (50-60 karakter)
  • (C) Her sayfada benzersiz bir <meta name="description"> bulunur (150-160 karakter)
  • Başlıklar şu modeli takip eder: Primary Keyword | Brand Name
  • Site genelinde yinelenen başlık etiketi yok
  • Grafik etiketlerini açın: og:title, og:description, og:image, og:url, og:type
  • Twitter/X kart etiketleri: twitter:card, twitter:title, twitter:image
  • OG görselleri 1200x630 pikseldir, 8 MB'ın altındadır ve CDN'den sunulur
  • <meta name="robots"> yalnızca kısıtlamak için kullanılır (yedek değil index,follow)
  • <html lang="en"> tüm sayfalar için doğru şekilde ayarlandı

Bölüm 6: Yapılandırılmış Veriler (JSON-LD)

  • (C) Microdata/RDFa'ya göre JSON-LD tercih edilir (bakımı daha kolay, ayrıştırıcı dostu)
  • Ana sayfada sameAs sosyal profil URL'lerini içeren organizasyon şeması
  • Site bağlantıları arama kutusu için SearchAction içeren Web Sitesi şeması
  • Ana sayfanın altındaki tüm sayfalarda BreadcrumbList şeması
  • datePublished, dateModified, author içeren blog yazılarındaki makale şeması
  • SSS bölümlerinin bulunduğu sayfalardaki SSS Sayfası şeması
  • offers, aggregateRating içeren ürün sayfalarındaki ürün şeması
  • areaServed, serviceType içeren hizmet sayfalarındaki hizmet şeması
  • Çok dilli AI ilişkilendirmesi için tüm şemalarda [ ] inLanguage özelliği
  • Google'ın Zengin Sonuçlar Testinde doğrulanan yapılandırılmış veriler
// JSON-LD with XSS protection
// The .replace() encodes the less-than sign to prevent </script> breakout,
// making this safe for use in a script tag (no untrusted HTML rendered)
export function JsonLd({ data }: { data: Record<string, unknown> }) {
  const safeJson = JSON.stringify(data).replace(/</g, '\\u003c');

  return (
    <script
      type="application/ld+json"
      // Safe: safeJson is a sanitized JSON string, not HTML
      dangerouslySetInnerHTML={{ __html: safeJson }}
    />
  );
}

// Usage
const schema = {
  '@context': 'https://schema.org',
  '@type': 'FAQPage',
  inLanguage: locale,
  mainEntity: faqs.map((faq) => ({
    '@type': 'Question',
    name: faq.question,
    acceptedAnswer: { '@type': 'Answer', text: faq.answer },
  })),
};

<JsonLd data={schema} />

Bölüm 7: Uluslararası SEO

  • Dil çeşitlerine sahip tüm sayfalarda [ ] (C) hreflang etiketleri
  • (C) x-default hreflang her URL grubu için ayarlandı
  • hreflang nitelikleri çift yönlüdür (eğer /en/, /fr/'ye bağlanırsa, /fr/, /en/'ye geri bağlanmalıdır)
  • Yerel URL'ler gerektiğinde ISO 639-1 dil kodlarını + ISO 3166-1 bölge kodlarını kullanır
  • <html lang="xx"> o sayfanın hreflang yerel ayarıyla eşleşiyor
  • RTL dilleri (Arapça, İbranice, Urduca) <html> üzerinde dir="rtl" kullanır
  • İçerik yalnızca incelenmeden otomatik olarak çevrilmekle kalmaz, çevrilir
  • Google Search Console'da yerel ayar alt dizini başına coğrafi hedefleme ayarlandı
// Next.js hreflang via generateMetadata
const locales = ['en', 'zh', 'es', 'ar', 'pt', 'fr', 'de', 'ja', 'tr', 'hi', 'ur'];

// In generateMetadata:
// alternates.languages keys must be BCP 47 language tags
alternates: {
  languages: Object.fromEntries([
    ['x-default', `https://ecosire.com/blog/${slug}`],
    ['en',        `https://ecosire.com/blog/${slug}`],
    ['zh',        `https://ecosire.com/zh/blog/${slug}`],
    ['ar',        `https://ecosire.com/ar/blog/${slug}`],
    // ... all 11 locales
  ]),
},

Bölüm 8: Performans ve Altyapı

  • CDN'den sunulan statik varlıklar (CloudFront, Cloudflare, Fastly)
  • Tarayıcı önbelleğe alma: hashing uygulanmış varlıklar için Cache-Control: public, max-age=31536000, immutable
  • Gzip veya Brotli sıkıştırması sunucuda etkin
  • HTTP/2 veya HTTP/3 etkin
  • Çevik yük devretme için DNS TTL 3600 veya daha az
  • HTML için sunucu yanıt süresi 200 ms'nin altında (TTFB'yi ölçün)
  • 250 KB başlangıç yükü altındaki JavaScript paketi (gzip'li)
  • Kullanılmayan JavaScript ortadan kaldırıldı (ağaç sallama, kod bölme)
  • CSS, üretimde kullanılmayan kurallardan arındırıldı
# Nginx compression + caching headers
gzip on;
gzip_types text/html text/css application/javascript application/json image/svg+xml;
gzip_min_length 1024;

location /_next/static/ {
    expires max;
    add_header Cache-Control "public, max-age=31536000, immutable";
}

Bölüm 9: Mobil ve Kullanıcı Deneyimi

  • (C) Görünüm meta etiketi: <meta name="viewport" content="width=device-width, initial-scale=1">
  • Tüm etkileşimli öğelerin en az 48x48 piksel boyutunda dokunma hedefleri vardır
  • Mobilde yatay kaydırma yok (maks. genişlik: 100vw)
  • Gövde metni için yazı tipi boyutu en az 16 pikseldir (iOS'un giriş odağında otomatik yakınlaştırmayı önler)
  • Mobil navigasyon gerçek cihazlarda test edildi (iOS Safari, Chrome Android)
  • Pop-up'lar ve geçiş reklamları mobil cihazdaki ana içeriği kapsamıyor
  • Mobil ziyaretçiler için telefon numaralarını aramak için dokun

Bölüm 10: AEO (Yanıt Motoru Optimizasyonu)

Yapay zeka arama motorları ve sesli asistanlar için önemi giderek artan:

  • data-speakable özniteliğine sarılmış anahtar yanıtlar
  • <details>/<summary> daraltılabilir SSS içeriği için kullanılır (taranabilir, anlamsal)
  • /llms.txt ve /.well-known/llms.txt AI tarayıcıları için yayınlandı
  • Önemli bölümlerin üst kısmında kısa, gerçek yanıt paragrafları (özellikli snippet optimizasyonu)
  • Yapılandırılmış verilerde varlık ilişkileri açıktır (Organizasyondan Hizmetlere ve Ürünlere)
  • Tüm sayfalarda, sosyal profillerde ve dizinlerde tutarlı marka adı
  • Yeni içerik yayınlandıktan sonra anında URL gönderimi için kullanılan IndexNow API'si

Sıkça Sorulan Sorular

Teknik SEO denetimini ne sıklıkla çalıştırmalıyım?

Üç ayda bir tam denetim ve ayda bir hafif tarama (Screaming Frog veya Sitebulb) gerçekleştirin. Herhangi bir önemli site değişikliği (yeni teknoloji yığını, geçiş, uluslararası içerik ekleme, büyük yeniden tasarım) derhal denetim yapılmasını gerektirir. Dizine eklenen sayfalardaki ani düşüşler veya tarama hataları için Google Search Console uyarıları aracılığıyla sürekli izleme ayarlayın.

Teknik SEO denetimi için hangi araçlara ihtiyacım var?

Minimum olarak: Google Arama Konsolu (ücretsiz, standart), Screaming Frog veya Sitebulb (tarama analizi), PageSpeed ​​Insights (Temel Web Verileri), Google Zengin Sonuçlar Testi (yapılandırılmış veriler), WebAIM Kontrast Denetleyicisi (erişilebilirlik/UX) ve Ahrefs veya Semrush (geri bağlantılar, anahtar kelime sıralaması). JavaScript ağırlıklı sitelerde, oluşturulmuş tarama için Rendertron veya Botify'ı ekleyin.

Denetimlerde karşılaşılan en yaygın kritik SEO sorunu nedir?

Kanonik etiket yanlış yapılandırmaları en yaygın kritik bulgudur; ya tamamen eksiktir, yanlış URL'ye işaret etmektedir (çoğunlukla üretimde kalan bir geliştirme veya hazırlama alanıdır) ya da sondaki eğik çizgi kullanımıyla tutarsızdır. İkinci en yaygın olanı, CMS eklentilerinden gelen yanlışlıkla noindex direktifleri veya üretim yapılarında bırakılan hazırlama yapılandırmalarıdır.

Next.js Uygulama Yönlendiricisi teknik SEO'ya yardımcı olur mu?

Evet, önemli ölçüde. Sunucu tarafı oluşturma, tüm içeriğin ilk HTML yanıtında olduğu anlamına gelir (tarama için JavaScript gerekmez). generateMetadata() sayfa başına meta veriler genel statik meta veri hatalarını önler. sitemap.ts ve robots.ts kuralları bu dosyaların programlı olarak bakımını kolaylaştırır. Yerleşik Görüntü bileşeni, CLS'nin önlenmesi için genişlik ve yüksekliği zorlar ve otomatik olarak WebP/AVIF değişkenleri oluşturur.

Sayfalara ayrılmış içerik için SEO'yu nasıl halledebilirim?

Sayfalandırılmış blog arşivleri veya ürün listeleri için, her sayfada kendine referans veren bir kanonik (sayfa 1'e göre değil), sayfa numarasını belirten açıklayıcı bir başlık bulunmalı ve içerik önemliyse indekslemeye izin verilmelidir. İnce sayfalara ayrılmış sayfalar için, 3. sayfanın ötesindeki sayfalarda noindex'i düşünün. Google, rel="next"/rel="prev"'yi 2019'da kullanımdan kaldırdı ancak diğer arama motorları tarafından hâlâ kullanılıyor.


Sonraki Adımlar

Teknik SEO denetimi, tüm içeriğinizin ve pazarlama çalışmalarınızın yatırım getirisini artıran tek seferlik bir yatırımdır. Bu kontrol listesindeki 100 puan, arama motorlarının içeriğinizi sıralamadan önce neleri değerlendirdiğinin tüm kapsamını kapsar.

ECOSIRE, 11 yerel ayar için programatik site haritaları ve hreflang'dan yapılandırılmış verilere, Core Web Vitals optimizasyonuna ve IndexNow API entegrasyonuna kadar her Next.js projesinin standart bir parçası olarak en iyi teknik SEO uygulamalarını uygular. İlk günden itibaren arama görünürlüğünü nasıl oluşturduğumuzu öğrenmek için web geliştirme hizmetlerimizi keşfedin.

E

Yazan

ECOSIRE Research and Development Team

ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.

WhatsApp'ta Sohbet Et