Oğuzhan KARAGÜZEL

OĞUZHAN KARAGÜZEL

Yazılım geliştirici

SEO Optimizasyonu Nedir? Sayfa İçi SEO Rehberi ve İpuçları

Yazar: Oğuzhan KARAGÜZEL ·

SEO, bir web sitesinin arama motorlarında daha görünür olmasını sağlayan teknik ve stratejik çalışmaların bütünüdür. Bu yazı, geliştiriciler için hazırladığım SEO serisinin ilk bölümü: SEO'nun temel bileşenlerini kısaca özetliyor, ardından doğrudan geliştiricinin elinde olan sayfa içi SEO konularını (title, meta description, başlıklar, içerik yapısı ve URL) örnek kodlarla anlatıyor.

Serinin devamı: Teknik SEO: robots.txt, sitemap.xml ve Canonical Rehberi.

SEO Nedir ve Neden Önemlidir?

SEO (Search Engine Optimization – Arama Motoru Optimizasyonu), bir web sitesinin organik (ücretsiz) arama sonuçlarında daha üst sıralarda yer almasını hedefleyen çalışmalardır. Sıralama yükseldikçe görünürlük, görünürlük arttıkça ziyaretçi sayısı artar.

SEO'nun beş temel bileşeni vardır:

  1. Anahtar kelime araştırması: Kullanıcıların arama motorlarında hangi terimleri kullandığını belirlemek.
  2. Sayfa içi SEO (On-Page): Sayfa içeriğinin ve HTML kodunun optimize edilmesi.
  3. Sayfa dışı SEO (Off-Page): Diğer sitelerden gelen bağlantılar (backlink), marka bilinirliği ve itibar gibi dış faktörler. Sosyal medya paylaşımları doğrudan bir sıralama faktörü değildir; ancak içeriğin görünürlüğünü ve bağlantı kazanma şansını artırır.
  4. Teknik SEO: Site yapısının ve kodlamanın arama motoru tarayıcılarına uygun hale getirilmesi (hız, mobil uyumluluk, site haritası, yapılandırılmış veri).
  5. İçerik üretimi: Kullanıcıya değer katan, ilgi çekici ve arama niyetine uygun içerikler oluşturmak.

SEO'da Geliştiricinin Rolü

Bu bileşenlerin çoğu içerik ve pazarlama tarafının işidir. Geliştiricinin payı iki başlıkta toplanır: sayfa içi SEO ve teknik SEO. Burada asıl iş, içeriği giren kişinin yapabileceği hataları doğrulamalarla engellemek ve ondan kaynaklanmayan hataları (örneğin bozuk HTML yapısı) baştan kodla önlemektir. Kararı içerik editörüne bıraktığınız alanlarda ise yönetim panelinde onu yönlendiren uyarılar ve açıklayıcı yardım metinleri göstermek en iyi çözümdür.

Anahtar kelime araştırması için Google Keyword Planner, Ahrefs ve SEMrush gibi araçlar kullanılır; hedef kitleyi, rakipleri ve uzun kuyruk (long-tail) ifadeleri analiz etmek genellikle içerik tarafının işidir. Geliştirici olarak sizin göreviniz, bu çalışmanın sonuçlarının kaydedileceği alanları sağlamaktır: odak anahtar kelime, title, meta description ve benzeri.

Title Etiketi

Sayfanın <title> etiketi, arama sonuçlarında tıklanabilir başlık olarak görünür. Dikkat edilecekler:

  • Uzunluk: 50–60 karakter arasında olmalıdır. (Google karakter değil, yaklaşık 600 piksel genişliğini baz alır; bu aralık güvenli bir kuraldır.)
  • Benzersizlik: Her sayfanın title'ı farklı olmalıdır. CMS kaydetme sırasında aynı title'ın başka bir sayfada kullanılıp kullanılmadığını doğrulamalı, mümkünse veri tabanında da benzersizliği kontrol etmelidir.
  • Anahtar kelime: Sayfanın ana anahtar kelimesini içermeli ve içeriği doğru yansıtmalıdır. Kullanıcı bu konuda CMS üzerinden uyarılmalıdır.

Meta Description Etiketi

Meta description, arama sonucunda başlığın altında gösterilen özet metindir. Doğrudan bir sıralama faktörü değildir; ancak tıklama oranını (CTR) etkilediği için önemlidir.

  • 150–160 karakter uzunluğunda olmalıdır.
  • Sayfanın içeriğini net özetleyen ve kullanıcıyı tıklamaya ikna eden doğal bir cümle olmalıdır; anahtar kelime doldurmaktan kaçınılmalıdır.
  • Mümkün olduğunca benzersiz olmalıdır, ancak bu bir zorunluluk değildir. Açıklama girilmeyen sayfalar için sitenin her yerinde kullanılabilecek standart bir varsayılan açıklama tanımlanmalıdır.

