Hoja de ruta del Page Converter de WebBlocks CMS
Propósito
Page Converter es una función de administración reutilizable propuesta para WebBlocks CMS que convierte HTML estático pegado o subido en páginas del CMS estructuradas y compuestas por bloques de primer nivel.
La función debe ayudar a migrar sitios estáticos, páginas HTML escritas a mano, páginas de documentación, páginas de marketing y contenido heredado a WebBlocks CMS sin colapsar todo el cuerpo de la página en un único bloque Safe HTML.
El objetivo no es crear un importador específico para webblocksui.com. El conversor debe ser una capacidad genérica del CMS que pueda utilizarse con cualquier sitio gestionado por una instalación de WebBlocks CMS.
Estado actual de la implementación
La primera base en tiempo de ejecución ya está disponible: Admin -> Pages -> Page Converter muestra el formulario acotado de origen/destino y valida la entrada pegada o subida en .html / .htm, incluidos los conflictos de rutas de destino. El analizador normaliza el HTML enviado, extrae el área de contenido más probable y muestra sugerencias ordenadas de bloques estructurados con puntuaciones de confianza y advertencias. La pantalla de revisión serializa esas sugerencias en una carga útil firmada de plan de conversión y, a continuación, Create draft page vuelve a validar los datos firmados del destino y puede crear una nueva página en borrador con los bloques admitidos del slot principal. La creación del borrador admite header, plain_text, rich-text, code, table, quote, el respaldo explícito html, button_link, list como Rich Text, callout como Alert, section, content_header, hero, cta y contenedores card explícitos con hijos firmados card_header / card_body / card_footer. Los fragmentos <section> con forma de sección se conservan como bloques contenedores Section, y sus encabezados, textos, enlaces, contenido promocional, cuadrículas de tarjetas y grupos de details adyacentes utilizables se emiten como sugerencias hijas en lugar de almacenarse como texto de la sección. Los grupos de <details> adyacentes se convierten ahora en una única sugerencia accordion firmada con hijos accordion_item explícitos, y la creación del borrador escribe esos elementos en el contrato de filas hijas faq existente cuando ambos tipos de bloque, accordion y faq, están publicados. Las sugerencias de tarjeta sin hijos de región utilizables explícitos y las sugerencias de acordeón sin un contrato de elementos utilizable se omiten en lugar de aplanarse en HTML inseguro. Las sugerencias basadas en medios, como image y gallery, se siguen omitiendo y notificando sin importar medios.
Un piloto compacto de fixtures con el estilo de WebBlocks UI cubre ahora un fragmento realista de documentación/marketing estático con <main>, envoltorios de encabezado y cuerpo de contenido, promo, cuadrícula de tarjetas, botones, código, tabla, details adyacentes y medios de imagen remotos. El fixture garantiza que el análisis produzca muchas sugerencias estructuradas en lugar de un único respaldo Safe HTML, que se cree un plan firmado y una página en borrador, que se conserven las regiones de tarjeta explícitas y los enlaces de botón del pie cuando el contrato de bloques actual pueda representarlos, y que los fragmentos basados en medios se mantengan solo como advertencia u omitidos, sin importar archivos, publicar páginas, crear navegación, tocar Shared Slots, descargar URL remotas ni sobrescribir contenido.
Principio fundamental
El conversor debe preferir los bloques estructurados del CMS a un único bloque Safe HTML.
Salida incorrecta:
Page
└── Main Slot
└── Safe HTML Block
└── entire page main HTML
Salida preferida:
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 solo se permite como respaldo visible y revisable para los fragmentos que todavía no pueden representarse mediante bloques estructurados del CMS.
Posicionamiento del producto
Ubicación recomendada en la administración:
Admin -> Pages -> Page Converter
La herramienta debe situarse cerca de Pages porque su resultado es un borrador de página del CMS. Es una herramienta editorial y de contenido, no principalmente una herramienta de mantenimiento operativo.
Posible punto de entrada secundario:
Admin -> Pages -> Import Page -> Convert HTML
Sin embargo, el flujo principal de Page Converter debe tener su propia pantalla, porque incluye la entrada del origen, el análisis, la revisión, las advertencias y la creación final del borrador.
Usuarios de destino
super_admin: puede utilizar Page Converter para todos los sitios.site_admin: puede utilizar Page Converter para los sitios asignados.editor: posible más adelante; para el MVP, mantenga un criterio conservador y decida en función de los permisos de creación de páginas existentes.
Las páginas generadas deben empezar siempre como draft.
El conversor nunca debe publicar automáticamente.
Alcance del MVP
Incluido en el MVP
- Pantalla de administración dentro del área Pages.
- Selector de sitio de destino limitado por el acceso del usuario.
- Selector de idioma (locale) de destino.
- Selector de layout de la página de destino.
- Campo de título de la página.
- Campo de slug/ruta.
- Área de texto para el HTML de origen.
- Subida de archivo HTML de origen para
.htmly.htm. - Acción Analyze que crea un plan de conversión en memoria.
- Pantalla de revisión que muestra los bloques sugeridos, la confianza, las advertencias y los respaldos.
- Acción final
Create Draft Page. - Validación de conflictos de ruta.
- Creación de páginas solo en borrador.
- Creación de bloques estructurados para las correspondencias de alta confianza.
- Informe explícito de los respaldos Safe HTML.
- Pruebas específicas.
- Actualización de la documentación y del changelog.
Excluido del MVP
- Descarga desde URL remotas.
- Rastreo de sitios web.
- Importación ZIP de varias páginas.
- Conversión por lotes.
- Comparación de capturas de pantalla.
- Integración con API de IA.
- Publicación automática.
- Sobrescritura o sustitución de una página existente.
- Descarga o importación de archivos de medios desde URL remotas.
- Limpieza destructiva de páginas antiguas o de bloques Safe HTML.
Modos de entrada del origen
Modos de entrada del MVP
| Modo de entrada | Estado | Notas |
|---|---|---|
| Pegar HTML | MVP | El punto de partida más seguro. |
| Subir un archivo .html / .htm | MVP | Útil para exportaciones de sitios estáticos. |
| Descargar una URL remota | Más adelante | Requiere protección frente a SSRF y una política de red. |
| Subir un ZIP de páginas | Más adelante | Requiere revisión por lotes y gestión de conflictos. |
| Rastrear el sitio | Más adelante | Requiere controles de alcance, límites de tasa y listas de URL permitidas. |
Flujo de administración
Paso 1: origen y destino
El administrador elige:
- Sitio de destino
- Idioma (locale) de destino
- Layout de la página
- Título de la página
- Slug/ruta de la página
- Perfil de conversión
- HTML de origen pegado o archivo subido
Paso 2: Analyze
El conversor analiza el HTML y genera un plan de conversión sin escribir el contenido de la página en la base de datos.
Ejemplo de resumen del análisis:
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.
Paso 3: revisión
La pantalla de revisión muestra cada bloque sugerido:
| Orden | Fragmento de origen | Bloque sugerido | Confianza | Advertencia |
|---|---|---|---|---|
| 1 | Content Header | 96% | ||
| 2 | Section | 92% | ||
| 3 | Card | 94% | ||
| 4 | Code | 99% | ||
| 5 | HTML de widget desconocido | Respaldo HTML | 41% | Se requiere revisión manual |
La pantalla de revisión debe separar con claridad:
- bloques estructurados de alta confianza
- sugerencias de confianza media
- fragmentos ignorados
- fragmentos de respaldo Safe HTML
- contenido inseguro eliminado
- advertencias sobre medios
Paso 4: Create Draft Page
Solo tras una confirmación explícita, la herramienta crea una nueva página en borrador.
La operación debe ser transaccional y crear:
- el registro de la página
- la traducción de la página
- los slots necesarios de la página
- el árbol de bloques
- las traducciones de los bloques
- los ajustes y las relaciones de los bloques
- los metadatos de revisión cuando los servicios de revisiones existentes lo admitan
La herramienta no debe publicar la página.
Perfiles de conversión
Los perfiles permiten distintos niveles de rigor en la correspondencia sin hacer que el conversor sea específico de un sitio.
Página de marketing genérica
Recomendado para páginas de destino y páginas de producto.
Prioriza:
- Hero
- Section
- Columns y Column Item cuando una correspondencia estructurada posterior pueda representar el origen de forma segura
- Card
- Button Link
- CTA
- Image
- Gallery
- Quote
Página de documentación genérica
Recomendado para documentación y contenido extenso.
Prioriza:
- Content Header
- Header
- Rich Text
- Code
- Table
- List
- Callout
- Accordion
- TOC
HTML con el estilo de WebBlocks UI
Recomendado para páginas que ya utilizan los nombres de clase de WebBlocks UI.
Prioriza la correspondencia basada en clases para:
wb-sectionwb-content-headerwb-promowb-cardwb-gridwb-btnwb-alertwb-gallerywb-rich-textwb-link-list
Este perfil debe seguir siendo genérico y reutilizable. No debe dar por supuesto un dominio concreto como ui.webblocksui.com.
Conservador
Recomendado cuando el HTML de origen es desordenado o desconocido.
Prioriza:
- menos conjeturas
- más agrupación en rich-text
- advertencias explícitas
- respaldos visibles
Reglas de correspondencia de HTML a bloques del CMS
Reglas semánticas genéricas
| Patrón HTML | Bloque del CMS |
|---|---|
| h1-h6 | header |
| párrafo simple | plain_text o rich-text |
| varios párrafos con formato en línea | rich-text |
| ul, ol, li | list o rich-text según el contexto |
| pre > code | code |
| table | table |
| blockquote | quote |
| figure > img | marcador de posición image más una advertencia de medios si la importación de medios no está disponible |
| tarjetas repetidas o celdas repetidas | regiones card explícitas cuando existan; columns + column_item sigue siendo una correspondencia estructurada posterior |
| grupos details > summary | accordion cuando sea posible |
| marcado editorial desconocido pero seguro | respaldo html |
Reglas basadas en las clases de WebBlocks UI
| Patrón HTML | Bloque del CMS |
|---|---|
| .wb-section | section |
| .wb-content-header | content_header |
| .wb-promo | hero o 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 | los hijos directos .wb-card se convierten en planes card explícitos; las columnas genéricas quedan para más adelante |
| ancla/botón .wb-btn | button_link cuando pueda representarse de forma segura, incluso dentro de los pies de tarjeta |
| .wb-alert, .wb-callout | callout |
| .wb-gallery | gallery |
| .wb-rich-text | rich-text |
| .wb-link-list | futuro toc o lista estructurada según el contexto |
| tarjetas repetidas .wb-stat | futuras columns con elementos de estilo estadístico donde se admita |
Política de respaldo con Safe HTML
Safe HTML debe ser el último recurso, no el resultado de conversión predeterminado.
Casos de respaldo permitidos
- El CMS todavía no tiene un bloque de primer nivel para el fragmento.
- El marcado es demasiado complejo para asignarlo con seguridad en la versión actual.
- La confianza del conversor es baja.
- El administrador acepta explícitamente el respaldo durante la revisión.
Requisitos del respaldo
Todo respaldo debe mostrarse en la pantalla de revisión con:
- una vista previa del fragmento de origen
- el motivo
- la puntuación de confianza
- el texto de advertencia
- la ubicación aproximada en la página
Antiobjetivo del respaldo
El conversor no debe crear un único bloque Safe HTML grande para todo el contenido main cuando existan correspondencias significativas con bloques estructurados.
Saneamiento y seguridad
El conversor debe sanear la conversión de texto estructurado de forma estricta.
Eliminar o rechazar:
<script>- atributos de evento como
onclick - URL
javascript: iframeobjectembed- estilos en línea peligrosos cuando no se admitan explícitamente
- atributos ejecutables desconocidos
La descarga desde URL remotas queda excluida del MVP para evitar riesgos de SSRF. Si se añade más adelante, debe bloquear:
- localhost
- rangos de IP privadas
- direcciones link-local
- servicios de metadatos
- nombres de host internos
- redirecciones a direcciones bloqueadas
Gestión de medios
El MVP no debe intentar una importación completa de medios.
Para las imágenes:
- detectar las referencias a imágenes
- crear un marcador de posición de imagen solo si está implementada la correspondencia con los medios existentes del CMS
- en caso contrario, informar de una advertencia de medios
- conservar las sugerencias de texto alternativo y de pie de foto para su uso manual
Las fases posteriores pueden añadir:
- subir archivos de imagen locales junto con un archivo HTML
- emparejar los medios existentes por nombre de archivo o hash
- importar imágenes desde paquetes ZIP
- reescribir los bloques de imagen con los ID de medios del CMS
Arquitectura técnica sugerida
Controladores y requests
PageConverterController
PageConverterAnalyzeRequest
PageConverterCreateRequest
Los controladores deben mantenerse ligeros y delegar el análisis y la conversión en los servicios.
Servicios
Services/PageConverter/PageHtmlNormalizer
Services/PageConverter/PageHtmlSegmenter
Services/PageConverter/PageConversionEngine
Services/PageConverter/PageConversionProfileRegistry
Services/PageConverter/BlockSuggestionMapper
Services/PageConverter/ConvertedPageDraftCreator
Services/PageConverter/HtmlSafetySanitizer
DTO / Objetos de valor
ConvertedPagePlan
ConvertedSlotPlan
ConvertedBlockPlan
ConversionWarning
ConversionSourceFragment
ConversionProfile
ConversionConfidence
Flujo en tiempo de ejecución
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
Reglas de creación de datos
Al crear la página en borrador:
- utilizar transacciones de base de datos
- crear únicamente una página nueva
- no sobrescribir nunca páginas existentes en el MVP
- crear la página como
draft - crear la traducción predeterminada para el idioma (locale) seleccionado
- crear los slots necesarios para el layout seleccionado
- crear en el MVP solo bloques propios de la página
- no crear Shared Slots automáticamente
- no publicar automáticamente
- registrar los metadatos de revisión cuando los servicios existentes lo admitan
Reglas de autorización
El MVP debe seguir las reglas existentes de creación de páginas y de acceso a los sitios.
Acceso recomendado:
super_admin: todos los sitiossite_admin: los sitios asignadoseditor: aplazar o permitir solo si la creación normal de páginas lo permite
Todos los selectores de sitio deben limitarse a los sitios accesibles para el usuario autenticado.
Reglas de rutas y conflictos
El conversor debe validar:
- que el sitio seleccionado existe y es accesible
- que el idioma (locale) seleccionado existe y está habilitado para el sitio
- que el layout seleccionado existe y está activo
- que hay un título
- que la ruta/slug es válida
- que la ruta no entra en conflicto con la traducción de una página existente para el mismo sitio e idioma
El MVP no debe sustituir una página existente, ni fusionarse con ella, ni actualizarla.
Estándares de la interfaz de administración
Utilice los patrones de administración existentes de WebBlocks CMS:
- formularios basados en tarjetas
- tablas de revisión compactas
- advertencias claras
- modal solo cuando resulte útil
- sin confirmación del navegador para acciones destructivas
- sin CSS/JS personalizado salvo que sea necesario
- solo clases de WebBlocks UI
La pantalla de revisión debe facilitar la respuesta a estas preguntas:
- ¿Qué se va a crear?
- ¿Qué partes son bloques estructurados?
- ¿Qué partes son HTML de reserva?
- ¿Qué partes se han ignorado?
- ¿Qué requiere revisión manual?
Plan de pruebas
Las pruebas de funcionalidad específicas deben cubrir:
- los usuarios autorizados pueden abrir Page Converter
- los usuarios no autorizados no pueden acceder a sitios inaccesibles
- el HTML pegado puede analizarse
- el archivo
.htmlsubido puede analizarse - los tipos de archivo no admitidos se rechazan
- los scripts y los atributos inseguros se eliminan de la conversión estructurada
h1/h2se asigna a una sugerencia de bloque header- los párrafos se asignan a sugerencias rich-text/plain_text
pre > codese asigna a una sugerencia codetablese asigna a una sugerencia table.wb-cardse asigna a una sugerencia card- los elementos de tarjeta de
.wb-gridse asignan a sugerencias explícitas de región card - los fragmentos desconocidos se notifican como reserva, no se descartan en silencio
- un conflicto en la ruta de destino impide la creación del borrador
- la página en borrador se crea solo tras un envío explícito
- la página creada no se publica
- no se sobrescribe ninguna página existente
Actualizaciones de la documentación
Añada o actualice:
docs/page-converter.mddocs/index.mdREADME.mdCHANGELOG.md
La documentación debe incluir:
- finalidad de la funcionalidad
- modos de entrada de origen
- perfiles de conversión
- política de reserva Safe HTML
- exclusiones de seguridad
- limitaciones del MVP
- hoja de ruta futura
Borrador de redacción del 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.
Fases de implementación
Fase 0: solo documentación
Cree esta hoja de ruta y añada una página de documentación canónica del CMS para la planificación de Page Converter.
Sin cambios en tiempo de ejecución.
Fase 1: analizador de solo lectura
Añada únicamente la pantalla de administración y el flujo de análisis.
- Aceptar HTML pegado.
- Producir un plan de conversión.
- Mostrar la pantalla de revisión.
- Todavía no crear páginas.
Fase 2: creador de borradores
Añada una acción de creación explícita.
- Crear la página en borrador.
- Crear los bloques del slot principal.
- Validar los conflictos de ruta.
- Conservar las advertencias en la interfaz.
Fase 3: subida de archivos HTML
Añada compatibilidad con la subida de archivos .html / .htm.
Fase 4: mejores asignaciones estructuradas
Mejore las asignaciones para:
- elementos hijos más profundos de las regiones card
- columnas
- renderizado más rico de los elementos de acordeón, más allá del contrato actual de hijo
faqen texto plano - tablas
- listas
- avisos destacados
- botones hijos gestionados de hero/cta
Fase 5: conversión con reconocimiento de medios
Añada compatibilidad opcional con paquetes de imágenes locales o con la coincidencia con medios existentes.
Fase 6: conversión por lotes
Añada flujos de trabajo de varias páginas:
- subida de ZIP
- inventario de páginas
- revisión por página
- creación de borradores por lotes
Fase 7: obtención opcional por URL
Solo después de implementar reglas estrictas de SSRF y de seguridad de red.
Criterios de aceptación del MVP
El MVP tiene éxito cuando:
- El administrador puede pegar o subir una página HTML estática.
- El CMS muestra un plan de conversión revisable.
- Las estructuras HTML habituales se convierten en bloques CMS estructurados.
- La reserva Safe HTML es visible y limitada.
- El administrador puede crear una nueva página en borrador.
- La página creada puede editarse en el Page Builder normal.
- Ninguna página se publica automáticamente.
- No se sobrescribe ninguna página existente.
- Las pruebas cubren el comportamiento principal de conversión y seguridad.
Notas para la migración del sitio estático de WebBlocks UI
La migración del sitio estático de WebBlocks UI debería convertirse en el primer uso real de este Page Converter genérico.
Página piloto recomendada:
pattern-admin-standards.html
Por qué esta página:
- contiene muchos patrones de WebBlocks UI
- pone a prueba el comportamiento del layout de documentación
- incluye estructura de contenido, tarjetas, tablas, indicaciones de estado y ejemplos similares a código
- ayuda a validar la asignación basada en clases de WebBlocks UI
La migración no debe añadir comportamiento específico de WebBlocks UI directamente al núcleo del CMS. Si se necesita más inteligencia de asignación, añádala como un perfil reutilizable, por ejemplo WebBlocks UI-flavored HTML, o más adelante como un perfil opcional de operador/plugin.