Göndermeden önce doldurun
[sunucu adı][ruhsatlı ad][diş polikliniği / muayenehane / estetik klinik][mesul müdür][içerik sorumlusu hekim][site editörü][hekim listesi][tedaviler][telefon][WhatsApp][adres][saatler]
Hosting sunucumda [sunucu adı] kliniğim için sıfırdan bir site kur. Bilgiler:
1. Ruhsatlı adı: [ruhsatlı ad], tür: [diş polikliniği / muayenehane / estetik klinik]
2. Mesul müdür: [mesul müdür], içerik sorumlusu hekim: [içerik sorumlusu hekim], site editörü: [site editörü]
3. Hekimler, unvanları, eğitimleri ve çalışma alanları: [hekim listesi]
4. Bilgilendirme yazılacak tedaviler ve her birini hazırlayacak hekim: [tedaviler]
5. Telefon: [telefon], WhatsApp: [WhatsApp], adres: [adres], çalışma saatleri: [saatler]
6. Alan adı: [alan adı], renk tercihi: [renk tercihi], gerçek fotoğraflar: [fotoğrafların yeri ya da "yok"]
Bu site Sağlık Hizmetlerinde Tanıtım ve Bilgilendirme Faaliyetleri Hakkında Yönetmelik'e (Resmi Gazete 12.11.2025, sayı 33075) tam uymak zorunda. Kurallar:
1. Hasta yorumu, teşekkür mesajı, yıldız ya da puan yok. JSON-LD'de de aggregateRating ve review olmayacak; Google da işletmenin kendine verdiği puan işaretlemesini kabul etmiyor.
2. Ücret, indirim, kampanya, taksit, ödeme yöntemi ve "ücretsiz muayene" gibi ifadeler yok. JSON-LD'de offers, price ve priceRange yok.
3. Ürün ya da marka tanıtımı yok: implant, plak, dolgu ya da cihaz markası yazma.
4. Üstünlük ve sonuç vaadi yok: "en iyi", "lider", "garanti", "kalıcı çözüm", "ağrısız", "acısız", "kusursuz", "yüzde yüz" gibi ifadeler kullanma. "Kişiden kişiye değişir, muayene sonrası netleşir" dilini kullan.
5. Doğrulanamayan sayı yok: "15 yıllık deneyim", "5000 hasta", "binlerce implant" yazma.
6. Unvanlar doğru: uzmanlığı olmayan diş hekimi "Dt.", uzman "Uzm. Dt." olarak yazılır; doktora yoksa "Dr." kullanılmaz. Poliklinikte "başhekim" değil "mesul müdür" yazılır.
7. Hasta görseli, ameliyat anı ve mahrem bölge görüntüsü yok. Öncesi ve sonrası görsel ancak hastanın yazılı onamı, aynı ortam ve teknik, işlem tarihi ve görüntülenme tarihi ile birlikte yayımlanabilir; bu bilgiler bende yoksa öncesi ve sonrası görsel kullanma. Kullanırsan altına şu metni birebir yaz: "Her cerrahi veya girişimsel işlemde sonuçlar kişiden kişiye değişiklik gösterebilir. İşlem öncesinde hekiminizden detaylı görüş almanız önerilir." Girişimsel işlem sayfalarında da bu metni koy.
8. Her sayfada künye: ruhsatlı adı, mesul müdür, içerik sorumlusu hekim, site editörü ve son güncelleme tarihi.
9. Sağlık turizmi içeriği bu siteye konmaz; o ayrı bir yetki belgesi ve ayrı bir platform gerektirir.
Bu kuralları otomatik kontrol etmek için site köküne uyum-check.mjs yaz. Betik her sayfanın görünen metnini ve görsel alt metinlerini ayrı, JSON-LD bloklarını ayrı tarasın: yorum ve puan ifadeleri, sayı ile TL, ₺, fiyat, ücret, indirim, kampanya, taksit, ücretsiz, en iyi, garanti, ağrısız, acısız, kalıcı çözüm, marka adları, "15+ yıl" ya da "5000 hasta" gibi sayılar, "Dr." ve "başhekim", "öncesi ve sonrası", sağlık turizmi; JSON-LD'de aggregateRating, review, offers, price. Ayrıca her sayfada künyenin beş alanını, tedavi sayfalarında lastReviewed ve reviewedBy alanlarını, girişimsel işlem sayfalarında uyarı metnini arasın. Yönetmeliği açıklayan cümleleri (örneğin "bu sitede ücret bilgisi yer almaz") data-uyum="aciklama" ile işaretle; betik bunları hata saymasın ama elle kontrol listesinde göstersin. İhlal varsa çıkış kodu 1 olsun.
Sonra list_servers ile sunucuyu doğrula, scaffold_site'ı style="clinic" ile önce confirm=false, onayımla confirm=true çalıştır. site_design_guide ve site_seo_guide'ı oku. _kaynak/ART.md dosyasına editoryal bir tasarım kararı yaz ve bana göster: Fontshare'den ince bir serif başlık fontu (örneğin Zodiak) ile sakin bir gövde fontu (örneğin Switzer), krem zemin, koyu yeşil-siyah metin, tek bir koyu deniz yeşili aksan, bol boşluk. İmza öğesi her tedavi sayfasının yanında duran "bu sayfayı hazırlayan hekim" kartı olsun: hekimin unvanlı adı, alanı ve tıbbi gözden geçirme tarihi. Hekim fotoğrafı yoksa stok insan fotoğrafı kullanma, baş harflerden oluşan sade bir rozet koy; mekan fotoğraflarında hasta görünmesin.
Sayfalar ve şema:
1. Ana sayfa: kliniğin ne olduğu, kaç hekimle hangi alanlarda çalıştığı, "önce muayene, sonra birlikte karar" yaklaşımı, tedaviler, hekimler, randevu adımları ve 4 SSS. Şema: WebPage, FAQPage. Temel grafikte işletme türü Dentist (estetik klinik için MedicalClinic).
2. Tedaviler sayfası ve her tedavi için ayrı bilgilendirme sayfası: ilk paragraf tedavinin ne olduğunu ve kimin için düşünüldüğünü söylesin; kimler için uygun ya da uygun değil, değerlendirme adımları, tedavinin seyri, riskler ve dikkat edilecekler, tedavi sonrası, 3 SSS. Şema: MedicalWebPage (about olarak MedicalProcedure, reviewedBy ve author olarak hekimin Person düğümü, lastReviewed), FAQPage.
3. Hekimlerimiz: her hekim için unvanlı ad, uzmanlık, eğitim ve çalışma alanları. Şema: her hekim için @id'li bir Person (honorificPrefix, jobTitle, worksFor #business, knowsAbout). schema.org'daki Physician türü bir kurum türüdür; kişi için kullanma.
4. Randevu ve iletişim: telefon, WhatsApp formu, adres, saatler, "muayeneye gelirken" listesi, ulaşım. Şema: ContactPage.
5. Künye, KVKK ve yayın ilkeleri sayfası ve 404 sayfası.
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. Hareket yok. GSAP, Lenis, Swiper ve hiçbir animasyon betiği yüklenmeyecek; sakin ve okunaklı bir bilgilendirme sitesi isteniyor.
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. node uyum-check.mjs: 0 ihlal. Elle kontrol listesindeki her açıklama cümlesini oku ve tanıtım değil açıklama olduğundan emin ol.
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.
Raporun sonuna yönetmelik kontrol listesini ekle: dokuz kuralın her biri için "uygun" ya da "uygun değil" ve kanıtı. Bu çalışma hukuki görüş yerine geçmez; şüpheli bir ifade varsa bana sor.