System-Fallstudie · Unter zwei Schul-Websites gebaut

Das SEO-Problem
brauchte Software.

KayJays und Kiakademie arbeiteten mit gegensätzlichen Publishing-Modellen und kamen beim selben Fehler an: Kursinformationen wurden in Seiten geschrieben, statt als Daten gepflegt. Ich habe das WordPress-System unter beiden Projekten entworfen, damit eine Quelle Menschen, Crawler und Antwortmaschinen versorgt.

STATUSIn Entwicklung · läuft auf Staging
EINSATZZwei zugesagte Schulen
ROLLEProblemdefinition · Spezifikation · Build-Governance
01

Das Problem

Zwei Umsetzungen.
Ein Fehlermuster.

Beide Schulen hatten einen für Menschen lesbaren Stundenplan. Keine hatte eine verlässliche Quelle für Kursdaten, die Website, Suchmaschinen und spätere Publishing-Oberflächen gemeinsam nutzen konnten.

KIAKADEMIE

Ein lesbarer Stundenplan, den Crawler nicht sehen.

Der gesamte Stundenplan liegt in der selbst gehosteten PHP-Anwendung Kursorganizer und wird über Advanced iFrame eingebettet. Die Inhalte fehlen im Seiten-HTML und in strukturierten Daten: für Menschen vorhanden, für Crawler und Antwortmaschinen unsichtbar.

KAYJAYS

Ein handgeschriebener Stundenplan, der abweichen konnte.

Das spiegelverkehrte Problem: 26 manuell gepflegte Stundenplan-Einträge, deren Kurscodes nicht mehr mit den zugrunde liegenden Datensätzen übereinstimmten. Kursinformationen lebten im Seitentext statt in einem wiederverwendbaren Datenmodell.

STUDIO CLASSES & SCHEDULE · DAS FEHLMUSTER

Zwei Schul-Websites, dasselbe Publishing-Problem

Bei Kiakademie liegt der Stundenplan in einer eingebetteten Anwendung. Bei KayJays wurden Kursinformationen von Hand in Seiten geschrieben. Das Plugin ersetzt beide Muster durch verbundene Datensätze und eigenes Markup.

KIAKADEMIEStundenplan in einer Einbettung
<div>
  <iframe src="kursorganizer…">
  </iframe>
</div>

<!-- keine Kursnamen -->
<!-- keine Zeiten -->
<!-- keine Lehrkräfte -->
<!-- keine strukturierten Daten -->
AUS DEM HTML EXTRAHIERBAR
Kurse0
Wöchentliche Stunden0
Lehrkräfte0
Strukturierte Datenkeine
KAYJAYS · STAGINGDatensätze als eigenes Markup
<section aria-label="Stundenplan">
  <div>Montag</div>
  <span>17:00</span>
  <a>Hip-Hop für Kids</a>
  <a>Jessy</a>
</section>

<script type="application/ld+json">
  { "@type": "Course" }
</script>
AUS DEM HTML EXTRAHIERBAR
Kurse9
Wöchentliche Stunden26
Veröffentlichte Lehrkräfte13
Strukturierte DatenCourse + CourseInstance
Dies ist kein Vorher-Nachher-Vergleich derselben Seite. Es zeigt zwei gegensätzliche Umsetzungen desselben Problems: Informationen leben außerhalb eines gemeinsamen Datenmodells. Die Zahlen rechts stammen aus KayJays Staging.
02

Die These

Eine Regel verändert
das Publishing-Modell.

„Lehrkräfte, Kurse und Stundenplan-Informationen sollten nur im Plugin eingetragen werden. Sie sollten niemals manuell auf der Website geschrieben werden.“

Vier verbundene Datentypen—Kurse, Stunden, Trainer:innen und Standorte—speisen Stundenplan, Kursseiten, Trainer:innen-Seiten und Schema aus derselben Quelle. Genau diese gemeinsame Quelle verhindert Abweichungen.

FÜR DIE VORHANDENE WEBSITE ENTWORFEN

Die Publishing-Schicht unterstützt WordPress-Blöcke und Shortcodes. Avada-Builder-Seiten können keine Blöcke aufnehmen; deshalb war die Kompatibilität mit dem bestehenden Seitensystem Teil der Architektur und kein später Kompromiss.

STUDIO CLASSES & SCHEDULE · DER MECHANISMUS

Eine Quelle, sechs Oberflächen

Vier Datentypen werden einmal gepflegt. Jede öffentliche und interne Oberfläche wird bei der Anfrage daraus erzeugt—deshalb können Stundenplan, Kursseite und strukturierte Daten nicht auseinanderlaufen.

