Completa antes de enviar
[nombre del servidor][nombre con licencia][policlínica dental / consulta privada / clínica estética][responsable de la clínica][médico responsable del contenido][editor del sitio][lista de médicos][tratamientos][teléfono][WhatsApp][dirección][horario]
Crea desde cero un sitio nuevo para mi clínica en mi servidor de hosting [nombre del servidor]. Datos:
1. Nombre con licencia: [nombre con licencia], tipo: [policlínica dental / consulta privada / clínica estética]
2. Responsable de la clínica (mesul müdür): [responsable de la clínica], médico responsable del contenido: [médico responsable del contenido], editor del sitio: [editor del sitio]
3. Médicos con título, formación y áreas de trabajo: [lista de médicos]
4. Tratamientos para los que hay que escribir páginas informativas y el médico que prepara cada una: [tratamientos]
5. Teléfono: [teléfono], WhatsApp: [WhatsApp], dirección: [dirección], horario: [horario]
6. Dominio: [dominio], preferencia de color: [preferencia de color], fotos reales: [dónde están las fotos, o "ninguna"]
Este sitio debe cumplir íntegramente el Reglamento de Actividades de Promoción e Información en los Servicios de Salud de Turquía (Boletín Oficial 12.11.2025, n.º 33075). Las reglas:
1. Sin opiniones de pacientes, mensajes de agradecimiento, estrellas ni valoraciones. Tampoco aggregateRating ni review en el JSON-LD; Google no acepta que un negocio se valore a sí mismo en el marcado.
2. Sin tarifas, descuentos, campañas, pagos a plazos, formas de pago ni expresiones como "primera consulta gratuita". Sin offers, price ni priceRange en el JSON-LD.
3. Sin promoción de productos ni marcas: no nombres marcas de implantes, alineadores, empastes ni aparatos.
4. Sin superioridad ni promesas de resultados: evita "el mejor", "líder", "garantizado", "solución definitiva", "indoloro", "impecable", "100 por cien". Usa "varía de una persona a otra y se aclara tras la exploración".
5. Sin cifras que no se puedan verificar: nada de "15 años de experiencia", "5.000 pacientes" ni "miles de implantes".
6. Títulos correctos: un dentista sin especialidad es "Dt.", un especialista es "Uzm. Dt."; "Dr." solo se usa con doctorado. Una policlínica nombra un "mesul müdür" (responsable de la clínica), no un "médico jefe".
7. Sin fotos de pacientes ni imágenes de cirugías o zonas íntimas. Las imágenes de antes y después solo pueden publicarse con el consentimiento escrito del paciente, el mismo entorno y la misma técnica, la fecha del procedimiento y la fecha en que se tomó la imagen; si no dispongo de todo eso, no uses imágenes de antes y después. Si las usas, añade debajo esta frase literalmente: "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." Ponla también en las páginas de procedimientos intervencionistas.
8. Un aviso legal en cada página: nombre con licencia, responsable de la clínica, médico responsable del contenido, editor del sitio y fecha de la última actualización.
9. El contenido de turismo de salud no va en este sitio; requiere una autorización propia y una plataforma aparte.
Para comprobar estas reglas automáticamente, escribe uyum-check.mjs en la raíz del sitio. Debe analizar el texto visible de cada página y el texto alternativo de las imágenes por separado de los bloques JSON-LD: expresiones de opiniones y valoraciones; números con TL, ₺; las palabras precio, tarifa, descuento, campaña, plazos, gratis, mejor, garantía, indoloro, solución definitiva; nombres de marcas; cifras como "15+ años" o "5000 pacientes"; "Dr." y "médico jefe"; "antes y después"; turismo de salud; y aggregateRating, review, offers, price en el JSON-LD. También debe comprobar que están los cinco campos del aviso legal en cada página, lastReviewed y reviewedBy en las páginas de tratamientos y la frase de advertencia en las páginas de procedimientos intervencionistas. Marca las frases que explican la normativa (por ejemplo "este sitio no muestra tarifas") con data-uyum="aciklama"; el script no las cuenta como errores, pero las lista para revisión manual. Que termine con código 1 ante cualquier infracción.
Después confirma el servidor con list_servers y ejecuta scaffold_site con style="clinic", primero con confirm=false y con confirm=true tras mi aprobación. Lee site_design_guide y site_seo_guide. Escribe una decisión de diseño editorial en _kaynak/ART.md y muéstramela: una tipografía serif de titulares fina de Fontshare (por ejemplo Zodiak) con una tipografía de texto serena (por ejemplo Switzer), fondo crema, texto verde casi negro, un único acento verde azulado profundo y mucho espacio en blanco. El elemento distintivo es una tarjeta "médico que preparó esta página" junto a cada página de tratamiento: el nombre con título del médico, su especialidad y la fecha de revisión médica. Si no hay foto del médico, no uses una foto de stock de una persona; usa una simple insignia con las iniciales. En las fotos de las instalaciones no puede aparecer ningún paciente.
Páginas y schema:
1. Inicio: qué es la clínica, cuántos médicos trabajan en qué áreas, el enfoque "primero la exploración, luego decidimos juntos", tratamientos, médicos, pasos de la reserva y 4 FAQ. Schema: WebPage, FAQPage. En el grafo base el tipo de negocio es Dentist (MedicalClinic para una clínica estética).
2. Una página de tratamientos y una página informativa por tratamiento: el primer párrafo dice qué es el tratamiento y para quién se plantea; después, a quién conviene o no, los pasos de la valoración, el desarrollo del tratamiento, riesgos y precauciones, cuidados posteriores y 3 FAQ. Schema: MedicalWebPage (about un MedicalProcedure, reviewedBy y author el nodo Person del médico, lastReviewed), FAQPage.
3. Nuestros médicos: nombre con título, especialidad, formación y áreas de trabajo de cada uno. Schema: un Person con @id por médico (honorificPrefix, jobTitle, worksFor #business, knowsAbout). El tipo Physician de schema.org describe una organización; no lo uses para una persona.
4. Reserva y contacto: teléfono, formulario de WhatsApp, dirección, horario, una lista de "qué traer" e indicaciones para llegar. Schema: ContactPage.
5. Una página de aviso legal, privacidad y principios de publicación, y una página 404.
No inventes nada: no escribas opiniones, valoraciones, premios, certificados, cifras de clientes ni afirmaciones como "el mejor" que no sean reales. No añadas al schema ni al texto horarios, coordenadas, precios ni un correo electrónico que no te haya dado; deja el campo fuera y anótalo como dato que falta en el informe. No uses rayas largas ni eslóganes tópicos, y haz que el primer párrafo de cada página responda directamente a la pregunta de esa página.
Trabajo de SEO común: cada página lleva un title único de 48 a 60 caracteres, una description de 145 a 158 caracteres, un único H1 y un canonical que termine en barra. Añade a cada página su propio nodo WebPage y BreadcrumbList, enlazados al grafo base por @id. En robots.txt escribe Allow: / para Googlebot, Bingbot, OAI-SearchBot, ChatGPT-User, GPTBot, Claude-SearchBot, Claude-User, ClaudeBot, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended y CCBot, explica la decisión en un comentario e indica qué cambiar si quiero bloquear los rastreadores de entrenamiento. sitemap.xml lleva fechas lastmod reales. llms.txt describe el negocio con precisión en dos frases y lista el NAP y las páginas importantes con enlaces.
Configuración técnica (en este sitio no se usa la vía por defecto del kit, por estos motivos):
1. Compila Tailwind y elimina el CDN. El kit carga Tailwind mediante el Play CDN, que compila en el navegador, muestra una advertencia en la consola y empeora el rendimiento en móvil. Escribe _kaynak/package.json con site_write_file, instala con site_run_command("cd _kaynak && npm i -D tailwindcss@3 html-validate", background=true) y espera con site_command_status. En _kaynak/tailwind.config.js pon content con "./*.html", "./**/*.html", "!./_kaynak/**" y "./_kaynak/chrome.mjs". Mueve las reglas @font-face, las líneas @tailwind y el anillo de foco, el skip link y la protección contra desbordamiento del app.css del kit a _kaynak/site.css. Genera la salida en assets/app.css, porque design-check.mjs busca las fuentes en ese archivo, y añade ?v=<hash del contenido> al enlace en cada página para que la caché del edge nunca sirva el archivo antiguo.
2. Aloja las fuentes en tu propio servidor. Lee con site_read_url la URL del CSS de las familias de Fontshare que hayas elegido (api.fontshare.com/v2/css?f[]=...), descarga sus archivos woff2 con site_fetch en assets/fonts/ y decláralos con @font-face y font-display: swap. Precarga cada peso usado en la parte visible inicial con <link rel="preload" as="font" type="font/woff2" crossorigin>, tres archivos como máximo. Si no lo haces, el cambio de fuente desplaza el diseño; en la demo el CLS en escritorio fue de 0,078 por ese motivo y bajó a 0 con la precarga.
3. Haz que el menú y el pie sean HTML estático. Los componentes <site-nav> y <site-footer> del kit funcionan con JavaScript, y la mayoría de los rastreadores de IA nunca ven el menú, la dirección ni el teléfono. Elimina los scripts chrome.js y motion.js de todas las páginas. En _kaynak/chrome.mjs escribe dos funciones que generen el HTML de la cabecera y del pie a partir de assets/site.config.js; construye el menú móvil sin JavaScript con <details> y <summary>, y marca la página actual con aria-current="page". Escribe build.mjs en la raíz del sitio, que por orden ejecute node seo-stamp.mjs, vuelva a estampar todo lo que hay entre <!-- chrome:header:start --> y <!-- chrome:header:end --> (y lo mismo para el pie) en cada página, compile Tailwind y actualice el hash del enlace CSS. Tras cada cambio, ejecuta solo site_run_command("node build.mjs").
4. Sin movimiento. No cargues GSAP, Lenis, Swiper ni ningún script de animación; el encargo es un sitio informativo, sereno y legible.
5. Reduce las imágenes. Descarga cada foto con site_fetch en archivos separados usando resize="480x", "800x", "1200x", "1600x", image_format="webp" y una calidad entre 60 y 68. Da a cada <img> srcset, sizes, y width y height que correspondan a la proporción real; si recortas, añade una clase de proporción como aspect-[4/3] con object-cover, de lo contrario el diseño se desplaza al cargar la imagen. La imagen de la primera pantalla lleva fetchpriority="high" y no es lazy; todas las demás llevan loading="lazy". Descarga la imagen para compartir en 1200x630 JPG con site_fetch.
6. Pequeños detalles que restan puntos: añade un favicon SVG con <link rel="icon"> (si no, el navegador pide /favicon.ico, el 404 aparece como error en la consola y baja Best Practices). Escribe DOCTYPE en mayúsculas, no uses atributos style y no dejes espacios al final de las líneas. Usa en lugar de espacios en el texto visible de los enlaces de teléfono (regla tel-non-breaking de html-validate). Los enlaces del menú, el pie, las migas de pan y los encabezados deben medir al menos 44 píxeles de alto y de ancho. No incrustes un iframe de Google Maps; el sitio no debe hacer solicitudes externas, así que muestra la dirección y un enlace "Cómo llegar".
7. Ninguna solicitud debe salir del sitio: fuentes, scripts, estilos e imágenes viven en tu propio servidor. No hay gestor de formularios, así que el formulario de contacto es un formulario method="get" que apunta a https://wa.me/[número de WhatsApp] con un textarea prellenado llamado "text"; no hace falta JavaScript.
Controles (en este orden; no lo des por terminado hasta que pasen todos):
1. Ejecuta node build.mjs con site_run_command y después node seo-check.mjs: 0 errores, 0 advertencias. Una advertencia de contenido duplicado significa que dos páginas no son lo bastante distintas; reescríbelas.
2. node design-check.mjs: 0 errores. Si has elegido un estilo sin movimiento, informa de la advertencia de "sin movimiento" como una decisión deliberada, con el motivo.
3. _kaynak/node_modules/.bin/html-validate en todos los archivos HTML: 0 errores. Pon una línea _kaynak/ en un archivo .htmlvalidateignore en la raíz del sitio para que no se analicen las dependencias.
4. node uyum-check.mjs: 0 infracciones.