Vor dem Senden ausfüllen
[Servername][Name laut Zulassung][Zahnpoliklinik / Praxis / Ästhetikklinik][verantwortliche Leitung][Inhaltsarzt][Website-Redakteur][Ärzteliste][Behandlungen][Telefon][WhatsApp][Adresse][Öffnungszeiten]
Erstelle auf meinem Hosting-Server [Servername] eine komplett neue Website für meine Klinik. Angaben:
1. Name laut Zulassung: [Name laut Zulassung], Art: [Zahnpoliklinik / Praxis / Ästhetikklinik]
2. Verantwortliche Leitung: [verantwortliche Leitung], für die Inhalte verantwortlicher Arzt: [Inhaltsarzt], Redakteur der Website: [Website-Redakteur]
3. Ärzte mit Titeln, Ausbildung und Tätigkeitsschwerpunkten: [Ärzteliste]
4. Behandlungen, für die Informationsseiten geschrieben werden sollen, und der jeweils zuständige Arzt: [Behandlungen]
5. Telefon: [Telefon], WhatsApp: [WhatsApp], Adresse: [Adresse], Öffnungszeiten: [Öffnungszeiten]
6. Domain: [Domain], Farbwunsch: [Farbwunsch], echte Fotos: [Ablageort der Fotos oder "keine"]
Diese Website muss die türkische Verordnung über Werbe- und Informationstätigkeiten im Gesundheitswesen (Amtsblatt vom 12.11.2025, Nr. 33075) vollständig einhalten. Die Regeln:
1. Keine Patientenbewertungen, Dankesnachrichten, Sterne oder Ratings. Auch kein aggregateRating oder review im JSON-LD; Google akzeptiert die Eigenbewertung eines Unternehmens im Markup nicht.
2. Keine Preise, Rabatte, Kampagnen, Ratenzahlungen, Zahlungsarten oder Formulierungen wie "kostenlose Beratung". Im JSON-LD keine offers, price oder priceRange.
3. Keine Produkt- oder Markenwerbung: keine Marken von Implantaten, Alignern, Füllungen oder Geräten nennen.
4. Keine Überlegenheits- oder Ergebnisversprechen: Vermeide "der Beste", "führend", "garantiert", "dauerhafte Lösung", "schmerzfrei", "makellos", "100 Prozent". Schreibe stattdessen "das ist von Mensch zu Mensch unterschiedlich und zeigt sich nach der Untersuchung".
5. Keine nicht belegbaren Zahlen: kein "15 Jahre Erfahrung", "5.000 Patienten" oder "Tausende Implantate".
6. Korrekte Titel: Ein Zahnarzt ohne Fachgebiet ist "Dt.", ein Facharzt "Uzm. Dt."; "Dr." steht nur bei einer Promotion. Eine Poliklinik nennt einen "mesul müdür" (verantwortlichen Leiter), keinen "Chefarzt".
7. Keine Patientenfotos, keine Bilder von Operationen oder Intimbereichen. Vorher-nachher-Bilder dürfen nur mit schriftlicher Einwilligung des Patienten, gleicher Umgebung und Technik, dem Behandlungsdatum und dem Aufnahmedatum veröffentlicht werden; liegt mir das nicht vor, verwende keine Vorher-nachher-Bilder. Falls du sie doch verwendest, setze darunter wörtlich diesen Satz: "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." Setze ihn auch auf die Seiten zu invasiven Eingriffen.
8. Auf jeder Seite ein Impressum: Name laut Zulassung, verantwortliche Leitung, für die Inhalte verantwortlicher Arzt, Website-Redakteur und Datum der letzten Aktualisierung.
9. Inhalte zum Gesundheitstourismus gehören nicht auf diese Website; sie erfordern eine eigene Genehmigung und eine eigene Plattform.
Um diese Regeln automatisch zu prüfen, schreibe im Stammverzeichnis der Website die Datei uyum-check.mjs. Sie scannt den sichtbaren Text und die Alt-Texte der Bilder jeder Seite getrennt von den JSON-LD-Blöcken: Bewertungs- und Rating-Formulierungen; Zahlen mit TL, ₺; die Wörter Preis, Gebühr, Rabatt, Kampagne, Rate, kostenlos, beste, Garantie, schmerzfrei, dauerhafte Lösung; Markennamen; Zahlen wie "15+ Jahre" oder "5000 Patienten"; "Dr." und "Chefarzt"; "vorher-nachher"; Gesundheitstourismus; sowie aggregateRating, review, offers, price im JSON-LD. Außerdem prüft sie auf jeder Seite die fünf Impressumsfelder, auf Behandlungsseiten lastReviewed und reviewedBy und auf Seiten zu invasiven Eingriffen den Warnsatz. Sätze, die die Verordnung erklären (zum Beispiel "Diese Website zeigt keine Preise"), markierst du mit data-uyum="aciklama"; das Skript zählt sie nicht als Fehler, listet sie aber zur manuellen Prüfung auf. Bei jedem Verstoß beendet es sich mit Exit-Code 1.
Bestätige dann den Server mit list_servers und führe scaffold_site mit style="clinic" aus, zuerst mit confirm=false und nach meiner Freigabe mit confirm=true. Lies site_design_guide und site_seo_guide. Schreibe eine redaktionelle Designentscheidung nach _kaynak/ART.md und zeige sie mir: eine feine Serifen-Schrift für Überschriften von Fontshare (zum Beispiel Zodiak) mit einer ruhigen Textschrift (zum Beispiel Switzer), cremefarbener Hintergrund, dunkles Grünschwarz für den Text, ein tiefer Petrolton als einzige Akzentfarbe und viel Weißraum. Das Erkennungsmerkmal ist eine Karte "Arzt, der diese Seite erstellt hat" neben jeder Behandlungsseite: Name des Arztes mit Titel, Fachgebiet und Datum der medizinischen Prüfung. Gibt es kein Arztfoto, verwende kein Stockfoto einer Person, sondern ein schlichtes Monogramm-Abzeichen. Auf Fotos der Räumlichkeiten darf kein Patient zu sehen sein.
Seiten und Schema:
1. Startseite: was die Klinik ist, wie viele Ärzte in welchen Fachgebieten arbeiten, der Ansatz "erst die Untersuchung, dann entscheiden wir gemeinsam", Behandlungen, Ärzte, Terminschritte und 4 FAQs. Schema: WebPage, FAQPage. Im Basisgraphen ist der Geschäftstyp Dentist (MedicalClinic bei einer Ästhetikklinik).
2. Eine Behandlungsübersicht und je Behandlung eine Informationsseite: Der erste Absatz sagt, was die Behandlung ist und für wen sie infrage kommt; danach, für wen sie geeignet ist oder nicht, die Beurteilungsschritte, der Behandlungsablauf, Risiken und Vorsichtsmaßnahmen, Nachsorge und 3 FAQs. Schema: MedicalWebPage (about eine MedicalProcedure, reviewedBy und author als Person-Knoten des Arztes, lastReviewed), FAQPage.
3. Unsere Ärzte: je Arzt Name mit Titel, Fachgebiet, Ausbildung und Tätigkeitsschwerpunkte. Schema: je Arzt eine Person mit @id (honorificPrefix, jobTitle, worksFor #business, knowsAbout). Der schema.org-Typ Physician beschreibt eine Organisation; verwende ihn nicht für eine Person.
4. Termin und Kontakt: Telefon, WhatsApp-Formular, Adresse, Öffnungszeiten, eine Liste "Was Sie mitbringen" und Anfahrt. Schema: ContactPage.
5. Eine Seite mit Impressum, Datenschutz und Veröffentlichungsgrundsätzen sowie eine 404-Seite.
Keine Erfindungen: Schreibe keine Bewertungen, Ratings, Auszeichnungen, Zertifikate, Kundenzahlen oder Behauptungen wie "der Beste", die nicht der Wahrheit entsprechen. Füge keine Öffnungszeiten, Koordinaten, Preise oder E-Mail-Adressen, die ich dir nicht genannt habe, in Schema oder Text ein; lass das Feld weg und führe es im Bericht als fehlend auf. Verwende keine Gedankenstriche und keine Standardfloskeln, und lass den ersten Absatz jeder Seite die Frage dieser Seite direkt beantworten.
Gemeinsame SEO-Arbeit: Jede Seite bekommt einen eigenen Title mit 48 bis 60 Zeichen, eine Description mit 145 bis 158 Zeichen, genau eine H1 und einen Canonical mit abschließendem Schrägstrich. Füge jeder Seite einen eigenen WebPage-Knoten und eine BreadcrumbList hinzu, per @id mit dem Basisgraphen verknüpft. Schreibe in die robots.txt Allow: / für Googlebot, Bingbot, OAI-SearchBot, ChatGPT-User, GPTBot, Claude-SearchBot, Claude-User, ClaudeBot, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended und CCBot, erkläre die Entscheidung in einem Kommentar und notiere, was zu ändern ist, falls ich Trainings-Crawler sperren möchte. Die sitemap.xml enthält echte lastmod-Daten. Die llms.txt beschreibt das Unternehmen in zwei Sätzen wahrheitsgemäß und listet NAP und die wichtigen Seiten mit Links auf.
Technische Einrichtung (der Standardweg des Toolkits wird auf dieser Website aus folgenden Gründen nicht verwendet):
1. Tailwind kompilieren und das CDN weglassen. Das Kit lädt Tailwind über das Play CDN, das im Browser kompiliert, eine Konsolenwarnung ausgibt und die mobile Performance senkt. Schreibe _kaynak/package.json mit site_write_file, installiere mit site_run_command("cd _kaynak && npm i -D tailwindcss@3 html-validate", background=true) und warte mit site_command_status darauf. Setze in _kaynak/tailwind.config.js content auf "./*.html", "./**/*.html", "!./_kaynak/**" und "./_kaynak/chrome.mjs". Verschiebe die @font-face-Regeln, die @tailwind-Zeilen sowie Fokusring, Skip-Link und Overflow-Schutz aus der app.css des Kits nach _kaynak/site.css. Gib die Ausgabe nach assets/app.css aus, da design-check.mjs dort nach den Schriften sucht, und hänge auf jeder Seite ?v=<Inhalts-Hash> an den Link, damit der Edge-Cache nie die alte Datei ausliefert.
2. Schriften selbst hosten. Lies die CSS-URL der gewählten Fontshare-Familien (api.fontshare.com/v2/css?f[]=...) mit site_read_url, lade deren woff2-Dateien mit site_fetch nach assets/fonts/ herunter und deklariere sie mit @font-face und font-display: swap. Lade jede im sichtbaren Bereich verwendete Stärke per <link rel="preload" as="font" type="font/woff2" crossorigin> vor, höchstens drei Dateien. Ohne das verschiebt der Schriftentausch das Layout; in der Demo lag die CLS auf dem Desktop deshalb bei 0,078 und sank durch Preloading auf 0.
3. Menü und Footer als statisches HTML. Die Komponenten <site-nav> und <site-footer> des Kits laufen über JavaScript, und die meisten KI-Crawler sehen Menü, Adresse und Telefonnummer nie. Entferne die Skripte chrome.js und motion.js von jeder Seite. Schreibe in _kaynak/chrome.mjs zwei Funktionen, die das Header- und Footer-HTML aus assets/site.config.js erzeugen; baue das mobile Menü ohne JavaScript mit <details> und <summary> und kennzeichne die aktuelle Seite mit aria-current="page". Schreibe im Stammverzeichnis build.mjs, das der Reihe nach node seo-stamp.mjs ausführt, auf jeder Seite alles zwischen <!-- chrome:header:start --> und <!-- chrome:header:end --> (und entsprechend für den Footer) neu einsetzt, Tailwind kompiliert und den Hash am CSS-Link aktualisiert. Führe nach jeder Änderung nur site_run_command("node build.mjs") aus.
4. Keine Bewegung. Lade weder GSAP, Lenis, Swiper noch ein Animationsskript; die Vorgabe ist eine ruhige, gut lesbare Informationswebsite.
5. Bilder verkleinern. Lade jedes Foto mit site_fetch in getrennte Dateien herunter, mit resize="480x", "800x", "1200x", "1600x", image_format="webp" und einer Qualität zwischen 60 und 68. Gib jedem <img> srcset, sizes sowie width und height passend zum echten Seitenverhältnis; wenn du zuschneidest, füge eine Verhältnisklasse wie aspect-[4/3] mit object-cover hinzu, sonst verschiebt sich das Layout beim Laden des Bildes. Das Bild im ersten Bildschirmbereich bekommt fetchpriority="high" und wird nicht lazy geladen; alle anderen bekommen loading="lazy". Lade das Vorschaubild für Social Media als 1200x630-JPG mit site_fetch herunter.
6. Kleinigkeiten, die Punkte kosten: Füge ein SVG-Favicon mit <link rel="icon"> hinzu (sonst fordert der Browser /favicon.ico an, der 404 erscheint als Konsolenfehler und Best Practices fällt ab). Schreibe DOCTYPE in Großbuchstaben, verwende keine style-Attribute und lass keine Leerzeichen am Zeilenende. Verwende im sichtbaren Text von Telefonlinks statt Leerzeichen (die html-validate-Regel tel-non-breaking). Links in Menü, Footer, Breadcrumb und Überschriften müssen mindestens 44 Pixel hoch und breit sein. Binde keinen Google-Maps-iframe ein; die Website soll keine externen Anfragen stellen, zeige stattdessen die Adresse und einen Link "Route anzeigen".
7. Keine Anfrage darf die Website verlassen: Schriften, Skripte, Stile und Bilder liegen alle auf dem eigenen Server. Es gibt keinen Formular-Handler, daher ist das Kontaktformular ein method="get"-Formular, das auf https://wa.me/[WhatsApp-Nummer] zeigt, mit einer vorausgefüllten Textarea namens "text"; JavaScript ist nicht nötig.
Prüfschritte (in dieser Reihenfolge; erst wenn alle bestanden sind, gilt die Arbeit als erledigt):
1. Führe node build.mjs mit site_run_command aus, danach node seo-check.mjs: 0 Fehler, 0 Warnungen. Eine Warnung wegen doppeltem Inhalt bedeutet, dass sich zwei Seiten nicht genug unterscheiden; schreibe sie um.
2. node design-check.mjs: 0 Fehler. Wenn du einen bewegungsfreien Stil gewählt hast, melde die Warnung "keine Bewegung" als bewusste Entscheidung mit Begründung.
3. _kaynak/node_modules/.bin/html-validate für jede HTML-Datei: