WebBlocks CMS Page-Converter-Roadmap
Zweck
Der Page Converter ist eine vorgeschlagene, wiederverwendbare Admin-Funktion für WebBlocks CMS, die eingefügtes oder hochgeladenes statisches HTML in strukturierte CMS-Seiten aus erstklassigen Blöcken umwandelt.
Die Funktion soll dabei helfen, statische Sites, handgeschriebene HTML-Seiten, Dokumentationsseiten, Marketingseiten und Altinhalte in WebBlocks CMS zu migrieren, ohne den gesamten Seiteninhalt in einen einzigen Safe-HTML-Block zu pressen.
Das Ziel ist nicht, einen sitespezifischen Importer für webblocksui.com zu erstellen. Der Converter soll eine generische CMS-Fähigkeit sein, die für jede von einer WebBlocks-CMS-Installation verwaltete Site genutzt werden kann.
Aktueller Implementierungsstand
Das erste Laufzeit-Fundament steht: Admin -> Pages -> Page Converter rendert das eingeschränkte Ziel-/Quellformular und validiert eingefügte oder hochgeladene .html- / .htm-Eingaben, einschließlich Zielpfadkonflikten. Der Analyzer normalisiert das übermittelte HTML, extrahiert den wahrscheinlichsten Inhaltsbereich und zeigt geordnete Vorschläge für strukturierte Blöcke mit Konfidenzwerten und Warnungen an. Der Review-Bildschirm serialisiert diese Vorschläge in eine signierte Konvertierungsplan-Payload; anschließend validiert Create draft page die signierten Zieldetails erneut und kann eine neue Entwurfsseite mit unterstützten Main-Slot-Blöcken erstellen. Die Entwurfserstellung unterstützt header, plain_text, rich-text, code, table, quote, expliziten html-Fallback, button_link, list als Rich Text, callout als Alert, section, content_header, hero, cta sowie explizite card-Hüllen mit signierten card_header- / card_body- / card_footer-Kindern. Abschnittsartige <section>-Fragmente werden als Section-Containerblöcke erhalten, und ihre verwertbaren Überschriften, Texte, Links, Promo-Inhalte, Kartenraster und benachbarten Details-Gruppen werden als Kindvorschläge ausgegeben, statt als Abschnittstext gespeichert zu werden. Benachbarte <details>-Gruppen werden jetzt zu einem signierten accordion-Vorschlag mit expliziten accordion_item-Kindern, und die Entwurfserstellung schreibt diese Elemente in den bestehenden faq-Kindzeilen-Kontrakt, wenn sowohl der Blocktyp accordion als auch faq veröffentlicht ist. Kartenvorschläge ohne explizite verwertbare Regionskinder und Akkordeonvorschläge ohne verwertbaren Element-Kontrakt werden übersprungen, statt in unsicheres HTML abgeflacht zu werden. Medienbasierte Vorschläge wie image und gallery werden weiterhin übersprungen und gemeldet, ohne Medien zu importieren.
Ein kompakter Fixture-Pilot im WebBlocks-UI-Stil deckt jetzt ein realistisches statisches Doku-/Marketing-Fragment mit <main>, Content-Header-/Body-Wrappern, Promo, Kartenraster, Buttons, Code, Tabelle, benachbarten Details und entfernten Bildmedien ab. Das Fixture stellt sicher, dass die Analyse viele strukturierte Vorschläge statt eines einzigen Safe-HTML-Fallbacks erzeugt, einen signierten Plan und eine Entwurfsseite erstellt, explizite Kartenregionen und Footer-Button-Links erhält, wo der aktuelle Block-Kontrakt sie abbilden kann, und medienbasierte Fragmente nur mit Warnung übersprungen lässt — ohne Dateien zu importieren, Seiten zu veröffentlichen, Navigation zu erstellen, Shared Slots anzufassen, entfernte URLs abzurufen oder Inhalte zu überschreiben.
Grundprinzip
Der Converter muss strukturierte CMS-Blöcke gegenüber einem einzelnen Safe-HTML-Block bevorzugen.
Schlechte Ausgabe:
Page
└── Main Slot
└── Safe HTML Block
└── entire page main HTML
Bevorzugte Ausgabe:
Page
└── Main Slot
├── Content Header
├── Hero
│ └── Button
├── Section
│ └── Columns
│ ├── Column Item
│ ├── Column Item
│ └── Column Item
├── Rich Text
├── Code
├── Table
├── Card
│ ├── Card Header
│ ├── Card Body
│ └── Card Footer
└── Accordion
Safe HTML ist nur als sichtbarer, überprüfbarer Fallback für Fragmente erlaubt, die noch nicht durch strukturierte CMS-Blöcke dargestellt werden können.
Produktpositionierung
Empfohlener Ort im Admin-Bereich:
Admin -> Pages -> Page Converter
Das Werkzeug gehört in die Nähe von Seiten, weil seine Ausgabe ein CMS-Seitenentwurf ist. Es ist ein redaktionelles Inhaltswerkzeug, nicht in erster Linie ein operatives Wartungswerkzeug.
Möglicher sekundärer Einstiegspunkt:
Admin -> Pages -> Import Page -> Convert HTML
Der Haupt-Flow des Page Converters sollte jedoch einen eigenen Bildschirm haben, da er Quelleingabe, Analyse, Review, Warnungen und die finale Entwurfserstellung umfasst.
Zielnutzer
super_admin: kann den Page Converter für alle Sites verwenden.site_admin: kann den Page Converter für zugewiesene Sites verwenden.editor: später möglich; für das MVP konservativ bleiben und anhand der bestehenden Berechtigungen zur Seitenerstellung entscheiden.
Erzeugte Seiten müssen immer als draft beginnen.
Der Converter darf niemals automatisch veröffentlichen.
MVP-Umfang
Im MVP enthalten
- Admin-Bildschirm im Bereich Seiten.
- Ziel-Site-Auswahl, begrenzt durch den Benutzerzugriff.
- Ziel-Sprachauswahl (Locale).
- Auswahl des Ziel-Seitenlayouts.
- Feld für den Seitentitel.
- Slug-/Pfadfeld.
- Textbereich für Quell-HTML.
- Datei-Upload für Quell-HTML mit
.htmlund.htm. - Analyze-Aktion, die einen Konvertierungsplan im Arbeitsspeicher erstellt.
- Review-Bildschirm mit vorgeschlagenen Blöcken, Konfidenz, Warnungen und Fallbacks.
- Finale
Create Draft Page-Aktion. - Pfadkonflikt-Validierung.
- Seitenerstellung ausschließlich als Entwurf.
- Erstellung strukturierter Blöcke für Zuordnungen mit hoher Konfidenz.
- Explizite Berichterstattung über Safe-HTML-Fallbacks.
- Fokussierte Tests.
- Aktualisierungen von Dokumentation und Changelog.
Nicht im MVP enthalten
- Abruf entfernter URLs.
- Website-Crawling.
- Mehrseitiger ZIP-Import.
- Stapelkonvertierung.
- Screenshot-Vergleich.
- AI-API-Integration.
- Automatisches Veröffentlichen.
- Überschreiben oder Ersetzen einer bestehenden Seite.
- Download/Import von Mediendateien von entfernten URLs.
- Destruktives Aufräumen alter Seiten oder Safe-HTML-Blöcke.
Quelleingabemodi
MVP-Eingabemodi
| Eingabemodus | Status | Anmerkungen |
|---|---|---|
| HTML einfügen | MVP | Sicherster Ausgangspunkt. |
| .html- / .htm-Datei hochladen | MVP | Nützlich für statische Site-Exporte. |
| Entfernte URL abrufen | Später | Erfordert SSRF-Schutz und Netzwerkrichtlinie. |
| ZIP mit Seiten hochladen | Später | Erfordert Stapel-Review und Konfliktbehandlung. |
| Site crawlen | Später | Erfordert Umfangskontrollen, Ratenbegrenzungen und URL-Allowlists. |
Admin-Ablauf
Schritt 1: Quelle und Ziel
Der Admin wählt:
- Ziel-Site
- Ziel-Sprache (Locale)
- Seitenlayout
- Seitentitel
- Seiten-Slug/Pfad
- Konvertierungsprofil
- Quell-HTML als Einfügung oder hochgeladene Datei
Schritt 2: Analysieren
Der Converter analysiert das HTML und erzeugt einen Konvertierungsplan, ohne Seiteninhalte in die Datenbank zu schreiben.
Beispiel für eine Analysezusammenfassung:
Detected page title: Admin Standards
Suggested path: /patterns/admin-standards
Suggested layout: docs
Detected blocks:
- 1 Content Header
- 8 Header blocks
- 12 Rich Text blocks
- 4 Card blocks
- 2 Table blocks
- 3 Code blocks
- 0 Safe HTML fallbacks
Warnings:
- Theme switcher controls ignored.
- Sidebar navigation detected; review whether it belongs in a Shared Slot.
Schritt 3: Review
Der Review-Bildschirm zeigt jeden vorgeschlagenen Block:
| Reihenfolge | Quellfragment | Vorgeschlagener Block | Konfidenz | Warnung |
|---|---|---|---|---|
| 1 | Content Header | 96% | ||
| 2 | Section | 92% | ||
| 3 | Card | 94% | ||
| 4 | Code | 99% | ||
| 5 | Unbekanntes Widget-HTML | HTML-Fallback | 41% | Manuelle Überprüfung erforderlich |
Der Review-Bildschirm sollte klar trennen:
- strukturierte Blöcke mit hoher Konfidenz
- Vorschläge mit mittlerer Konfidenz
- ignorierte Fragmente
- Safe-HTML-Fallback-Fragmente
- entfernte unsichere Inhalte
- Medienwarnungen
Schritt 4: Entwurfsseite erstellen
Erst nach expliziter Bestätigung erstellt das Werkzeug eine neue Entwurfsseite.
Der Vorgang sollte transaktional sein und Folgendes erstellen:
- Seitendatensatz
- Seitenübersetzung
- erforderliche Seiten-Slots
- Blockbaum
- Blockübersetzungen
- Blockeinstellungen und -beziehungen
- Revisionsmetadaten, wo bestehende Revisionsdienste dies unterstützen
Das Werkzeug darf die Seite nicht veröffentlichen.
Konvertierungsprofile
Profile ermöglichen unterschiedliche Strenge bei der Zuordnung, ohne den Converter sitespezifisch zu machen.
Generische Marketingseite
Am besten für Landingpages und Produktseiten geeignet.
Priorisiert:
- Hero
- Section
- Columns und Column Item, wo eine spätere strukturierte Zuordnung die Quelle sicher abbilden kann
- Card
- Button Link
- CTA
- Image
- Gallery
- Quote
Generische Doku-Seite
Am besten für Dokumentation und Langform-Inhalte geeignet.
Priorisiert:
- Content Header
- Header
- Rich Text
- Code
- Table
- List
- Callout
- Accordion
- TOC
HTML im WebBlocks-UI-Stil
Am besten für Seiten geeignet, die bereits WebBlocks-UI-Klassennamen verwenden.
Priorisiert klassenbasierte Zuordnung für:
wb-sectionwb-content-headerwb-promowb-cardwb-gridwb-btnwb-alertwb-gallerywb-rich-textwb-link-list
Dieses Profil sollte generisch und wiederverwendbar bleiben. Es darf keine bestimmte Domain wie ui.webblocksui.com voraussetzen.
Konservativ
Am besten geeignet, wenn das Quell-HTML unordentlich oder unbekannt ist.
Priorisiert:
- weniger Vermutungen
- mehr Rich-Text-Gruppierung
- explizite Warnungen
- sichtbare Fallbacks
Regeln für die Zuordnung von HTML zu CMS-Blöcken
Generische semantische Regeln
| HTML-Muster | CMS-Block |
|---|---|
| h1-h6 | header |
| einfacher Absatz | plain_text oder rich-text |
| mehrere Absätze mit Inline-Formatierung | rich-text |
| ul, ol, li | list oder rich-text je nach Kontext |
| pre > code | code |
| table | table |
| blockquote | quote |
| figure > img | image-Platzhalter plus Medienwarnung, wenn kein Medienimport verfügbar ist |
| wiederholte Karten oder wiederholte Zellen | explizite card-Regionen, wo vorhanden; columns + column_item bleibt eine spätere strukturierte Zuordnung |
| details > summary-Gruppen | accordion, wo möglich |
| unbekanntes, aber sicheres redaktionelles Markup | html-Fallback |
Klassenbasierte WebBlocks-UI-Regeln
| HTML-Muster | CMS-Block |
|---|---|
| .wb-section | section |
| .wb-content-header | content_header |
| .wb-promo | hero oder cta |
| .wb-card | card |
| .wb-card-header | card_header |
| .wb-card-body | card_body |
| .wb-card-footer | card_footer |
| .wb-grid, .wb-grid-2, .wb-grid-3, .wb-grid-4 | direkte .wb-card-Kinder werden zu expliziten card-Plänen; generische Spalten bleiben späteren Versionen vorbehalten |
| .wb-btn Anchor/Button | button_link, wenn sicher darstellbar, einschließlich innerhalb von Karten-Footern |
| .wb-alert, .wb-callout | callout |
| .wb-gallery | gallery |
| .wb-rich-text | rich-text |
| .wb-link-list | zukünftiges toc oder strukturierte Liste je nach Kontext |
| wiederholte .wb-stat-Karten | zukünftige columns mit statistikartigen Elementen, wo unterstützt |
Safe-HTML-Fallback-Richtlinie
Safe HTML muss ein letztes Mittel sein, nicht die Standard-Konvertierungsausgabe.
Zulässige Fallback-Fälle
- Das CMS hat noch keinen erstklassigen Block für das Fragment.
- Das Markup ist zu komplex, um es in der aktuellen Version sicher zuzuordnen.
- Die Konfidenz des Converters ist niedrig.
- Der Admin akzeptiert den Fallback während des Reviews ausdrücklich.
Fallback-Anforderungen
Jeder Fallback muss im Review-Bildschirm angezeigt werden mit:
- Vorschau des Quellfragments
- Begründung
- Konfidenzwert
- Warntext
- ungefährer Position auf der Seite
Fallback-Anti-Ziel
Der Converter darf keinen einzigen großen Safe-HTML-Block für den gesamten main-Inhalt erstellen, wenn sinnvolle strukturierte Blockzuordnungen verfügbar sind.
Bereinigung und Sicherheit
Der Converter sollte die strukturierte Textkonvertierung aggressiv bereinigen.
Entfernen oder ablehnen:
<script>- Ereignisattribute wie
onclick javascript:-URLsiframeobjectembed- gefährliche Inline-Styles, wo nicht ausdrücklich unterstützt
- unbekannte ausführbare Attribute
Der Abruf entfernter URLs ist vom MVP ausgeschlossen, um SSRF-Risiken zu vermeiden. Wird er später hinzugefügt, muss er Folgendes blockieren:
- localhost
- private IP-Bereiche
- Link-Local-Adressen
- Metadatendienste
- interne Hostnamen
- Weiterleitungen zu blockierten Adressen
Medienbehandlung
Das MVP sollte keinen vollständigen Medienimport versuchen.
Für Bilder:
- Bildreferenzen erkennen
- Bildplatzhalter nur erstellen, wenn ein Abgleich mit bestehenden CMS-Medien implementiert ist
- andernfalls eine Medienwarnung melden
- Alt-/Beschriftungsvorschläge für die manuelle Verwendung erhalten
Spätere Phasen können ergänzen:
- Hochladen lokaler Bilddateien mit einem HTML-Archiv
- Abgleich bestehender Medien über Dateiname/Hash
- Import von Bildern aus ZIP-Bundles
- Umschreiben von Bildblöcken auf CMS-Medien-IDs
Vorgeschlagene technische Architektur
Controller und Requests
PageConverterController
PageConverterAnalyzeRequest
PageConverterCreateRequest
Controller sollten schlank bleiben und Parsing/Konvertierung an Services delegieren.
Services
Services/PageConverter/PageHtmlNormalizer
Services/PageConverter/PageHtmlSegmenter
Services/PageConverter/PageConversionEngine
Services/PageConverter/PageConversionProfileRegistry
Services/PageConverter/BlockSuggestionMapper
Services/PageConverter/ConvertedPageDraftCreator
Services/PageConverter/HtmlSafetySanitizer
DTOs / Value Objects
ConvertedPagePlan
ConvertedSlotPlan
ConvertedBlockPlan
ConversionWarning
ConversionSourceFragment
ConversionProfile
ConversionConfidence
Laufzeitablauf
HTML input
→ normalize
→ extract body/main
→ segment meaningful regions
→ map segments to block suggestions
→ calculate confidence and warnings
→ render review screen
→ create draft page in transaction
Regeln für die Datenerstellung
Beim Erstellen der Entwurfsseite:
- Datenbanktransaktionen verwenden
- nur eine neue Seite erstellen
- im MVP niemals bestehende Seiten überschreiben
- Seite als
drafterstellen - Standardübersetzung für die gewählte Sprache (Locale) erstellen
- erforderliche Slots für das gewählte Layout erstellen
- im MVP nur seiteneigene Blöcke erstellen
- keine Shared Slots automatisch erstellen
- nicht automatisch veröffentlichen
- Revisionsmetadaten aufzeichnen, wenn bestehende Services dies unterstützen
Autorisierungsregeln
Das MVP sollte den bestehenden Regeln für Seitenerstellung und Site-Zugriff folgen.
Empfohlener Zugriff:
super_admin: alle Sitessite_admin: zugewiesene Siteseditor: zurückstellen oder nur erlauben, wenn die normale Seitenerstellung es zulässt
Alle Site-Auswahlfelder müssen auf die für den authentifizierten Benutzer zugänglichen Sites beschränkt sein.
Pfad- und Konfliktregeln
Der Converter muss validieren:
- die gewählte Site existiert und ist zugänglich
- die gewählte Sprache (Locale) existiert und ist für die Site aktiviert
- das gewählte Layout existiert und ist aktiv
- der Titel ist vorhanden
- der Pfad/Slug ist gültig
- der Pfad kollidiert nicht mit einer bestehenden Seitenübersetzung für dieselbe Site und Sprache (Locale)
Das MVP darf eine bestehende Seite nicht ersetzen, in sie hineinmergen oder sie aktualisieren.
Admin-UI-Standards
Bestehende WebBlocks-CMS-Admin-Muster verwenden:
- kartenbasierte Formulare
- kompakte Review-Tabellen
- klare Warnungen
- Modal nur, wenn sinnvoll
- kein Browser-Confirm für destruktive Aktionen
- kein eigenes CSS/JS, sofern nicht notwendig
- ausschließlich WebBlocks-UI-Klassen
Der Review-Bildschirm sollte es leicht machen, folgende Fragen zu beantworten:
- Was wird erstellt?
- Welche Teile sind strukturierte Blöcke?
- Welche Teile sind Fallback-HTML?
- Welche Teile wurden ignoriert?
- Was erfordert eine manuelle Überprüfung?
Testplan
Fokussierte Feature-Tests sollten abdecken:
- autorisierte Benutzer können den Page Converter öffnen
- nicht autorisierte Benutzer können nicht auf unzugängliche Sites zugreifen
- eingefügtes HTML kann analysiert werden
- eine hochgeladene
.html-Datei kann analysiert werden - nicht unterstützte Dateitypen werden abgelehnt
- Skripte und unsichere Attribute werden aus der strukturierten Konvertierung entfernt
h1/h2wird einem Header-Block-Vorschlag zugeordnet- Absätze werden Rich-Text-/plain_text-Vorschlägen zugeordnet
pre > codewird einem Code-Vorschlag zugeordnettablewird einem Tabellen-Vorschlag zugeordnet.wb-cardwird einem Karten-Vorschlag zugeordnet.wb-grid-Kartenelemente werden expliziten Kartenregion-Vorschlägen zugeordnet- unbekannte Fragmente werden als Fallback gemeldet, nicht stillschweigend verworfen
- ein Zielpfadkonflikt blockiert die Entwurfserstellung
- eine Entwurfsseite wird nur nach explizitem Absenden erstellt
- die erstellte Seite wird nicht veröffentlicht
- keine bestehende Seite wird überschrieben
Dokumentationsaktualisierungen
Hinzufügen oder aktualisieren:
docs/page-converter.mddocs/index.mdREADME.mdCHANGELOG.md
Die Dokumentation sollte enthalten:
- Zweck der Funktion
- Quelleingabemodi
- Konvertierungsprofile
- Safe-HTML-Fallback-Richtlinie
- Sicherheitsausschlüsse
- MVP-Einschränkungen
- zukünftige Roadmap
Formulierungsentwurf für das Changelog
## Unreleased
- Add a reusable admin Page Converter foundation for turning pasted or uploaded static HTML into draft CMS pages made from structured blocks, with an analysis/review step, Safe HTML fallback reporting, and draft-only creation.
Implementierungsphasen
Phase 0: Nur Dokumentation
Diese Roadmap erstellen und eine kanonische CMS-Dokumentationsseite für die Page-Converter-Planung hinzufügen.
Keine Laufzeitänderungen.
Phase 1: Schreibgeschützter Analyzer
Nur Admin-Bildschirm und Analyseablauf hinzufügen.
- Eingefügtes HTML akzeptieren.
- Konvertierungsplan erzeugen.
- Review-Bildschirm anzeigen.
- Noch keine Seiten erstellen.
Phase 2: Entwurfsersteller
Explizite Erstellen-Aktion hinzufügen.
- Entwurfsseite erstellen.
- Main-Slot-Blöcke erstellen.
- Pfadkonflikte validieren.
- Warnungen in der Benutzeroberfläche erhalten.
Phase 3: HTML-Datei-Upload
Upload-Unterstützung für .html / .htm hinzufügen.
Phase 4: Bessere strukturierte Zuordnungen
Zuordnungen verbessern für:
- tiefere Kartenregion-Kinder
- Spalten
- reichhaltigere Darstellung von Akkordeon-Elementen über den aktuellen Klartext-
faq-Kindkontrakt hinaus - Tabellen
- Listen
- Callouts
- verwaltete Button-Kinder für Hero/CTA
Phase 5: Medienbewusste Konvertierung
Optionale Unterstützung für lokale Bildpakete oder den Abgleich bestehender Medien hinzufügen.
Phase 6: Stapelkonvertierung
Mehrseitige Workflows hinzufügen:
- ZIP-Upload
- Seiteninventar
- Review pro Seite
- Stapel-Entwurfserstellung
Phase 7: Optionaler URL-Abruf
Erst nachdem strikte SSRF- und Netzwerksicherheitsregeln implementiert wurden.
Abnahmekriterien für das MVP
Das MVP ist erfolgreich, wenn:
- Der Admin eine statische HTML-Seite einfügen oder hochladen kann.
- Das CMS einen überprüfbaren Konvertierungsplan anzeigt.
- Gängige HTML-Strukturen zu strukturierten CMS-Blöcken werden.
- Der Safe-HTML-Fallback sichtbar und begrenzt ist.
- Der Admin eine neue Entwurfsseite erstellen kann.
- Die erstellte Seite im normalen Page Builder bearbeitet werden kann.
- Keine Seite automatisch veröffentlicht wird.
- Keine bestehende Seite überschrieben wird.
- Tests das zentrale Konvertierungs- und Sicherheitsverhalten abdecken.
Hinweise zur Migration der statischen WebBlocks-UI-Site
Die Migration der statischen WebBlocks-UI-Site sollte der erste reale Einsatz dieses generischen Page Converters werden.
Empfohlene Pilotseite:
pattern-admin-standards.html
Warum diese Seite:
- sie enthält viele WebBlocks-UI-Muster
- sie testet das Verhalten des Doku-Layouts
- sie umfasst Inhaltshülle, Karten, Tabellen, Statushinweise und codeartige Beispiele
- sie hilft, die klassenbasierte WebBlocks-UI-Zuordnung zu validieren
Die Migration sollte kein WebBlocks-UI-spezifisches Verhalten direkt in den CMS-Kern einbringen. Wird zusätzliche Zuordnungsintelligenz benötigt, sollte sie als wiederverwendbares Profil wie WebBlocks UI-flavored HTML hinzugefügt werden, oder später als optionales Operator-/Plugin-Profil.