Göndermeden önce doldurun
[sunucu adı][otelim / konut projem][işletme ya da proje adı][konum][butik otel / konut projesi][oda bilgileri][daire bilgileri][telefon][WhatsApp][e-posta][adres][alan adı]
Hosting sunucumda [sunucu adı] [otelim / konut projem] için Türkçe ve İngilizce bir site kur. Bilgiler:
1. Ad: [işletme ya da proje adı], konum: [konum], tür: [butik otel / konut projesi]
2. Otel için oda tipleri (büyüklük, yatak, kişi, manzara, olanaklar), giriş ve çıkış saatleri, sezon, kurallar: [oda bilgileri]
3. Proje için daire tipleri (oda sayısı, metrekare, kat, teslim tarihi), satış ofisi bilgisi: [daire bilgileri]
4. Telefon: [telefon], WhatsApp: [WhatsApp], e-posta: [e-posta], adres: [adres]
5. Alan adı: [alan adı], gerçek fotoğraflar: [fotoğrafların yeri ya da "stok kullan"]
6. İngilizce metinleri kim kontrol edecek: [kişi ya da "yok"]
Önce list_servers ile sunucuyu doğrula, scaffold_site'ı style="universal" ile önce confirm=false, onayımla confirm=true çalıştır. site_design_guide ve site_seo_guide'ı oku. _kaynak/ART.md dosyasına lüks ve sıcak bir tasarım kararı yaz ve bana göster: Fontshare'den ince bir serif başlık fontu (örneğin Boska 300) ile sade bir gövde fontu (örneğin Synonym), koyu kahve ve keten tonları, tek bir bakır aksan, geniş harf aralıklı küçük etiketler, tam ekran fotoğraf. İmza öğesi ana sayfadaki tam ekran ilk görsel ve onun yumuşak paralaksı olsun. Başlık çubuğunu fotoğrafın üstüne saydam bindirme; açık zeminli sayfalarda açık renkli menü yazısı kaybolur (demoda bu, odalar ve iletişim sayfalarında erişilebilirliği 95'e düşürdü). Çubuğa koyu bir zemin ver.
Dil yapısı:
1. Türkçe sayfalar kökte, İngilizce eşleri /en/ altında. Her Türkçe sayfanın bir İngilizce eşi olsun ve iki sayfa birbirini göstersin. assets/site.config.js içinde sayfa eşlerini bir listede tut ve menü, alt bilgi ve dil seçicisini bu listeden üret; dil seçici her zaman o sayfanın karşılığına gitsin, ana sayfaya değil.
2. Her sayfanın <head> bölümünde mutlak adreslerle hreflang="tr", hreflang="en" ve Türkçe sayfayı gösteren hreflang="x-default" olsun; aynı eşleri sitemap.xml'e xhtml:link olarak da yaz.
3. İngilizce sayfalarda <html lang="en">, İngilizce başlık, açıklama, kırıntı ve WebPage inLanguage "en". seo-stamp.mjs her sayfaya og:locale tr_TR basar; build.mjs içinde damgadan sonra İngilizce sayfalarda bunu en_GB yap ve iki dilde de og:locale:alternate ekle.
4. İngilizce metni çeviri gibi değil, İngilizce yazan birinin yazacağı gibi yaz; yer adlarını Türkçe yazımıyla koru.
Sayfalar ve şema (her biri iki dilde):
1. Ana sayfa: tam ekran ilk görsel, yerin ne olduğu tek paragrafta, kısa gerçekler (oda sayısı, giriş, çıkış, sezon), oda kartları, çevre rehberine bağlantı. Şema: WebPage, işletme düğümüne Hotel türüyle checkinTime, checkoutTime, numberOfRooms, amenityFeature ve containsPlace ile odalar. Konut projesinde bunun yerine Residence ya da ApartmentComplex kullan.
2. Odalar sayfası ve her oda tipi için ayrı sayfa: büyüklük, yatak, kişi sayısı, olanaklar, kimin için uygun olduğu, diğer oda tipine bağlantı. Şema: HotelRoom (bed, occupancy, floorSize, amenityFeature, containedInPlace #business). Konut projesinde her daire tipi için RealEstateListing ve içinde Apartment (numberOfRooms, floorSize). Fiyat vermediysem offers yazma ve metinde "tarihlerinizi yazın, size o tarihlerin fiyatını bildirelim" de.
3. Çevre rehberi: yerel bilgiler, son güncelleme tarihi. Şema: WebPage.
4. İletişim ve rezervasyon: telefon, WhatsApp formu, e-posta, adres, "Yol tarifi al", ulaşım, rezervasyon koşulları. Şema: ContactPage.
5. 404 sayfası (iki dilde kısa).
Yıldız sınıfı, ödül, misafir puanı ya da "en iyi" gibi bir iddia yazma; starRating ve aggregateRating ekleme.
Büyük fotoğrafları hızlı açmak için: ilk görseli <picture> ile ver; 767 piksele kadar ekranlarda 600 ve 900 piksel genişliğinde dikey bir kırpım (site_fetch ile kaynak adresinde kırpılmış hali), daha geniş ekranlarda 1200, 1600 ve 2000 piksellik yatay sürüm. Dikey kırpım olmazsa yatay görsel telefonda ekranı kaplamak için büyütülür ve ya bulanıklaşır ya da gereksiz büyük dosya iner.
Uydurma yasağı: gerçek olmayan yorum, puan, ödül, sertifika, müşteri sayısı ya da "en iyi" gibi bir iddia yazma. Vermediğim çalışma saatini, koordinatı, fiyatı ya da e-postayı şemaya ve metne ekleme; o alanı boş bırak ve raporda eksik olarak listele. Metinde uzun tire kullanma, klişe slogan yazma, her sayfanın ilk paragrafı sayfanın sorusuna doğrudan cevap versin.
Ortak SEO işleri: her sayfada 48 ile 60 karakter arası özgün başlık, 145 ile 158 karakter arası açıklama, tek H1 ve sonu eğik çizgili canonical olsun. Her sayfaya kendi WebPage düğümünü ve BreadcrumbList'i, temel grafiğe @id ile bağlanacak biçimde ekle. robots.txt dosyasında Googlebot, Bingbot, OAI-SearchBot, ChatGPT-User, GPTBot, Claude-SearchBot, Claude-User, ClaudeBot, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended ve CCBot için Allow: / yaz, kararı yorum satırında gerekçelendir ve eğitim amaçlı tarayıcıları kapatmak istersem neyi değiştireceğimi not et. sitemap.xml gerçek lastmod tarihleriyle olsun. llms.txt dosyası işletmeyi iki cümlede doğru anlatsın, NAP'ı ve önemli sayfaları bağlantılarıyla listelesin.
Teknik kurulum (kitin varsayılan yolu bu sitede kullanılmayacak, nedenleriyle):
1. Tailwind'i derle, CDN'i kaldır. Kit Tailwind'i tarayıcıda derleyen Play CDN ile yükler; bu konsola uyarı basar ve mobil performansı düşürür. site_write_file ile _kaynak/package.json yaz, site_run_command("cd _kaynak && npm i -D tailwindcss@3 html-validate", background=true) ile kur ve site_command_status ile bitişini bekle. _kaynak/tailwind.config.js içinde content olarak "./*.html", "./**/*.html", "!./_kaynak/**" ve "./_kaynak/chrome.mjs" ver. _kaynak/site.css dosyasına @font-face kurallarını, @tailwind satırlarını ve kitin app.css dosyasındaki odak halkası, "İçeriğe geç" bağlantısı ve yatay taşma korumasını taşı. Çıktıyı assets/app.css adıyla üret, çünkü design-check.mjs fontları bu dosyada arar; sayfalardaki bağlantıya ?v=<içerik özeti> ekle ki kenar önbelleği eski dosyayı göstermesin.
2. Fontları kendi sunucunda barındır. Seçtiğin Fontshare ailelerinin CSS adresini (api.fontshare.com/v2/css?f[]=...) site_read_url ile oku, içindeki woff2 dosyalarını site_fetch ile assets/fonts/ altına indir, @font-face ile font-display: swap kullanarak tanımla. İlk ekranda görünen her ağırlığı <link rel="preload" as="font" type="font/woff2" crossorigin> ile önceden yükle, en fazla üç dosya. Bunu yapmazsan font değişimi düzeni kaydırır; demoda masaüstü CLS bu yüzden 0,078 çıktı ve ön yükleme ile 0'a indi.
3. Menüyü ve alt bilgiyi statik HTML yap. Kitin <site-nav> ve <site-footer> bileşenleri JavaScript ile çalışır ve yapay zeka tarayıcılarının çoğu menüyü, adresi ve telefonu göremez. chrome.js ve motion.js betiklerini sayfalardan kaldır. _kaynak/chrome.mjs içinde assets/site.config.js verisinden header ve footer HTML'i üreten iki fonksiyon yaz; mobil menüyü JavaScript'siz <details> ve <summary> ile kur, etkin sayfaya aria-current="page" ver. Site kökünde build.mjs yaz ve sırasıyla şunları yapsın: node seo-stamp.mjs çalıştır, her sayfada <!-- chrome:header:start --> ile <!-- chrome:header:end --> (ve footer için aynısı) arasını yeniden bas, Tailwind'i derle, CSS bağlantısındaki özeti güncelle. Her değişiklikten sonra yalnız site_run_command("node build.mjs") çalıştır.
4. Paralaks JavaScript'siz olsun. İlk görsele data-parallax ver ve CSS scroll-driven animation (animation-timeline: scroll(root)) ile yalnız transform kullanarak yavaşça kaydır; bölümlere data-reveal ile yalnız transform kullanan bir beliriş ver, opaklığı değiştirme. Kuralları @media (prefers-reduced-motion: no-preference) ve @supports (animation-timeline: scroll()) içine yaz; hareket azaltma tercihinde ve desteklemeyen tarayıcıda görsel sabit kalır. GSAP, Lenis ve Swiper yükleme.
5. Görselleri küçült. Her fotoğrafı site_fetch ile resize="480x", "800x", "1200x", "1600x" ve image_format="webp", quality 60 ile 68 arası değerlerle ayrı dosyalara indir. Her <img> için srcset, sizes, gerçek orana uyan width ve height ver; görseli kırpacaksan aspect-[4/3] gibi bir oran sınıfı ve object-cover ekle, yoksa görsel yüklenince düzen kayar. İlk ekrandaki görsel fetchpriority="high" olsun ve lazy olmasın, diğerleri loading="lazy". Paylaşım görselini site_fetch ile 1200x630 JPG olarak indir.
6. Küçük ama puan düşüren ayrıntılar: <link rel="icon"> ile bir SVG favicon ver (yoksa tarayıcı /favicon.ico ister, 404 konsol hatası olur ve En İyi Uygulamalar puanı düşer). DOCTYPE'ı büyük harfle yaz, style niteliği kullanma, satır sonunda boşluk bırakma. Telefon bağlantısının görünen metninde boşluk yerine kullan (html-validate tel-non-breaking kuralı). Menü, alt bilgi, kırıntı ve başlık içindeki bağlantılar en az 44 piksel yükseklik ve genişlikte olsun. Harita için Google Maps iframe gömme; site dışa istek yapmasın, onun yerine adres ve "Yol tarifi al" bağlantısı koy.
7. Siteden hiçbir dış adrese istek gitmesin: font, betik, stil ve görsel kendi sunucunda olsun. Form işleyici olmadığı için iletişim formu method="get" ile https://wa.me/[WhatsApp numarası] adresine giden ve name="text" olan hazır mesajlı bir textarea olsun; JavaScript gerekmez.
Kapılar (sırayla, hepsi geçmeden "bitti" deme):
1. site_run_command ile node build.mjs, ardından node seo-check.mjs: 0 hata, 0 uyarı. Kopya içerik uyarısı çıkarsa iki sayfanın metni yeterince farklı değildir, yeniden yaz.
2. node design-check.mjs: 0 hata. Hareketsiz bir tarz seçtiysen "Hiç hareket yok" uyarısını bilinçli karar olarak raporda gerekçesiyle yaz.
3. _kaynak/node_modules/.bin/html-validate ile bütün HTML dosyaları: 0 hata. Site kökünde .htmlvalidateignore dosyasına _kaynak/ satırını yaz ki bağımlılıklar taranmasın.
4. Dil kontrolü: her sayfanın hreflang eşinin var olduğunu, 200 döndüğünü ve karşılığını geri gösterdiğini bir tabloyla göster; seo-check hreflang uyarısı vermesin.
5. Her sayfayı site_preview ile view="mobile", view="desktop", ayrıca 360 ve 768 genişlikte gör. Yatay kaydırma, taşan başlık, sıkışık buton ya da okunmayan metin varsa düzelt ve tekrar bak.
6. Her sayfa için core_web_vitals ile strategy="mobile" ve strategy="desktop" ölç; seo_audit ile erişilebilirlik, en iyi uygulamalar ve SEO puanlarını al. Hedef mobilde erişilebilirlik, en iyi uygulamalar ve SEO 100, performans en az 95; masaüstünde dördü de en az 95. Tutmayan sayfada core_web_vitals'ı resources=true ile çalıştır, LCP öğesini ve fazla büyük görseli bul, düzelt, seo_audit'i runs=2 ile tekrarla, çünkü tek ölçüm dalgalanabilir.
7. Ağ isteklerinde sitenin kendi alan adı dışında hiçbir adres olmamalı.
Yayından sonra: sitemap.xml'i gsc_submit_sitemap ile gönder, gsc_inspect_urls ile ana sayfayı ve en önemli üç sayfayı kontrol et. Hiçbir araç "Dizine Eklenmesini İste" düğmesine basamaz; bunu Search Console'dan elle yapmam gerekenleri listele.
Sonunda bana şu raporu ver: sayfa listesi ve her sayfanın mobil ve masaüstü puanları tablo halinde (performans, erişilebilirlik, en iyi uygulamalar, SEO, LCP, CLS), her kapının sonucu, yaptığın düzeltmeler ve benden beklediğin eksik bilgiler. Bir ölçüt tutmadıysa bunu açıkça yaz, "tamam" deme.