Başlık Etiketleri (H1, H2, H3)

Başlık etiketleri hem kullanıcıya hem de arama motoruna sayfanın iskeletini gösterir.

  • H1: Her sayfada yalnızca bir tane bulunmalı, benzersiz olmalı ve ana anahtar kelimeyi içermelidir. Sayfanın konusunu tek bakışta anlatacak kadar kısa tutun ve sayfanın üst kısmına yerleştirin; ziyaretçi sayfaya girer girmez neyle ilgili olduğunu anlamalıdır.
  • H2, H3…: Hiyerarşiye uyulmalıdır. Örneğin bir haber listesinde sayfa başlığı H1, haberlerin başlıkları H2, bir haberin içindeki alt başlıklar H3 olur. Anahtar kelimeye ve uzunluğa yine dikkat edilir, ancak H1 kadar katı davranılması gerekmez.
  • Anlam hiyerarşisi: Başlıklar yalnızca yazı boyutunu büyütmek için değil, içeriğin yapısını göstermek için kullanılmalıdır. H2'den doğrudan H4'e atlamamak en iyi uygulamadır.

Örnek bir başlık hiyerarşisi:

HTML
<!DOCTYPE html>
<html lang="tr">
<head>
  <meta charset="utf-8">
  <title>SEO Optimizasyonu: En İyi Uygulamalar ve İpuçları</title>
  <meta name="description" content="SEO nedir, başlık etiketleri nasıl kullanılır? Sayfa içi SEO için pratik ipuçları.">
</head>
<body>
  <h1>SEO Optimizasyonu: En İyi Uygulamalar ve İpuçları</h1>

  <h2>SEO Nedir?</h2>
  <p>SEO, Arama Motoru Optimizasyonu anlamına gelir ve…</p>

  <h2>Başlık Etiketleri Nasıl Kullanılmalı?</h2>
  <h3>Başlık Etiketlerinin Önemi</h3>
  <p>Başlık etiketleri, sayfanın yapısını düzenler ve…</p>
  <h3>Başlık Etiketlerinin Kullanımı</h3>
  <p>H1 sayfanın ana başlığıdır, H2 ana bölümleri belirtir…</p>

  <h2>SEO Teknikleri</h2>
  <h3>On-Page SEO</h3>
  <p>Meta etiketleri, arama motorlarına sayfanın içeriği hakkında bilgi verir…</p>
</body>
</html>

İçerik ve Anlamlı HTML

İçeriğin büyük bölümü site yöneticisinin sorumluluğundadır; yine de yazılımcı olarak kullanıcı deneyimini ve HTML kalitesini iyileştirebiliriz:

  • Etkileşime geçilebilir alanları (buton, bağlantı, form) kullanıcının en kolay şekilde kullanabileceği biçimde tasarlamak. Örneğin uzun bir makalenin sonuna "yukarı çık" butonu eklemek.
  • Video ve görsellerin boyutlarını (width / height) doğru vermek; böylece sayfa yüklenirken içerik kaymaz. Sayfanın altında kalan görselleri ve videoları loading="lazy" ile gerektiğinde yüklemek, sayfa açılır açılmaz görünen ana görselde ise lazy loading kullanmamak.
  • Kırık bir görsel veya video bağlantısı olduğunda varsayılan bir görsel göstermek ya da öğeyi hiç göstermemek.
  • Mümkün olan her yerde <div> yerine anlam taşıyan etiketleri kullanmak: <main>, <article>, <section>, <nav>, <header>, <footer>.
HTML
<main>
  <article>
    <header>
      <h1>Makale Başlığı</h1>
    </header>
    <section>
      <h2>Bölüm Başlığı</h2>
      <p>Bölüm içeriği…</p>
    </section>
  </article>
</main>

URL Yapısı ve Slug

URI (Uniform Resource Identifier – Tekdüzen Kaynak Tanımlayıcı), internetteki bir kaynağı tanımlamak için kullanılan genel terimdir. URL (Uniform Resource Locator) kaynağın nerede olduğunu ve nasıl erişileceğini gösterir; URN (Uniform Resource Name) ise kaynağı yerinden bağımsız bir isimle tanımlar (örneğin urn:isbn:0451450523). Günlük kullanımda çoğunlukla URL'den söz ederiz. Bir URL genellikle şu parçalardan oluşur:

  1. Protokol (scheme): Hangi protokolün kullanılacağını belirtir. Örnek: https://
  2. Alan adı (domain): Kaynağın bulunduğu sunucunun adıdır. Örnek: www.ornek.com. "www" kullanmak zorunlu değildir; önemli olan birini seçmek ve diğer adresi ona 301 ile yönlendirmektir, böylece site iki ayrı adreste dizine girmez. Alt alan adı (subdomain) ile farklı bir projeyi ayrı bir adreste çalıştırabilirsiniz; örneğin app.ornek.com.
  3. Yol (path): Sunucudaki belirli bir kaynağı gösterir. Örnek: /makaleler/seo-nedir. ASP.NET'te routing ile bu yapıyı istediğimiz gibi kurabiliriz; dikkat edilmesi gereken kısım slug'dır.
  4. Port (opsiyonel): HTTP ve HTTPS için varsayılan portlar 80 ve 443 olduğundan genellikle yazılmaz. Örnek: :8080
  5. Sorgu parametreleri (opsiyonel): Kaynak hakkında ek bilgi verir ve "?" ile başlar. Örnek: ?id=123&name=ornek
  6. Parça (fragment) (opsiyonel): Sayfanın belirli bir bölümüne işaret eder ve "#" ile başlar. Örnek: #section2

