feat(seo): GEO paketi — yapılandırılmış metadata, AI bot erişimi, veri tazelik sinyali
- sayfaMetadata(): indekslenebilir sayfalar için tek kaynaklı canonical + eksiksiz openGraph üretimi; sayfalar buna geçirildi - robots.ts: yalnızca /api/ engellenir; noindex'li sayfalar robots engeli yerine meta ile yönetilir, AI botları niyeti belgeleyen açık grupla izinli - next.config: htmlLimitedBots'a AI botları eklendi (JS çalıştırmayan botlara metadata head içinde bloklanarak verilir) - sitemap lastmod + katalogda görünür 'Kaynak/son güncelleme' satırı (VeriKaynagi) KATALOG_VERI_TARIHI tek kaynağından - docs/geo/geo-raporu.md: çalışmanın raporu Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,25 @@
|
||||
import type { NextConfig } from "next";
|
||||
import { HTML_LIMITED_BOT_UA_RE } from "next/dist/shared/lib/router/utils/html-bots";
|
||||
|
||||
// Dockerfile builder katmanı BUILD_KAYNAK_KISITLI=1 verir: imaj build'i prod
|
||||
// VPS'te çalışan uygulamayla aynı makinede koştuğu için bellek/paralellik kısılır.
|
||||
// Lokal build ve dev bu kısıtlardan etkilenmez.
|
||||
const kaynakKisitli = process.env.BUILD_KAYNAK_KISITLI === "1";
|
||||
|
||||
// Arama/AI botları JS çalıştırmaz. Next, metadata'sı istek anına kalan
|
||||
// sayfalarda <title>/canonical/robots etiketlerini <body>'ye akıtır; yalnızca
|
||||
// bu listedeki user-agent'lara <head> içinde, bloklayarak verir. Varsayılan
|
||||
// listede AI botları yok. Şu an herkese açık sayfaların hepsi prerender
|
||||
// edildiği için etkisi yok; ileride dinamik bir sayfa eklenirse sigortadır.
|
||||
// `htmlLimitedBots` varsayılanı EZDİĞİ için Next'in kendi listesi de eklenir.
|
||||
const AI_BOTLARI =
|
||||
"GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|meta-externalagent|meta-externalfetcher|meta-webindexer|Amazonbot|Amzn-SearchBot|Amzn-User|DuckAssistBot|MistralAI-User|CCBot|Bytespider";
|
||||
|
||||
const nextConfig: NextConfig = {
|
||||
htmlLimitedBots: new RegExp(
|
||||
`${HTML_LIMITED_BOT_UA_RE.source}|${AI_BOTLARI}`,
|
||||
"i",
|
||||
),
|
||||
// PPR: statik kabuk anında servis edilir, dinamik parçalar (UserNav vb.)
|
||||
// Suspense sınırlarının içinde akar. Bkz. docs/cacheComponents.md.
|
||||
cacheComponents: true,
|
||||
|
||||
Reference in New Issue
Block a user