EINMAL EINGEGEBEN
Kursdas Angebot
Stundeein wöchentlicher Termin
Trainer:inName, Foto, Profil
StandortStudio, Raum, Adresse
EIN PLUGINStudio Classes
& Schedule
AUS DEN DATEN ERZEUGT
Wochenplanöffentlicher Stundenplan
KursseiteInhalte, Fakten, Zeiten
Trainer:innen-SeiteRaster und Profil
JSON-LDCourse + CourseInstance
AnwesenheitslisteAnsicht für Lehrkräfte
BestätigungsmailAnmeldebestätigung
Die Regel, die das Plugin durchsetzt: „Lehrkräfte, Kurse und Stundenplan-Informationen sollten nur im Plugin eingetragen werden. Sie sollten niemals manuell auf der Website geschrieben werden.“

STUDIO CLASSES & SCHEDULE · VERBUNDENES PUBLISHING

Einen Datensatz ändern. Jede verbundene Oberfläche folgt.

Diese Regel gilt für Kurse, Stunden, Trainer:innen und Standorte. Jeder Datensatz ist eine Quelle für mehrere Ausgaben—nicht nur ein Eintrag im Backend. Welche Ausgaben aktiv sind, richtet sich nach der jeweiligen Schule.

01

Kurs

Kurskarten · Kursseite · Filter · Course-JSON-LD

02

Stunde

Wochenplan · Verfügbarkeit · Anmeldung · CourseInstance

03

Trainer:in

Team-Raster · Profil · verlinkte Namen · Person/instructor

04

Standort

Stundenplan · Kursfakten · Standort-Verweise · Place/PostalAddress

KONKRETES BEISPIEL

Ein Trainer:innen-Datensatz: Putri

Das Prinzip darunter ist bei allen vier Datentypen dasselbe.

EIN DATENSATZPutri Soedarsono
Foto
Beitragsbild
Profil
Rolle + Texte
Zuordnung
Shuffle Dance
HIER EINMAL ÄNDERN
AUF DER WEBSITE NEU ERZEUGT
01
Team-RasterName, Porträt und berechnete Unterrichtsstile
02
ProfilseiteRolle, Kurz-Bio und aktuell zugeordnete Kurse
03
WochenplanIhr Name ist bei jeder Stunde mit ihrem Profil verlinkt
04
KursseitenProfil-Link und Lehrkraft-Info überall, wo sie unterrichtet
05
Strukturierte DatenPerson- und instructor-Knoten aus derselben Beziehung
Putri Soedarsonos automatisch erzeugte Profilseite auf KayJays Staging
STAGING-AUSGABE · PROFILSEITE

Auch das Profil ist eine erzeugte Oberfläche.

Porträt, Rolle und Profiltext kommen aus Putris Lehrkraft-Datensatz. Die Kursliste darunter kommt aus ihrer aktuellen Zuordnung—es gibt keine zweite Liste, die jemand synchron halten muss.

Das ist referenziertes Publishing, kein Kopieren. Dasselbe Prinzip verbindet Kurs, Stunde, Trainer:in und Standort mit ihren sichtbaren Seiten, Links und strukturierten Daten. Stunden- und Standort-Ausgaben werden dort eingesetzt, wo die jeweilige Schule sie braucht.
03

Öffentliche Darstellungsformen

Ein Datenmodell.
Zwei Wege zum passenden Kurs.

Eine Schule kann dieselben Stundendatensätze als ausführliche Liste oder kompaktes Wochenraster veröffentlichen. Die Nutzung verändert sich; die Quelle für Kurs, Lehrkraft, Zeit und Verfügbarkeit bleibt dieselbe.

Staging-Ausgabe: Listenansicht mit direkter Anmeldung
STAGING-AUSGABE

Listenansicht mit direkter Anmeldung

Verfügbarkeit, passende Termine und Anmeldung stehen direkt bei der Stunde, die Besucher:innen gewählt haben.

Staging-Ausgabe: Wochenraster mit Kursfilter
STAGING-AUSGABE

Wochenraster mit Kursfilter

Dieselben Datensätze werden zu einer kompakten Wochenansicht für Besucher:innen, die zuerst überblicken und vergleichen möchten.

04

Maschinenlesbares Ergebnis

Das strukturelle Ergebnis
ist der Beleg.

