Synchronisation von Markdown-Dokumentation ins CMS
Dieses Dokument ist ein operatives Runbook für vertrauenswürdige KI-/Operator-Workflows, die geänderte Markdown-Dokumentationsdateien aus dem Repository-Ordner docs/ in quellverknüpfte WebBlocks-CMS-Dokumentationsseiten synchronisieren. Es handelt sich ausschließlich um dokumentarische Produktanleitung. Es fügt keine Laufzeit-Synchronisations-Engine, keinen Endpunkt, keine Migration, keinen Artisan-Befehl, kein Skript, keinen Job, keine Queue, keine Datenbanktabelle, keinen Release-Prozess und keine Verbindung zu einem Live-Ziel hinzu.
Zweck
Markdown-Dateien unter docs/ bleiben die maßgebliche Quelle (Source of Truth) für die technische WebBlocks-CMS-Dokumentation. CMS-Dokumentationsseiten sind generierte Entwurfs- oder veröffentlichte Ableitungen dieser Markdown-Dateien. Der Workflow existiert, damit Dokumentationsänderungen aus der normalen Produktentwicklung auf einer CMS-Dokumentationssite abgebildet werden können, ohne die CMS-Seite als maßgebliche Kopie zu behandeln.
Dies ist ein KI-/Operator-Workflow, keine automatische Laufzeit-Synchronisation. Das CMS soll das Repository nicht überwachen, keine Markdown-Dateien abrufen und Inhalte nicht eigenständig verändern. Ein vertrauenswürdiger Operator oder ein KI-Tool plant, validiert und wendet optional sichere Entwurfs-Updates über die Internal Content API an.
Das Modell muss für jede Ziel-CMS-Installation oder Dokumentationssite funktionieren. Dokumentation und Berichte müssen generisch bleiben und dürfen keinen echten Ziel-Site-Namen, keine echte Domain, kein echtes API-Token, keinen lokalen absoluten Pfad, keine Roh-Logs und keine Umgebungswerte enthalten.
Kurze Operator-Befehle
Zukünftige Operatoren sollten knappe Prompts wie diese verwenden können:
Update the CMS documentation site from changed Markdown files under docs/.
Plan Docs -> CMS updates for the changed docs/ Markdown files.
Validate and apply safe draft updates for changed docs/ Markdown files; do not publish.
Aus diesen kurzen Befehlen muss die KI bzw. der Operator den Standard-Workflow ableiten:
- Markdown-Dateien unter
docs/als Kandidaten-Quellmenge verwenden - geänderte Dateien bevorzugen statt eines vollständigen Scans des docs-Baums
cms_sync-Frontmatter und Quellmetadaten lesen- die Ziel-CMS-API über
GET /webadmin/apientdecken - nur entdeckte Content-Verträge und Block-Handles verwenden
- quellverknüpfte CMS-Seiten zuerst über die Quellidentität und erst dann über den Pfad zuordnen
- pro Datei einen Plan und einen Validierungsbericht erstellen
- nur anwenden, wenn der Befehl das sichere Anwenden von Entwürfen ausdrücklich autorisiert oder der Benutzer den exakten Plan genehmigt
- niemals veröffentlichen, es sei denn, der Benutzer fordert die Veröffentlichung ausdrücklich an und das Token besitzt
content.publish
Update allein bedeutet: planen, validieren und sichere Entwurfsänderungen nur dann anwenden, wenn die Anweisung des Benutzers das Anwenden eindeutig autorisiert. Es umfasst weder Veröffentlichen, Navigationsänderungen, das Überschreiben von Live-Seiten, Medienimport noch Browser-Automatisierung.
Erkennung von Kandidatendateien
Verwenden Sie diese Reihenfolge, um zu entscheiden, welche Markdown-Dateien Kandidaten sind:
- Wenn der Benutzer eine explizite Dateiliste angibt, verwenden Sie diese Liste.
- Andernfalls verwenden Sie die im Repository geänderten Markdown-Dateien unter
docs/. - Beziehen Sie neu hinzugefügte, geänderte und umbenannte
.md-Dateien ein. - Schließen Sie archivierte Release-Changelog-Dateien unter
docs/releases/aus, sofern nicht ausdrücklich angefordert. - Schließen Sie interne KI-, Worklog-, Audit- oder private Planungsdokumente aus, wenn sie außerhalb der öffentlichen Dokumentation liegen oder als intern markiert sind.
- Schließen Sie Dateien ohne
cms_sync-Metadaten aus, sofern sich der Workflow nicht ausdrücklich im Planungs- oder Adoptionsmodus befindet. - Führen Sie einen vollständigen erneuten Scan von
docs/nur aus, wenn der Benutzer dies ausdrücklich anfordert.
Die Erkennung geänderter Dateien ist ausschließlich ein Schritt zur Quellauswahl. Sie darf den Git-Zustand nicht verändern, keine Dateien stagen, keine Release-Artefakte erstellen und keine Ziel-CMS-Installation aus Repository-Remotes ableiten.
Quellmetadaten
Markdown-Dateien nehmen über Frontmatter teil:
cms_sync: true
cms_site: docs-site
cms_locale: en
cms_path: /docs/contact-forms-and-messages
cms_title: Contact Forms and Messages
cms_layout: docs
cms_source_id: webblocks-cms:docs/contact-forms-and-messages.md
cms_site oben ist ein Beispiel für ein Ziel-Site-Handle, keine echte Domain und kein echter Installationsname. cms_source_id ist die stabile Quellidentität. Wenn eine Datei verschoben wird, kann die Quellidentität unverändert bleiben, sodass die Zielseite weiterhin sicher zugeordnet werden kann.
Metadatenregeln:
cms_source_idist die stabile Quellidentität.cms_pathist der kanonische Page-Translation-Pfad wie/docs/internal-content-api; stellen Sie neuen Docs-Seiten kein/pvoran.cms_layouthat den Standardwertdocs, wenn es fehlt.cms_localehat den Standardwerten, wenn es fehlt.cms_titleverwendet standardmäßig die erste H1 oder einen aus dem Dateinamen abgeleiteten Titel, wenn es fehlt.- Der Quell-Hash ist ein SHA-256-Hash des Markdown-Quellinhalts, der zur Erkennung von Änderungen dient.
- Fehlende
cms_sync-Metadaten bedeuten, dass die Datei im normalen Update-Modus übersprungen wird und für die Adoptionsplanung gemeldet werden kann.
Die erste Adoption kann als reiner Docs-Schritt zum Seeden von Metadaten erfolgen, bevor eine Live-CMS-Erkennung oder ein Anwendungsversuch stattfindet. Dieser Schritt sollte ausgewählten öffentlichen Dokumentations-Markdown-Dateien sicheres, generisches Frontmatter hinzufügen, damit spätere Pläne Quell-IDs, Pfade, Sprachen (Locales), Layouts und Titel ohne Raten identifizieren können. Ein vollständiger Adoptionsdurchlauf über docs/ sollte archivierte Release-Changelogs unter docs/releases/ weiterhin ausschließen, es sei denn, ein vertrauenswürdiger Operator genehmigt diese Archivseiten ausdrücklich.
CMS-Quellmetadaten
Eine quellverknüpfte CMS-Seite sollte Quellmetadaten in den Seiteneinstellungen führen. Für den dokumentierten Workflow reichen die Seiteneinstellungen aus; eine separate Quellzuordnungstabelle kann später nur dann in Betracht gezogen werden, wenn Reporting, Locale-übergreifende Zuordnung, Audit oder groß angelegte Operationen dies erfordern.
Empfohlene Struktur der Seiteneinstellungen:
{
"source_sync": {
"type": "markdown_documentation",
"source_id": "webblocks-cms:docs/contact-forms-and-messages.md",
"source_path": "docs/contact-forms-and-messages.md",
"source_sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"managed_slots": ["main"],
"last_synced_at": "2026-06-24T00:00:00Z"
}
}
Der Quellpfad ist beschreibend. Die stabile Identität ist source_id, der Änderungsdetektor ist source_sha256. Die Internal Content API akzeptiert dieses Objekt nur über die auf der Allowlist stehende Seiteneinstellung source_sync, persistiert es nach dem Anwenden und gibt dieselben sicheren Felder in den Seitenlisten-/Detailantworten für die Zuordnung zurück. Speichern Sie keine Tokens, Umgebungswerte, lokalen absoluten Pfade, Serverpfade oder andere Geheimnisse.
Seitenzuordnung
Die Zuordnungsreihenfolge muss deterministisch sein:
- Suchen Sie nach einer CMS-Seite mit übereinstimmender
source_sync.source_idoder äquivalentencms_source_id-Metadaten. - Falls gefunden, vergleichen Sie
source_sha256. - Falls keine Source-ID-Übereinstimmung existiert, suchen Sie nach einer Seite am kanonischen
cms_path. - Wenn der Pfad ohne passende Quellmetadaten existiert, melden Sie einen Adoptions- oder Konfliktprüfungsfall.
- Wenn der Pfad zu einer anderen
source_idgehört, melden Sie einen Konflikt und stoppen Sie für diese Datei. - Wenn am Pfad keine Seite existiert, planen Sie
create_draft_pagemitpage.pathgesetzt auf den kanonischencms_path.
Verwenden Sie den Inhaltsvergleich nicht als primären Zuordnungsmechanismus. Ordnen Sie zuerst über die stabile Quellidentität zu, dann über den Pfad nur für Adoptions- oder Konfliktprüfungen.
Standardentscheidungen
Verwenden Sie für geänderte Markdown-Dokumente diese Standardwerte:
- Wenn der Quell-Hash in den CMS-Metadaten unverändert ist, überspringen Sie die Datei.
- Wenn keine passende CMS-Seite existiert, planen Sie
create_draft_page. - Wenn eine passende Entwurfsseite existiert, planen Sie
replace_existing_draft_pagefür verwaltete, der Seite gehörende Slots. - Wenn nur eine passende veröffentlichte Seite existiert, ersetzen Sie sie nicht direkt, es sei denn, der Workflow verfügt über einen dokumentierten sicheren Entwurfs- oder Staging-Pfad und der Benutzer genehmigt diesen Pfad ausdrücklich.
- Der Standard-verwaltete Slot ist
main. - Bewahren Sie Header, Footer, deaktivierte Slots und Shared-Slot-Zuweisungen.
- Ersetzen Sie keinen von einem Shared Slot gespeisten Slot.
- Planen Sie die Navigation separat und wenden Sie Navigationsänderungen standardmäßig nicht an.
- Das Veröffentlichen ist standardmäßig niemals Teil des Anwendens von Inhalten.
Der Workflow sollte verwaltete, der Seite gehörende Slots aus der Markdown-Quelle neu generieren, statt zu versuchen, manuelle CMS-Bearbeitungen innerhalb dieser Slots zu erhalten. Quellverknüpfte Dokumentationsseiten sind reproduzierbare Ableitungen; Markdown bleibt maßgeblich.
Zuordnung von Markdown zu Blöcken
Erstellen Sie strukturierte Inhalte nur mit Handles, die von der Zielinstallation entdeckt wurden. Raten Sie niemals Block-Handles oder ähnliche Schreibweisen.
Praktische Zuordnungsregeln:
- H1 wird dem Seitentitel und/oder einem
content_header-Block zugeordnet, wenn dieses Handle verfügbar ist. - H2 und H3 werden
header-Blöcken zugeordnet, mit Ankern, wo unterstützt. - Absätze werden
rich-textzugeordnet. - Einfache, unformatierte kurze Texte dürfen
plain_textverwenden, aber nur dann, wenn das passender ist als Rich Text. - Listen werden einem Listenblock zugeordnet, wenn der aktuelle Content-Vertrag einen unterstützt; andernfalls bleiben sie in
rich-text. - Tabellen werden nach Möglichkeit einem
table-Block zugeordnet. - Code-Fences werden einem
code-Block zugeordnet. - Blockzitate werden je nach Bedeutung und entdeckten Verträgen
quote- oderalert-/Callout-artigen Blöcken zugeordnet. - Normale Markdown-Links bleiben Rich-Text-Links.
- CTA-artige Links dürfen nur dann zu
button_linkwerden, wenn sie bewusst handlungsorientiert sind. - Rohes HTML sollte vermieden werden;
htmlist nur ein geprüfter Fallback, wenn strukturierte Blöcke den Inhalt nicht abbilden können. - Bilder und Medien sollten nicht heruntergeladen oder importiert werden. Warnen Sie, sofern der Ziel-Workflow Referenzen auf vorhandene Medien nicht ausdrücklich unterstützt.
Bevorzugen Sie eine lesbare Dokumentationsstruktur gegenüber einem einzigen großen rich-text-Block. Eine normale Dokumentationsseite verwendet üblicherweise content_header oder aus der H1 abgeleiteten Titelinhalt, gefolgt von Überschriften, Rich Text, Listen, Tabellen und Codeblöcken innerhalb des verwalteten main-Slots.
API-Workflow
Der Workflow ist API-first:
- Beginnen Sie mit
GET /webadmin/api. - Verwenden Sie die zurückgegebenen Links für OpenAPI, den KI-Leitfaden, den Content-Vertrag, Blocktypen, Seiten, Navigation und Shared Slots.
- Bestätigen Sie, dass das Token über die für den angeforderten Modus erforderlichen Fähigkeiten verfügt.
- Lesen Sie vorhandene Seiten und Quellmetadaten über die API.
- Erstellen Sie Seitenpläne ausschließlich mit entdeckten Handles.
- Führen Sie vor dem Anwenden
POST /webadmin/api/content/validateaus. - Wenden Sie nur nach ausdrücklicher Genehmigung an oder wenn die Anweisung des Benutzers das sichere Anwenden von Entwürfen ausdrücklich autorisiert.
- Veröffentlichen Sie niemals, es sei denn, der Benutzer fordert die Veröffentlichung ausdrücklich an und das Token besitzt
content.publish. - Verwenden Sie niemals Browser-Automatisierung, wenn die API verfügbar ist.
API-Fehler sind Workflow-Feedback. Behandeln Sie 401-, 403- und 422-JSON-Antworten als Stopp- oder Überarbeitungssignale, folgen Sie den Discovery-/Dokumentationslinks und melden Sie einen sicheren, zusammengefassten Status, ohne Geheimnisse auszugeben.
Batch-Verhalten
Wenn mehrere geänderte Dokumente Kandidaten sind:
- verarbeiten Sie jedes Quelldokument als unabhängiges geplantes Seiten-Update
- validieren Sie alle Kandidaten-Seitenpläne, bevor ein Batch angewendet wird, es sei denn, der Operator wählt ausdrücklich das dateiweise Anwenden
- lassen Sie den Konflikt einer Datei nur diese Datei stoppen, ohne erfolgreiche Pläne für andere Dateien zu verbergen
- melden Sie übersprungene, geplante, validierte, angewendete, fehlgeschlagene und Konfliktdateien getrennt
- nehmen Sie keine Navigationsänderungen vor, nur weil sich mehrere Dokumente geändert haben
- halten Sie die Navigationsplanung als separaten expliziten Plan
Das Anwenden von Batches sollte konservativ erfolgen. Wenn der Benutzer das sichere Anwenden von Entwürfen angefordert hat, wenden Sie nur die validierten, entwurfssicheren Elemente an und lassen Sie Konflikte oder Prüffälle unangewendet.
Stoppbedingungen
Stoppen Sie vor dem Anwenden, wenn:
- das API-Token fehlt, ungültig ist oder widerrufen wurde
- die API-Discovery fehlschlägt
- OpenAPI, der Content-Vertrag oder die Blocktypen nicht gelesen werden können
- erforderliche Block-Handles nicht verfügbar sind
cms_pathmit einer anderencms_source_idin Konflikt steht- die Zielseite veröffentlicht ist und kein sicherer Entwurfs-Ersetzungspfad verfügbar ist
- der Plan einen von einem Shared Slot gespeisten Slot ersetzen würde
- die Validierung fehlschlägt
- der Benutzer das Anwenden nicht genehmigt hat und die Anweisung Dry-Run oder Plan-only war
Stoppen Sie außerdem vor dem Veröffentlichen, es sei denn, der Benutzer fordert die Veröffentlichung ausdrücklich an, der Plan wurde bereits sicher validiert/angewendet und das Token besitzt content.publish.
Berichtsformate
Dry-Run-Bericht
Docs -> CMS dry-run
Source path: docs/example.md
Source id: webblocks-cms:docs/example.md
Source hash: sha256:...
Target path: /docs/example
Target locale: en
Target layout: docs
Decision: create draft | replace draft | skip | conflict | needs review
Planned managed slots: main
Warnings: none | ...
Validation result: not run
Apply result: not performed
Preview URL: not available
Publish status: not performed
Validierungsbericht
Docs -> CMS validation
Source path: docs/example.md
Source id: webblocks-cms:docs/example.md
Source hash: sha256:...
Target path: /docs/example
Target locale: en
Target layout: docs
Decision: replace draft
Planned managed slots: main
Warnings: ...
Validation result: passed | failed
Validation details: safe summary of API feedback
Apply result: not performed
Preview URL: not available
Publish status: not performed
Anwendungsbericht
Docs -> CMS apply
Source path: docs/example.md
Source id: webblocks-cms:docs/example.md
Source hash: sha256:...
Target path: /docs/example
Target locale: en
Target layout: docs
Decision: replace draft
Planned managed slots: main
Warnings: ...
Validation result: passed
Apply result: applied | skipped | failed
Preview URL: /webadmin/pages/{page}/preview
Publish status: not performed
Gruppieren Sie bei Batches dieselben Felder unter den Abschnitten skipped, planned, validated, applied, failed, conflict und needs review.
Minimale Prompt-Beispiele
Nur planen:
Plan Docs -> CMS updates for the changed docs/ Markdown files. Do not validate or apply.
Nur validieren:
Validate Docs -> CMS content plans for the changed docs/ Markdown files. Do not apply.
Validieren und sichere Entwurfs-Updates anwenden:
Validate and apply safe draft updates for changed docs/ Markdown files; do not publish.
Planung eines vollständigen erneuten Scans:
Plan Docs -> CMS updates for all cms_sync Markdown files under docs/. Full rescan only; do not apply.
Nur Navigationsplanung:
Plan documentation navigation updates for changed docs/ Markdown files. Do not apply content or navigation.
Sicherheits- und Bearbeitungsregeln
Quellverknüpfte Dokumentationsseiten sollten im CMS als quellverwaltet markiert werden. Ein zukünftiger Bearbeitungsbildschirm kann Editoren warnen: "Diese Seite wird aus einer Markdown-Quelle synchronisiert. Bearbeiten Sie stattdessen die Quelldatei."
Manuelle CMS-Bearbeitungen an quellverknüpften Dokumentationsseiten werden bei der nächsten quellgesteuerten Neugenerierung der verwalteten Slots nicht erhalten. Header/Footer und Shared-Slot-Zuweisungen bleiben erhalten, da sie kein der Seite gehörender, verwalteter Markdown-Inhalt sind.
Dokumentation und Operator-Berichte dürfen keine Tokens, Geheimnisse, lokalen absoluten Pfade, Roh-Logs, Umgebungswerte, echten Ziel-Site-Namen oder echten Domains enthalten.