Slug Nedir?

Slug, URL'nin okunabilir ve kullanıcı dostu parçasıdır. Genellikle sayfanın başlığını veya içeriğini yansıtan kısa bir metin dizisidir ve URL'nin son kısmında yer alır. Hem arama motorlarının hem de kullanıcıların sayfanın içeriğini anlamasına yardımcı olur. İyi bir slug:

  • Okunabilir olmalı; sayfanın içeriği hakkında net bir bilgi vermeli.
  • Kısa ve öz olmalı; gereksiz kelimelerden kaçınılmalı.
  • Anahtar kelime içermeli.
  • Kelimeleri tire (-) ile ayırmalı; boşluk veya alt çizgi kullanılmamalı.

Örnekler: "SEO Optimizasyonu İçin En İyi Uygulamalar" başlıklı bir blog yazısı için slug seo-optimizasyonu-icin-en-iyi-uygulamalar, tam adres ise https://www.ornek.com/blog/seo-optimizasyonu-icin-en-iyi-uygulamalar olur. "Mavi Kot Pantolon" adlı bir ürün için slug mavi-kot-pantolon, adres https://www.ornek.com/urunler/mavi-kot-pantolon olur.

Geliştirici Olarak Neler Yapmalı?

  1. CMS'te kullanıcının amaca yönelik bir slug girebilmesine izin verilmelidir.
  2. Slug'lar Türkçe karakter (ç, ğ, ı, ö, ş, ü) ve boşluk içermemelidir. Kullanıcı böyle bir slug girerse uyarılmalı ya da Türkçe karakterler İngilizce karşılıklarıyla, boşluklar tire ile değiştirilerek kaydedilmelidir.
  3. Mümkün olduğunca kısa tutulmalı, gerekirse kısaltılmalıdır.
  4. Benzersiz olmalıdır; aynı slug aynı üst sayfa altında iki kez girilememelidir (veri tabanında unique index ile garanti altına alınması önerilir).

Türkçe karakterleri dönüştüren basit bir C# yardımcı sınıfı:

C#
using System.Text;
using System.Text.RegularExpressions;

public static class SlugHelper
{
    private static readonly Dictionary<char, char> TrMap = new()
    {
        ['ç'] = 'c', ['ğ'] = 'g', ['ı'] = 'i', ['ö'] = 'o', ['ş'] = 's', ['ü'] = 'u',
        ['Ç'] = 'c', ['Ğ'] = 'g', ['İ'] = 'i', ['I'] = 'i', ['Ö'] = 'o', ['Ş'] = 's', ['Ü'] = 'u'
    };

    public static string ToSlug(string text)
    {
        var sb = new StringBuilder();
        foreach (var ch in text.Trim())
            sb.Append(TrMap.TryGetValue(ch, out var mapped) ? mapped : char.ToLowerInvariant(ch));

        var slug = Regex.Replace(sb.ToString(), @"[^a-z0-9\s-]", "");
        return Regex.Replace(slug, @"[\s-]+", "-").Trim('-');
    }
}
// ToSlug("SEO Optimizasyonu İçin En İyi Uygulamalar")
// => "seo-optimizasyonu-icin-en-iyi-uygulamalar"

İdeal bir URL mümkün olduğunca kısa, ziyaretçi açısından anlaşılır, anahtar kelime içeren, benzersiz ve yapıda (hiyerarşide) olmalıdır.

Sayfa İçi SEO Kontrol Listesi

  • Title 50–60 karakter, benzersiz ve anahtar kelimeyi içeriyor mu?
  • Meta description 150–160 karakter, doğal ve tıklamaya teşvik edici mi? Boş kalan sayfalar için varsayılan açıklama var mı?
  • Her sayfada tek bir H1 var mı; H2–H3 hiyerarşisi bozulmamış mı?
  • Mümkün olan yerlerde main, article, section, nav gibi anlamlı etiketler kullanılıyor mu?
  • Slug kısa, Türkçe karaktersiz, tire ile ayrılmış ve benzersiz mi?
  • Görsellerde boyut ve alt metni tanımlı mı?