Generate Page AI releases
Plugin de wordpress para duplicar paginas y cambiar sus campos personalizados con AI.
by franciscoblancojn · github.com/franciscoblancojn/generate-page-ai · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/franciscoblancojn/generate-page-ai/archive/refs/heads/master.zipVersion: 2.10.5 | License: GPLv2+
Generate Page AI es un plugin de WordPress que potencia tus páginas con inteligencia artificial 🤖. Conéctalo a Google Gemini, gestiona campos personalizados, datos Yoast SEO, datos GPAI SEO (con meta box, etiquetas <head> y Schema JSON-LD), crea variaciones de contenido en masa para posts, gestiona campos personalizados directamente desde el editor de Elementor, optimiza HTML estático generado por Static Page, y cuenta con auto-actualizador vía GitHub.
✨ Características
- 🤖 Generación con IA — Usa Google Gemini para generar contenido único para campos personalizados, Yoast SEO y GPAI SEO.
- 📄 Gestión de Posts — Selecciona cualquier página, edita sus campos personalizados y metadatos Yoast, GPAI SEO, escribe prompts y genera variaciones de contenido al instante.
- 🎨 Campos Personalizados en Elementor — Botón flotante "Campos" en el editor de Elementor. Abre un panel arrastrable tipo Navigator para crear, editar y eliminar campos personalizados en tiempo real mientras diseñas la página.
- 🔄 Variaciones en Masa — Genera múltiples variaciones de contenido desde un solo prompt. Revisa, aplica o descarta cada una.
- 📤 Exportación/Importación JSON — Exporta campos personalizados, datos Yoast y GPAI SEO a JSON. Impórtalos después con un clic.
- 🔗 Reemplazo en Frontend — Las variables
{{key}}y__key__se reemplazan automáticamente con sus valores al mostrar la página. - 🔍 Vista Previa — Previsualiza variaciones directamente en el editor de Elementor con los valores inyectados como parámetros.
- 🧠 Prompts Base Editables — Personaliza los prompts base que usa la IA para generar contenido, SEO y optimización HTML. Acceso desde Configuración > Prompts Base.
- 🏷️ GPAI SEO — Sistema completo de SEO con 27 campos en 5 grupos (Principales, Robots, Open Graph, Twitter, Schema). Meta box en el editor de posts, salida de etiquetas
<head>, Schema JSON-LD con soporte para bloques adicionales (gpai_wpseo_schema_extra_jsongenerado por IA), anulación de Yoast SEO, y botón Validar SEO que abre Schema.org validator con la URL del post. - 🔄 Auto-Update vía GitHub — El plugin se actualiza automáticamente desde GitHub Releases cuando hay una nueva versión.
- 📋 Sistema de Logs — Registro de actividad del plugin accesible desde la barra de administración.
- 🧹 Optimización HTML — Subpágina "Optimización HTML" (visible solo si Static Page está activo). Selecciona un post (con selección persistente entre cargas), verifica si tiene HTML estático generado por Static Page, y permite mejorar el HTML con IA usando Gemini para optimizarlo (más liviano, misma apariencia). Guarda el resultado como
page-{id}-optimize.htmly registra la ruta enSTPA_PAGE_STATIC_HTML_FILE_OPTIMIZE. Incluye un botón para alternar entre HTML normal y optimizado intercambiando la ruta activa. - 🗺️ Site Maps — Subpágina completa para gestionar archivos XML de sitemaps en la raíz de WordPress. Lectura, edición, creación y eliminación de archivos. Generación de contenido XML con IA usando el prompt base de sitemaps más las URLs reales del sitio.
- 🔗 URLs para Sitemaps — Pestaña dentro de Site Maps que lista todos los posts y páginas publicadas con checkboxes para activar/desactivar su inclusión. Genera XML con
<url><loc><lastmod><changefreq><priority>. Configuración persistente de frecuencia y prioridad por tipo de contenido. - 🖼️ Imágenes en Sitemaps — Escaneo automático de imágenes destacadas, contenido y galerías de productos para cada URL. Se inyectan en el prompt de IA para generar
<image:image>tags en el sitemap. - 🖼️ Ajustes de Imágenes — Nueva pestaña en la sección Post que carga todas las imágenes del post seleccionado (destacada, contenido, Elementor, galerías) y permite editar Texto Alternativo, Título, Leyenda y Descripción con vista previa y botón de descarga.
- ✅ Confirmación en Generar SEO — El botón "Generar SEO con IA" ahora pide confirmación antes de sobrescribir los valores actuales.
- 🧼 Limpieza de Schema Yoast — Filtro automático que remueve propiedades internas no estándar (
description_schema_fallback) del schema de Yoast antes de renderizar.
📋 Requisitos
- WordPress 5.0+
- PHP 5.6+
- Plugin Yoast Duplicate Post (obligatorio)
- Plugin Elementor (para funcionalidad de plantillas y editor visual)
- Clave de API de Google Gemini
⚙️ Instalación
- Descarga el plugin desde Aqui.
- Subelo y Actívalo desde el menú Plugins de WordPress.
- Ve a Generate Page AI → Configuración e ingresa tu API Key de Gemini.
- ¡Listo! Comienza a gestionar posts. 🎉
🗂️ Estructura del Plugin
generate-page-ai/
├── index.php # Archivo principal (plugin header, constantes, updater vía Composer)
├── composer.json # Dependencias Composer
├── package.json # Scripts de release/versionado
├── libs/ # Dependencias (Composer vendor renombrado)
├── src/
│ ├── _.php # Cargador maestro
│ ├── ai/ # Capa de IA (cliente Gemini, generación de contenido)
│ │ ├── ai.php # GPAI_AI - Cliente HTTP para Gemini
│ │ ├── content.php # GPAI_CONTENT - Orquestador de generación con templates editables
│ │ ├── prompt.php # GPAI_PROMPT - Mejora de prompts vía IA
│ │ └── harness.php # GPAI_AI_HARNESS - Harness de pruebas para respuestas IA
│ ├── api/ # API REST y handlers AJAX
│ │ ├── cf.php # GPAI_CF - CRUD de campos personalizados (incl. endpoints Elementor)
│ │ ├── yoast.php # GPAI_YOAST - API para metadatos Yoast SEO
│ │ ├── gpai_seo.php # GPAI_SEO - API para campos SEO personalizados
│ │ ├── export_import.php # GPAI_EXPORT_IMPORT - Exportación/Importación JSON
│ │ ├── sitemaps.php # GPAI_SITEMAPS_API - AJAX para generar XML de sitemaps con IA
│ │ ├── imagenes.php # GPAI_IMAGENES - AJAX para gestionar metadatos de imágenes del post
│ │ ├── analisis.php # GPAI_ANALISIS - Análisis SEO, validación enlaces, PageSpeed
│ │ ├── seo_api.php # GPAI_API_SEO - REST API para campos SEO
│ │ ├── cf_api.php # GPAI_API_CF - REST API para custom fields
│ │ └── gf_api.php # GPAI_API_GF - REST API para campos globales
│ ├── css/ # Estilos CSS inline
│ │ ├── global.php # Estilos generales del admin
│ │ ├── elementor-editor.css # Estilos del panel flotante en editor Elementor
│ │ ├── gpai-edit.css # Estilos panel edición frontend
│ │ └── sitemap.xsl # Hoja XSL para sitemaps XML
│ ├── data/ # Persistencia de datos (opciones de WP)
│ │ ├── base.php # GPAI_USE_DATA_BASE - CRUD genérico con wp_options
│ │ ├── config.php # GPAI_USE_DATA_CONFIG - Configuración del plugin
│ │ ├── duplicados.php # GPAI_USE_DATA_DUPLICADOS - Variaciones de posts
│ │ ├── sitemaps_data.php # GPAI_USE_DATA_SITEMAPS - CRUD de archivos XML de sitemaps
│ │ ├── global_fields_data.php# GPAI_USE_DATA_GLOBAL_FIELDS - Campos globales
│ │ └── htaccess_data.php # GPAI_USE_DATA_HTACCESS - CRUD de archivos .htaccess
│ ├── elementor/ # Integración con Elementor
│ │ ├── editor.php # Encola assets en el editor de Elementor
│ │ └── frontend.php # Filtros de reemplazo {{key}} en frontend de Elementor
│ ├── frontend/ # Salida en frontend
│ │ ├── gpai-seo-output.php # GPAI_SEO_output - Etiquetas <head>, JSON-LD, anulación Yoast
│ │ └── gpai-edit.php # GPAI_Edit_Assets - Assets panel edición frontend
│ ├── hook/ # Hooks de WordPress
│ │ └── content.php # GPAI_replace_custom_vars() - filtro the_content + reemplazo frontend
│ ├── js/ # JavaScript
│ │ ├── global.php # JS general del admin (tabs, modales, export/import)
│ │ ├── elementor-editor.js # Panel flotante de campos personalizados en Elementor
│ │ └── gpai-edit.js # JS panel edición frontend
│ ├── meta-box/ # Meta boxes en el editor de posts
│ │ ├── gpai-seo.php # GPAI SEO meta box (5 grupos, 27 campos, guardado AJAX)
│ │ ├── gpai-parent.php # GPAI Parent meta box (contenido independiente)
│ │ └── gpai-box.php # GPAI Box meta box (enlace a edición frontend)
│ ├── page/ # Páginas del admin
│ │ ├── add.php # Registro del menú principal
│ │ ├── page.php # Layout con tabs
│ │ ├── pages/
│ │ │ ├── config/ # Página de configuración
│ │ │ │ ├── add.php # Submenú "Configuración"
│ │ │ │ └── page.php # Layout con tabs: IA, Prompts Base, Pruebas
│ │ │ ├── post/ # Página de posts
│ │ │ │ ├── add.php # Submenú "Post"
│ │ │ │ └── page.php # Layout con tabs
│ │ │ ├── html/ # Página de optimización HTML
│ │ │ │ ├── add.php # Submenú "Optimización HTML" (solo si Static Page activo)
│ │ │ │ └── page.php # Layout
│ │ │ ├── sitemaps/ # Página de Site Maps
│ │ │ │ ├── add.php # Submenú "Site Maps"
│ │ │ │ └── page.php # Layout con tabs
│ │ │ ├── htaccess/ # Página de .htaccess
│ │ │ │ ├── add.php # Submenú ".htaccess"
│ │ │ │ └── page.php # Layout
│ │ │ ├── campos_globales/ # Página de Campos Globales
│ │ │ │ ├── add.php # Submenú "Campos Globales"
│ │ │ │ └── page.php # Layout
│ │ │ └── api/ # Página de API
│ │ │ ├── add.php # Submenú "API"
│ │ │ └── page.php # Layout con tabs: SEO API, CF API, GF API
│ │ └── sections/ # Secciones de cada página
│ │ ├── config.php # API Key, modelo, toggle de imágenes
│ │ ├── prompts_base.php # Editor de prompts base (templates editables)
│ │ ├── test.php # Pruebas (dev mode)
│ │ ├── post.php # Gestión de posts
│ │ ├── imagenes.php # Ajustes de imágenes del post (alt, título, leyenda, descripción, descarga)
│ │ ├── procesar_contenido.php# Variaciones de contenido
│ │ ├── analisis.php # Análisis SEO, validación de enlaces, PageSpeed
│ │ ├── html.php # Optimización HTML (selector de post, estado static, mejora con IA)
│ │ ├── sitemaps.php # Site Maps: listado de archivos XML con edición y generación IA
│ │ ├── config-sitemaps.php# Site Maps: configuración de URLs por tipo de contenido
│ │ ├── crear_sitemap.php # Site Maps: formulario para crear nuevos archivos XML
│ │ ├── campos_globales.php# CRUD de campos globales
│ │ ├── htaccess.php # Editor de archivos .htaccess
│ │ ├── api_seo.php # Config API key para REST SEO
│ │ ├── api_cf.php # Config API key para REST Custom Fields
│ │ └── api_gf.php # Config API key para REST Global Fields
│ └── templates/ # Helpers de renderizado
│ ├── table_fields.php # GPAI_Table_Fields() - Tabla genérica clave/valor
│ ├── custom_fields.php # GPAI_Custom_Fields() - Campos personalizados
│ ├── custom_yoast.php # GPAI_Custom_Yoast() - Campos Yoast
│ ├── custom_gpai_seo.php # GPAI_Custom_Gpai_Seo() - Campos GPAI SEO (incl. grouped)
│ ├── table_post_by_url.php # GPAI_Table_Post_By_Url() - Tabla de posts con checkboxes para sitemaps
│ ├── imagenes_post.php # GPAI_Imagenes_Post() - Tabla de imágenes con preview, campos editables y descarga
│ └── analisis.php # GPAI_Analisis_Post() - Análisis SEO de un post
🧠 Clases Principales
| Clase | Archivo | Función |
|---|---|---|
GPAI_AI |
src/ai/ai.php |
🛰️ Cliente HTTP para la API de Google Gemini |
GPAI_CONTENT |
src/ai/content.php |
🧬 Orquestador de generación de contenido con IA. Los prompts base son editables mediante templates con {{placeholders}} |
GPAI_PROMPT |
src/ai/prompt.php |
💡 Mejora de prompts existentes vía IA |
GPAI_CF |
src/api/cf.php |
📦 API para campos personalizados de posts. Incluye endpoints AJAX para el editor de Elementor |
GPAI_YOAST |
src/api/yoast.php |
🔍 API para metadatos Yoast SEO |
GPAI_SEO |
src/api/gpai_seo.php |
🏷️ API para 27 campos SEO personalizados en 5 grupos |
GPAI_USE_DATA_GLOBAL_FIELDS |
src/data/global_fields_data.php |
🌐 Campos globales almacenados en opciones |
GPAI_USE_DATA_HTACCESS |
src/data/htaccess_data.php |
🔒 CRUD de archivos .htaccess |
GPAI_EXPORT_IMPORT |
src/api/export_import.php |
📤 Exportación/Importación JSON |
GPAI_USE_DATA_BASE |
src/data/base.php |
💾 CRUD genérico basado en wp_options |
GPAI_USE_DATA_CONFIG |
src/data/config.php |
⚙️ Configuración del plugin |
GPAI_USE_DATA_DUPLICADOS |
src/data/duplicados.php |
📝 Variaciones de posts pendientes |
GPAI_USE_DATA_SITEMAPS |
src/data/sitemaps_data.php |
🗺️ CRUD de archivos XML de sitemaps en la raíz de WordPress |
GPAI_SITEMAPS_API |
src/api/sitemaps.php |
🤖 AJAX para generar XML de sitemaps con Gemini, reemplaza {{URL_BASE}}, {{URL_PAGINAS_LIST}}, {{URL_POSTS_LIST}}, {{PAGINAS_IMAGES}}, {{POSTS_IMAGES}} |
GPAI_IMAGENES |
src/api/imagenes.php |
🖼️ AJAX para obtener y guardar metadatos de imágenes del post (alt, título, leyenda, descripción) |
GPAI_ANALISIS |
src/api/analisis.php |
🔍 Análisis SEO, validación de enlaces internos y PageSpeed Insights |
GPAI_API_SEO |
src/api/seo_api.php |
🔌 REST API para campos GPAI SEO (POST /GPAI/seo) |
GPAI_API_CF |
src/api/cf_api.php |
🔌 REST API para custom fields (GET/SET /GPAI/cf/*) |
GPAI_API_GF |
src/api/gf_api.php |
🔌 REST API para campos globales (GET/SET /GPAI/gf/*) |
GPAI_AI_HARNESS |
src/ai/harness.php |
🧪 Harness de pruebas para capturar/responser respuestas de IA |
🔌 REST API
El plugin expone endpoints REST para integrar GPAI SEO, custom fields y campos globales con sistemas externos.
Endpoints
| Método | Ruta | Descripción | Header API Key |
|---|---|---|---|
POST |
/wp-json/GPAI/seo |
Guarda campos GPAI SEO de un post | X-GPAI-SEO-Key |
GET |
/wp-json/GPAI/cf/get |
Obtiene custom fields de un post | X-GPAI-CF-Key |
POST |
/wp-json/GPAI/cf/set |
Guarda custom fields de un post | X-GPAI-CF-Key |
GET |
/wp-json/GPAI/gf/get |
Obtiene todos los campos globales | X-GPAI-GF-Key |
POST |
/wp-json/GPAI/gf/set |
Guarda/actualiza campos globales | X-GPAI-GF-Key |
Configuración
Las API keys se gestionan desde Generate Page AI → API, donde hay 3 pestañas independientes:
- API SEO → Clave para
X-GPAI-SEO-Key - API Custom Fields → Clave para
X-GPAI-CF-Key - API Global Fields → Clave para
X-GPAI-GF-Key
Cada endpoint verifica que el header X-GPAI-{type}-Key coincida con la clave configurada antes de procesar la solicitud.
🖥️ Páginas del Admin
| Menú | Slug | Descripción |
|---|---|---|
| ⚙️ Configuración | GPAI_config |
API Key de Gemini, selección de modelo, toggle de generación de imágenes |
| 🧠 Prompts Base | GPAI_config (tab) |
Editor de templates base para generación de contenido, SEO y optimización HTML |
| 🧪 Pruebas | GPAI_config (tab, solo dev) |
Pruebas de parseo JSON (solo visible en modo desarrollo) |
| 📄 Post | GPAI_post |
Gestión de posts: campos personalizados, Yoast, GPAI SEO, prompts, variaciones, ajustes de imágenes |
| 🧹 Optimización HTML | GPAI_html |
Optimización de HTML estático con IA (solo visible si Static Page está activo) |
| 🗺️ Site Maps | GPAI_sitemaps |
Gestión de archivos XML de sitemaps. Tres pestañas: Site Maps (lista, editar, generar con IA, descargar), Crear Site Map (nuevo archivo XML), URLs (seleccionar posts/páginas, configurar frecuencia/prioridad, generar XML). |
| 🌐 Campos Globales | GPAI_campos_globales |
CRUD de campos globales reutilizables (text, textarea, number, email, url, wysiwyg) |
| 🔒 .htaccess | GPAI_htaccess |
Listar, editar, crear y eliminar archivos .htaccess |
| 🔌 API | GPAI_api |
Configuración de API keys para REST endpoints: SEO API, Custom Fields API, Global Fields API |
🎨 Integración con Elementor
Panel de Campos Personalizados en el Editor
El plugin agrega un botón flotante "Campos" en la esquina inferior del editor de Elementor (funciona en Elementor Free y Pro). Al hacer clic:
- 📋 Se abre un panel arrastrable (similar al Navigator de Elementor)
- 👁️ Muestra la lista de campos personalizados del post actual (excluye campos internos
_) - ✏️ Edita cualquier campo: cambia clave o valor
- ❌ Elimina campos con confirmación
- ➕ Crea nuevos campos con clave (auto-envuelta en
{{ }}) y valor
Los campos se guardan como post_meta inmediatamente vía AJAX.
Reemplazo en Frontend
Las variables {{key}} y __key__ se reemplazan automáticamente al mostrar la página mediante el filtro global the_content.
ℹ️ Los hooks específicos de Elementor (
elementor/frontend/the_content,elementor/widget/render_content) están actualmente desactivados en el código. El reemplazo funciona a través del filtrothe_contentestándar.
🏷️ GPAI SEO
El plugin incluye un sistema completo de SEO propio que puede funcionar junto con Yoast SEO o reemplazar sus valores.
Meta Box en el Editor
Se agrega una meta box "Gpai SEO" en todos los post types públicos con 27 campos organizados en 5 grupos:
| Grupo | Campos |
|---|---|
| Principales | title, metadesc, focuskw, focuskeywords, canonical, bctitle, redirect, cornerstone |
| Robots | noindex, nofollow, robots_adv, noarchive, nosnippet, noimageindex |
| Open Graph | og_title, og_description, og_image, og_image_id, og_url |
twitter_title, twitter_description, twitter_image |
|
| Schema | schema_page_type, schema_article_type, schema_extra_json |
Los campos se guardan vía AJAX (sin recargar la página) o mediante save_post.
Generación de SEO con IA
El meta box y la página de Post incluyen un botón "Generar SEO con IA" que envía el título, contenido y valores actuales a Gemini para generar datos SEO optimizados. Incluye confirmación antes de sobrescribir.
Validación de Schema
El botón "Validar SEO" abre Schema.org Validator con la URL del post actual para verificar que el JSON-LD generado sea válido.
Limpieza de Schema de Yoast
El plugin filtra automáticamente el schema de Yoast (wpseo_schema_graph) para remover propiedades internas no estándar como description_schema_fallback que pueden causar errores de validación.
Salida en Frontend
El hook wp_head genera automáticamente:
<meta name="description"><link rel="canonical">- Open Graph tags (
<meta property="og:...">) - Twitter Card tags (
<meta name="twitter:...">) - Robots meta (
<meta name="robots">) - JSON-LD Schema (
WebPage,WebSite,OrganizationconSearchAction) - Redirección 301 si
gpai_wpseo_redirectestá configurado
Schema JSON-LD — Estructura de Salida
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebPage",
"@id": "{canonical}#webpage",
"url": "{canonical}",
"name": "{title}",
"description": "{metadesc}",
"inLanguage": "{site_language}",
"isPartOf": {"@id": "{home}#website"},
"publisher": {"@id": "{home}#organization"},
"image": "{og_image}",
"keywords": "{focuskw}",
"datePublished": "...",
"dateModified": "..."
},
{
"@type": "WebSite",
"@id": "{home}#website",
"url": "{home}",
"name": "{site_name}",
"description": "{site_description}",
"publisher": {"@id": "{home}#organization"},
"potentialAction": [{"@type":"SearchAction", ...}]
},
{
"@type": "Organization",
"@id": "{home}#organization",
"name": "{site_name}",
"url": "{home}",
"logo": {...},
"image": {...}
}
]
}
Los bloques adicionales definidos en gpai_wpseo_schema_extra_json se agregan al @graph. Cada objeto debe tener @type para ser incluido.
Eliminación de Otros JSON-LD
Cuando gpai_wpseo_remove_other_jsonld está activo, el plugin elimina todos los `
Releases
Newest 25 of 60 recorded releases.
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.