Sitemap lastmod Nasıl Doğru Kullanılır?
lastmod, URL'nin içerik veya ana kaynak verisi anlamlı biçimde en son ne zaman değiştiğini belirtir. Deployment zamanı değildir. Her deploy'da bütün URL'lere new Date() yazmak gerçek değişiklik bilgisini yok eder; sitemap güncelleme sinyalidir, yeniden crawl veya indeksleme garantisi değildir.
Gerçek XML çıktısı nasıl görünür?
Anlamlı bir makale revizyonundan sonra sitemap'te beklenen şekil şöyledir:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://intent.com.tr/blog/canonical</loc>
<lastmod>2026-08-28</lastmod>
</url>
</urlset>
2026-08-28, içerik kaynağında veya CMS kaydında doğrulanabilir bir değişiklik tarihini temsil etmelidir. Build 1 Eylül'de çalıştı diye tarihi 1 Eylül'e taşımayın.
Hangi değişiklik lastmod'u günceller?
| Değişiklik | Güncellenir mi? | Neden |
|---|---|---|
| Yeni teknik bölüm veya güncel kod örneği | Evet | Ana belgenin anlamlı kısmı değişir |
| Factual correction / güncel teknik davranış | Evet | Okuyucunun kararını etkileyen bilgi değişir |
| Ana içeriğin kapsamlı yeniden düzenlenmesi | Evet | Kaynak belge yeniden yayınlanmış olur |
| Deployment | Hayır | İçerik değişikliği değildir |
| CSS veya font değişikliği | Genellikle hayır | URL'nin bilgi içeriği aynı kalır |
| Footer veya menü değişikliği | Genellikle hayır | Makalenin ana kaynağı değişmez |
| Küçük yazım hatası | Genellikle hayır | Tüm belgeyi güncellenmiş göstermek gerekmez |
Google sitemap yönergeleri, lastmod değerinin sayfanın son anlamlı güncellemesini yansıtmasını önerir. Bu alanı her deployment'ta döndürmek yerine içerik kaynağındaki değişikliği temsil edecek şekilde yönetin.
Kötü uygulama
// Her build'de bütün URL'ler taze görünür.
return posts.map((post) => ({
url: `https://intent.com.tr/blog/${post.slug}`,
lastModified: new Date(),
}));
Sorun JavaScript sözdizimi değil, veri kaynağıdır: new Date() içerikte değişiklik olduğunu kanıtlamaz. Google'ın crawl budget rehberi sitemap veya geçici sinyallerin sayfaları otomatik olarak indeksletmediğini vurgular.
Intent'in gerçek sitemap modeli
Intent'te sitemap src/app/sitemap.ts dosyasındaki Next.js Metadata Sitemap API ile üretilir. Blog kaynaklarında gerçek bir updatedAt alanı bulunmadığı için mevcut doğru fallback yayın frontmatter'ındaki post.date değeridir:
const posts = getPostSlugs();
const blogUrls = posts.map((slug) => {
const post = getPostBySlug(slug.replace(/\.md$/, ""));
return {
url: `https://intent.com.tr/blog/${post.slug}`,
lastModified: new Date(post.date),
changeFrequency: "monthly" as const,
priority: 0.8,
};
});
Bu repository'de olmayan bir updatedAt alanını uydurup deployment zamanını kullanmayın. İleride doğrulanabilir updatedAt eklenirse öncelik updatedAt, sonra publishedAt/date, en son hiç tarih göndermemek olmalıdır. Tarih source-of-truth'tan gelmiyorsa sahte güncellik göndermektense lastmod alanını çıkarın. Next.js sitemap metadata dokümanı Date veya string değerlerini destekler.
Sitemap'te ne olmalı?
Sitemap yalnızca indekslenmesini istediğiniz canonical URL'leri içermelidir. Redirect kaynakları, 404/410 URL'leri, noindex sayfalar ve parametreli alternatifler dahil edilmemelidir. Intent'in mevcut sitemap'i blog yazılarını, gerçek pagination sayfalarını, hub içeriklerini ve araçları route kaynaklarından üretir; her eklenen URL için 200, canonical ve iç link durumu ayrıca kontrol edilmelidir.
Canlı çıktıyı doğrulama
curl -fsSL https://intent.com.tr/sitemap.xml -o /tmp/intent-sitemap.xml
rg -n "<loc>|<lastmod>" /tmp/intent-sitemap.xml | head -n 30
curl -sS -o /dev/null -D - https://intent.com.tr/blog/canonical
Her loc için status 200, redirect yok, self-canonical ve source-of-truth ile açıklanabilir lastmod bekleyin. XML'i tarayıcıdan açmak biçimi görmeye yarar; Search Console Sitemap raporu dosyanın alınıp işlenmesini izlemek içindir. Bu kontroller lastmod'un kesin crawl veya index garantisi verdiği anlamına gelmez.
lastmod'u doğru kullanmanın ölçütü “tüm tarihler bugün mü?” değil, her tarihin gerçek bir içerik değişikliğine bağlanabilmesidir. Sitemap, içerik yayın kaydının özetidir; deployment günlüğü değildir.