Ein Stundenplan, der zuvor in einem iFrame oder handgeschriebenem Seitentext lag, wird zu eigenem HTML plus strukturierten Daten auf der Domain der Schule. Daraus wird kein Leistungswert abgeleitet; das Ergebnis ist ein technisch lesbares Publishing-System.

STUDIO CLASSES & SCHEDULE · DIE AUSGABE

Was eine Antwortmaschine zitieren kann

Jeder strukturierte Fakt wird zum Zeitpunkt der Anfrage aus den Datensätzen erzeugt und kann deshalb nicht vom sichtbaren Stundenplan abweichen. Beschreibende Texte bleiben bewusst redaktionell verfasst.

{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "Hip-Hop",
  "provider": { "@type": "Organization" },
  "hasCourseInstance": [{
    "@type": "CourseInstance",
    "courseMode": "Onsite",
    "courseSchedule": {
      "@type": "Schedule",
      "startTime": "17:00",
      "repeatFrequency": "P1W",
      "scheduleTimezone": "Europe/Berlin",
      "byDay": "https://schema.org/Monday"
    },
    "instructor": {
      "@type": "Person",
      "name": "Jessy"
    }
  }]
}
hasCourseInstance

Ein Knoten pro wöchentlicher Stunde, direkt aus den zugehörigen Datensätzen.

byDay — nie null

Stundenplan und Schema lesen dasselbe Wochentagsfeld.

scheduleTimezone

Eine benannte Stadt-Zeitzone statt eines fehleranfälligen UTC-Offsets.

instructor

Ein Person-Knoten mit dem Profil der Lehrkraft; auch Co-Teaching bleibt abbildbar.

So ausgegeben, leicht gekürzt. Standorte können zusätzlich Place und PostalAddress tragen; beschreibende Kursinhalte werden als description übernommen.
05

Interface-Studien

Für die Arbeit entworfen,
die Menschen wirklich tun.

Dies sind Gestaltungsstudien aus dem Umsetzungsprozess, keine Screenshots live eingesetzter Kundensysteme. Gemeinsam zeigen sie, wie dieselben Datensätze fokussierte Ansichten für Betreiber:innen, Lehrkräfte und Website-Besucher:innen versorgen.

Marke und Team-Bilder von KayJays werden mit Erlaubnis gezeigt. Mockups und Staging-Ausgaben bleiben gekennzeichnet, damit sie nicht mit live eingesetzten Ansichten verwechselt werden.

06

Prozess und Governance

Die Software zählt.
Das Betriebsmodell zeigt das Niveau.

01 · Spezifizieren

Das System vor dem Bauen aufschreiben.

Rund ein Dutzend schriftliche Spezifikationen definierten Datensätze, Beziehungen, Publishing-Verhalten und Grenzen vor dem Code.

02 · Hinterfragen

Den Plan prüfen, der tatsächlich gebaut wird.

Jede Spezifikation erhält eine adversariale Planprüfung—auf der Version, die als Nächstes umgesetzt wird, nicht auf einer bereits überholten Fassung.

03 · Verifizieren

Widerspruch nutzen, um Fehler zu finden.

Eine Prüfung des Spezifikationspakets durch ein zweites Modell ergab acht Hinweise. Sechs waren echte Defekte und wurden vor der weiteren Umsetzung behoben.

04 · Deployen

Das laufende System hat Vorrang vor dem Log.

Die Plugin-Seite der Website ist die Quelle der Wahrheit. Diese Regel deckte einen Log-Eintrag über einen Upload auf, der nie angekommen war.

07

Scope-Disziplin

Zur Arbeit gehört auch,
bewusst nicht zu bauen.

WordPress.org-Veröffentlichung

Bewusst zurückgestellt. Distribution ist nicht das nächste Problem, das gelöst werden muss.

Warteliste und kostenpflichtiges Paket

Aufgeschoben, bis eine Klasse tatsächlich voll ist und der Bedarf entsteht.

Buchung bei Kiakademie

Nur Darstellungsparität. Die Buchung bleibt in dem System, das die Schule bereits nutzt.

08

Grenze der Belege

Stark genug
ohne erfundene Ergebnisse.

In Entwicklung, läuft auf Staging, zwei zugesagte Schulen. Noch ist nichts live; deshalb beansprucht diese Seite keine Auswirkungen auf Traffic, Rankings, Buchungen oder Conversions.

Der Beleg liegt in der Diagnose, der gemeinsamen Datenarchitektur, der maschinenlesbaren Ausgabe, der Prüfdisziplin und den Entscheidungen, die den Build innerhalb seines echten Umfangs hielten.