+ * Danışman fiyat aralığı: Armut ortalama fiyatı, Eylül 2026. +
diff --git a/src/app/robots.ts b/src/app/robots.ts index aefc555..c1df152 100644 --- a/src/app/robots.ts +++ b/src/app/robots.ts @@ -25,7 +25,7 @@ const AI_BOTLARI = [ "Amzn-SearchBot", // Model eğitimi: aramasız yanıtlarda markanın bilinmesi buradan geçer "GPTBot", - "ClaudeBot", + // ClaudeBot aşağıda kendi grubunda (Crawl-delay için); buraya yazma. "Google-Extended", "Applebot-Extended", "meta-externalagent", @@ -38,6 +38,9 @@ export default function robots(): MetadataRoute.Robots { rules: [ { userAgent: "*", allow: "/", disallow: DISALLOW }, { userAgent: AI_BOTLARI, allow: "/", disallow: DISALLOW }, + // Anthropic Crawl-delay'i resmî olarak destekliyor (support.claude.com); + // eğitim taraması 1011 URL'lik katalogda saniyede 1 istekle yeter. + { userAgent: "ClaudeBot", allow: "/", disallow: DISALLOW, crawlDelay: 1 }, ], sitemap: `${SITE_URL}/sitemap.xml`, }; diff --git a/src/features/katalog/components/bolum-icerik.tsx b/src/features/katalog/components/bolum-icerik.tsx index 4da8337..3b15470 100644 --- a/src/features/katalog/components/bolum-icerik.tsx +++ b/src/features/katalog/components/bolum-icerik.tsx @@ -16,6 +16,7 @@ import { getBolumBySlug, uniSlugFromAd, } from "../katalog-queries"; +import type { Program } from "@/types/yokatlas"; import { JsonLd, breadcrumbJsonLd, @@ -156,6 +157,63 @@ function siraAraligiMetni({ return verisiz > 0 ? `${aralik} ile taban verisi olmayanlar` : aralik; } +/** + * İlk sayfanın açılış cümleleri: kaç ilde kaç program, devlet/vakıf dağılımı, + * toplam kontenjan, taban sıralaması aralığı ve bir önceki yıla göre yön. + * Yön için yalnızca iki yılda da sırası olan programlar sayılır; sıra sayısı + * büyümüşse o programa daha geriden yerleşilmiş demektir (öğrenci dilinde + * "gevşedi"). Beş programdan azsa yön cümlesi kurulmaz. + */ +function bolumVeriOzeti(bolum: BolumDetay, programlar: Program[]): string { + const { stats } = bolum; + const iller = new Set- {bolum.ad} bölümünü açan {sayi(tumProgramlar.length)} üniversite - programının {SON_YIL} taban puanlarını, başarı sıralamalarını ve - kontenjanlarını incele.{" "} + {veriOzeti} Aşağıdaki tabloda her programın taban puanı, başarı + sıralaması ve kontenjanı var.{" "} {TERCIH_YILI} tabanları, yerleştirme sonuçları açıklandığında netleşir. diff --git a/src/features/rehber/components/rehber-makale.tsx b/src/features/rehber/components/rehber-makale.tsx index 4443ced..d12cd72 100644 --- a/src/features/rehber/components/rehber-makale.tsx +++ b/src/features/rehber/components/rehber-makale.tsx @@ -74,7 +74,8 @@ export function RehberMakale({ slug }: { slug: string }) { {yazi.aciklama}
- Yayın: + Yazan: KolayTercih Ekibi · Yayın:{" "} + {yazi.guncelleme ? ( <> {" · "}Güncelleme:{" "} diff --git a/src/lib/seo.tsx b/src/lib/seo.tsx index 6d784cd..c4a6483 100644 --- a/src/lib/seo.tsx +++ b/src/lib/seo.tsx @@ -153,20 +153,38 @@ export function articleJsonLd(opts: { datePublished: string; /** Verilmezse yayın tarihi kullanılır (yazı hiç güncellenmemiş). */ dateModified?: string; + /** Mutlak görsel adresi; verilmezse yolun opengraph-image'ı kullanılır. */ + image?: string; }): JsonLdData { + const url = `${SITE_URL}${opts.path}`; return { "@context": "https://schema.org", "@type": "Article", headline: opts.title, description: opts.description, - url: `${SITE_URL}${opts.path}`, + url, + mainEntityOfPage: url, + image: opts.image ?? `${url}/opengraph-image`, datePublished: opts.datePublished, dateModified: opts.dateModified ?? opts.datePublished, inLanguage: "tr", + // Yazar kurum olarak verilir: yazılar tek imzayla değil ekipçe yazılıp + // resmî kaynakla (ÖSYM/YÖK) teyit ediliyor; görünür yazar satırı + // rehber-makale.tsx'te aynı adı kullanır. Kişi adı yayımlanacaksa + // burası Person'a çevrilir (docs/arastirma/2026-09-24-geo-seo). + author: { + "@type": "Organization", + name: `${SITE_NAME} Ekibi`, + url: SITE_URL, + }, publisher: { "@type": "Organization", name: SITE_NAME, url: SITE_URL, + logo: { + "@type": "ImageObject", + url: `${SITE_URL}/kolay-tercih-mark.png`, + }, }, }; }