acambronero
acambronero
@acambronero@blogpocket.es

Este es el blog federado de Antonio Cambronero, fundador, autor y CEO de Blogpocket. Informático, blogger y profesor, con más de 20 años de experiencia en departamentos de soporte técnico informático, análisis de sistemas, productividad, optimización de procesos, atención al cliente y formación, en empresas multinacionales.

83 publicaciones
51 seguidores

Plugin AI Auto Blog

En este artículo se documenta el plugin AI Auto Blog (versión 1.4.2) con el que funciona el blog Siempre Irrelevante, el blog que va solo.

Qué es

El plugin «AI Auto Blog» es un plugin que permite alimentar un blog de WordPress de manera autónoma utilizando la inteligencia artificial de Google Gemini. El plugin genera automáticamente artículos completos y de calidad. El plugin tiene previsto incluir imágenes destacadas creadas con Imagen 3.0 aunque esta opción todavía no está disponible.

Características Principales

  • Generación Automática de Contenido: Crea artículos completos utilizando Google Gemini AI (Flash o Pro)
  • Imágenes Destacadas AI: Preparado para crear automáticamente imágenes relacionadas con el contenido usando Imagen 3.0, aunque esta opción todavía no funciona.
  • Custom Post Type: Posts AI separados de tus entradas normales
  • Personalización Completa: Define el estilo, tema y criterios para tus posts
  • Múltiples Longitudes: Elige entre posts breves (~500 palabras), medios (~1000) o largos (~2000)
  • Programación Flexible: Generación manual, diaria, semanal o mensual
  • Control de Publicación: Publica automáticamente o guarda como borrador para revisión
  • Estadísticas Detalladas: Monitorea todas las generaciones y su estado
  • Notificaciones por Email: Recibe alertas cuando se genera nuevo contenido

Custom Post Type

El plugin crea un tipo de post personalizado llamado «AI Posts» que mantiene tu contenido generado por IA separado de tus posts regulares. Puedes personalizar la plantilla de visualización según tus necesidades.

Configuración

Una vez instalado, el plugin, puedes verificar que está preparado para ejecutarse, mediante el siguiente comando en el Terminal, escrito desde la raíz del plugin:

php cron-test.php

Esto nos dará también el comando para ejecutar el script desde la sección de trabajos de cron del sistema, algo parecido a:

0 9 * * * php /home/lanzatub/public_html/blogpocket.es/wp-content/plugins/ai-auto-blog/cron-generate.php >> /tmp/ai-auto-blog-cron.log 2>&1

Añade este comando en la sección de trabajos de cron de cPanel.

Una vez ejecutado puedes ver el log con:

cat /tmp/ai-auto-blog-cron.log

Plugin en GitHub

Después de crear el repositorio ai-auto-blog en GitHub.

  1. Ve a: https://github.com/settings/tokens
  2. Click en «Generate new token»«Generate new token (classic)»
  3. Dale un nombre: AI Auto Blog Git
  4. Selecciona permisos:
    • repo (todos los sub-permisos)
  5. Click en «Generate token»
  6. ⚠️ COPIA EL TOKEN AHORA (solo se muestra una vez)

Ejemplo de token: ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Descomprime el zip del plugin en tu ordenador

# Descomprime el ZIP en tu ordenador
unzip ai-auto-blog-v1.3.3-CRON-SISTEMA.zip

Inicializa GIT en la carpeta del plugin

cd ai-auto-blog

# Inicializa Git
git init

# Añade el repositorio remoto (reemplaza con tu URL)
git remote add origin https://github.com/TU-USUARIO/TU-REPOSITORIO.git

# O si usas SSH:
git remote add origin git@github.com:TU-USUARIO/TU-REPOSITORIO.git

Sube todos los archivos:

# Añade todos los archivos
git add .

# Commit
git commit -m "Initial commit - AI Auto Blog v1.3.3"

# Sube a GitHub (branch main o master según tu repo)
git push -u origin main

y usa el token para push, desde el terminal de tu ordenador.

git push https://TU-TOKEN@github.com/TU-USUARIO/TU-REPOSITORIO.git main

Configuración del blog autónomo

Obén la API KEY de Gemini desde la página de CLAVES API.

Escríbe la API KEY en la página de administración del plugin AI Auto Blog. Prueba la conexión antes de continuar.

Elige el modelo de AI (comienza primero con el modelo Gemini 2.5 Flash.

En el campo «Prompt del sistema» escribe algo parecido a:

Escribe un mini-relato original.

Si lo que deseas es un blog con relatos breves.

Si quieres que cada relato pertenezca a un género determinado, activa la opción «Activar generación con temas aleatorios». Y en el campo «Lista de Temas (separados por comas):» escribe por ejemplo:

Ciencia-ficción, Terror, Narrativa histórica, Novela negra, Novela romántica, Relato costumbrista urbano, Novela erótica, Ironía política, Humor, Humor negro, Crítica social, Relato surrealista, Novela Histórica, Reportaje periodístico, Entrevista periodística, Relato distopía, Comedia romántica

Activa la opción «Usar rotación de temas (evita repetir el mismo tema consecutivamente)».

Selecciona la longitud de los relatos, el estado de la publicación y la periodicidad de ejecuión.

Deja deshabilitada la opción de generar imágenes, ya que la API de Google Imagen 3.0 aún no está disponible públicamente. Esta opción está preparada para cuando se habilite. Mientras tanto, puedes añadir imágenes destacadas manualmente editando los posts.

Si lo prefieres, activa la opción «Enviar email cuando se genera un post».

Ejecución manual

Desde el panel de administración del plugin, puedes ejecutar manualmente el plugin, eligiendo la opción «Manual» en periodicidad de ejecución.

Otra manera de ejecutar manualmente es forzando el trabajo cron desde el sistema (cPanel) de tu servicio de alojamiento. Pero esto solo se puede hacer una vez al día (si tienes la periodicidad de ejecución diaria).

Prompt para interactuar con Gemini

La naturaleza de este prompt es crucial para la obtención de mejores resultados. El plugin está codificado con un prompt predeterminado que es muy general.

Para optimizar la generación de relatos breves, te recomiendo que edites, en las líneas 182 y 386, el archivo /includes/class-gemini-api.php en la carpeta del plugin y escribas algo parecido a:

$full_prompt = "Genera un relato en español eligiendo una temática al azar y siguiendo estas instrucciones:

{$base_prompt}

Requisitos:
Actúa como un editor literario humano con criterio agudo. Tu tarea es escribir un relato breve original sobre un tema elegido al azar, cumpliendo estrictamente con estas reglas:

Formato y Estructura:

Escribe un título único y creativo que NO siga la fórmula: El [sustantivo] de [sustantivo] (ni variaciones genéricas).

El relato debe ir inmediatamente después del título, sin introducciones, saludos ni explicaciones previas.

Escribe el relato en un único párrafo continuo.

Extensión máxima: " . $this->get_length_description($length) . ".

Debe tener planteamiento, nudo y desenlace, pero sin moralejas ni epílogos.

Restricciones de Vocabulario (Prohibiciones):

NO uses las palabras muy manidas como eco, sombra, reflejo, rasguño, chasquido, ni ninguna de sus variantes (plurales, derivados).

Mantén una riqueza léxica elevada: evita repetir sustantivos y adjetivos dentro de la misma narración. Busca sinónimos precisos.

Evita clichés narrativos y frases hechas.

Estilo y Tono Humano:

Prioriza una redacción natural que evite marcas típicas de IA.

Alterna longitudes de frases (mezcla frases cortas e incisivas con oraciones más complejas).

Usa conectores variados y ejemplos concretos.

No uses emojis, ni espacios dobles, ni cierres automáticos.

Reglas Técnicas de Puntuación:

Usa exclusivamente el guion corto - para diálogos (si los hay), sin formato de lista.

Usa comillas rectas en lugar de tipográficas.

Entrega solo la versión final del texto, verificando que no haya explicaciones adicionales al final.

- Usa este formato EXACTO (copia la estructura):

<TITLE>Aquí va el título</TITLE>
<CONTENT>
Aquí el contenido usando HTML válido.
</CONTENT>

IMPORTANTE:

- Todo el contenido HTML debe ir entre <CONTENT> y </CONTENT>
- Usa HTML válido: <p>, <h2>, <h3>, <ul>, <ol>, <li>, <strong>, <em>
- NO uses markdown
- NO agregues nada fuera de estos delimitadores
- El relato debe estar COMPLETO.

Escribe el artículo ahora:
";

Actualización de la versión en GitHub

Para subir una nueva versión del plugin a GItHub, partimos de un zip con los archivos (Por ej.: /Users/antoniocambronerosanchez/Downloads/ai-auto-blog-v1.4.0-WORDPRESS-ORG-SUBMISSION-READY.zip)

Inicializa GIT en la carpeta de la nueva versión del plugin (por ej. ai-auto-blog-3 dentro de Downloads)

cd ai-auto-blog-3

# Inicializa Git
git init

# Añade el repositorio remoto (reemplaza con tu URL)
git remote add origin https://github.com/TU-USUARIO/TU-REPO

Y entonces usaremos el script actualizar-github-simple.sh siguiente que situaremos dentro de la carpeta ai-auto-blog-3:

#!/bin/bash
# Script ULTRA SIMPLE - Sin auto-detección
# AI Auto Blog v1.4.0

echo "================================================"
echo "AI AUTO BLOG - ACTUALIZACIÓN SIMPLE v1.4.0"
echo "================================================"
echo ""

# Colores
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'

# Verificar que estamos en un repo
if [ ! -d ".git" ]; then
    echo -e "${RED}ERROR: No hay carpeta .git aquí${NC}"
    echo "Ejecuta desde la raíz de tu repositorio"
    exit 1
fi

echo -e "${YELLOW}¿Cuál es tu rama principal?${NC}"
echo "1) main"
echo "2) master"
read -p "Elige (1 o 2): " OPCION

if [ "$OPCION" = "1" ]; then
    RAMA="main"
elif [ "$OPCION" = "2" ]; then
    RAMA="master"
else
    echo -e "${RED}Opción inválida${NC}"
    exit 1
fi

echo ""
echo -e "${YELLOW}Cambiando a rama $RAMA...${NC}"
git checkout "$RAMA" 2>/dev/null || git checkout -b "$RAMA"

echo ""
echo -e "${YELLOW}Introduce la ruta completa del ZIP:${NC}"
read -p "Ruta: " ZIP_PATH
ZIP_PATH="${ZIP_PATH/#\~/$HOME}"

if [ ! -f "$ZIP_PATH" ]; then
    echo -e "${RED}ERROR: No encuentro: $ZIP_PATH${NC}"
    exit 1
fi

echo ""
echo -e "${YELLOW}Extrayendo ZIP...${NC}"
TEMP_DIR=$(mktemp -d)
unzip -q "$ZIP_PATH" -d "$TEMP_DIR"

PLUGIN_DIR=$(find "$TEMP_DIR" -type d -name "ai-auto-blog" | head -n 1)
if [ -z "$PLUGIN_DIR" ]; then
    echo -e "${RED}ERROR: No encuentro carpeta ai-auto-blog en el ZIP${NC}"
    rm -rf "$TEMP_DIR"
    exit 1
fi

echo -e "${GREEN}✅ ZIP extraído${NC}"

echo ""
echo -e "${YELLOW}Limpiando archivos viejos...${NC}"
# Guardar .git temporalmente
mv .git "$TEMP_DIR/.git-backup"

# Limpiar todo
rm -rf * .[!.]* 2>/dev/null

# Restaurar .git
mv "$TEMP_DIR/.git-backup" .git

echo ""
echo -e "${YELLOW}Copiando archivos nuevos...${NC}"
cp -r "$PLUGIN_DIR"/* .
cp -r "$PLUGIN_DIR"/.[!.]* . 2>/dev/null || true

rm -rf "$TEMP_DIR"

echo -e "${GREEN}✅ Archivos actualizados${NC}"

echo ""
echo -e "${YELLOW}Creando commit...${NC}"
git add -A
git commit -m "Release v1.4.0 - WordPress.org Ready

✅ 0 errores en Plugin Check
✅ 100% WordPress.org compliance
✅ Listo para producción"

echo ""
echo -e "${YELLOW}Creando tag...${NC}"
git tag -d v1.4.0 2>/dev/null || true
git tag -a v1.4.0 -m "Version 1.4.0 - WordPress.org Ready"

echo -e "${GREEN}✅ Commit y tag creados${NC}"

echo ""
read -p "¿Subir a GitHub? (s/n): " -n 1 -r
echo ""
if [[ $REPLY =~ ^[SsYy]$ ]]; then
    echo "Subiendo a GitHub..."
    git push origin "$RAMA" --force
    git push origin v1.4.0 --force
    echo -e "${GREEN}✅ Subido a GitHub${NC}"
else
    echo "Para subir manualmente:"
    echo "  git push origin $RAMA"
    echo "  git push origin v1.4.0"
fi

echo ""
echo "================================================"
echo -e "${GREEN}✅ ACTUALIZACIÓN COMPLETADA${NC}"
echo "================================================"

Luego ejecutaremos el comando:

bash actualizar-github-simple.sh

Primero responderemos la opción 1 (main):

¿Cuál es tu rama principal?
1) main
2) master
Elige (1 o 2): 1

Después responderemos con la ruta del zip de la nueva versión del plugin:

Introduce la ruta completa del ZIP:
Ruta: /ruta/ai-auto-blog-v1.4.0-WORDPRESS-ORG-SUBMISSION-READY.zip

Y finalmente daremos usuario y token de autorización a GitHub (más arriba tienes el proceso para obtener el token).

Para confirmar que está todo bien subido:

git status
git tag -l
git log --oneline -3

Deberías ver:

✅ nothing to commit, working tree clean
✅ Tag [nueva versión] en la lista
✅ Un commit que dice "Release [texto del commit; por ejemplo: Release v1.4.0 - WordPress.org Ready"

Verifica en GitHub:

  1. Ve al repositorio del plugin en GitHub:
  2. Deberías ver:
    • ✅ Todos los archivos actualizados
    • ✅ Último commit: «[texto del commit]»
    • ✅ En «Tags» o «Releases»: aparece [release del plugin]

Siguiente Paso: Crear el Release en GitHub

Ahora sí debes hacer esto manualmente en GitHub:

1. Ir a crear Release: Ir a la URL del plugin en GitHub añadiendo «/releases/new»

2. Configurar el Release:

  • Choose a tag: Selecciona la nueva release (ya existe)
  • Release title: Por ejemplo: AI Auto Blog v1.4.0 - WordPress.org Ready
  • Description: Copia el contenido de TEXTO-GITHUB-RELEASE.md:
# 🎉 AI Auto Blog v1.4.0 - WordPress.org Submission Ready

## ✅ Status
- **Plugin Check Errors:** 0 (zero!)
- **WordPress.org Compliance:** 100%
- **Production Ready:** Yes
- **Submission Status:** Ready for WordPress.org

---

## 🚀 What's New in v1.4.0

### Complete WordPress.org Compliance
- ✅ All Plugin Check errors resolved (from 100+ to 0)
- ✅ Full security implementation
- ✅ Complete internationalization support
- ✅ Professional English documentation
- ✅ PHPCS compliant code

### Security Improvements
- ✅ Input sanitization with `wp_unslash()` everywhere
- ✅ Output escaping (`esc_html`, `esc_url`, `esc_attr`)
- ✅ ABSPATH protection in all PHP files
- ✅ Nonce verification in all forms
- ✅ Capability checks (`manage_options`)
- ✅ No SQL injection vulnerabilities
- ✅ No XSS vulnerabilities

### Code Quality
- ✅ WordPress coding standards
- ✅ No deprecated functions
- ✅ Clean, well-documented code
- ✅ Proper error handling
- ✅ `date()` → `gmdate()` in CLI scripts
- ✅ `strip_tags()` → `wp_strip_all_tags()`
- ✅ `wp_redirect()` → `wp_safe_redirect()`

### Internationalization (i18n)
- ✅ All strings translatable
- ✅ Proper translator comments
- ✅ Ordered placeholders in `sprintf()`
- ✅ Text Domain: `ai-auto-blog`
- ✅ `/languages` folder created
- ✅ Ready for translations

### Documentation
- ✅ Complete README.txt in English
- ✅ Detailed changelog
- ✅ CLI scripts instructions
- ✅ Installation guides
- ✅ FAQ section
- ✅ System cron documentation

### File Structure
- ✅ CLI test script as `.example` file
- ✅ All markdown files as `.txt`
- ✅ Proper directory protection
- ✅ Clean file organization

---

## 📦 Installation

### Via WordPress Admin (Recommended)
1. Download the ZIP file below
2. WordPress Admin → Plugins → Add New
3. Upload Plugin → Choose File
4. Select `ai-auto-blog-v1.4.0-WORDPRESS-ORG-SUBMISSION-READY.zip`
5. Click "Install Now"
6. Click "Activate"

### Via FTP
1. Download and extract the ZIP file
2. Upload the `ai-auto-blog` folder to `/wp-content/plugins/`
3. Activate the plugin through WordPress admin

---

## 🔧 Configuration

### Basic Setup
1. Go to Settings → AI Auto Blog
2. Enter your Google Gemini API Key
3. Configure your generation preferences
4. Save settings

### System Cron (Recommended)
For reliable automated generation:
1. Rename `cron-test.php.example` to `cron-test.php`
2. Run: `php cron-test.php`
3. Add to server cron (see CLI-SCRIPTS-README.txt)
4. Rename back to `.example`

See included documentation for detailed instructions.

---

## ✨ Key Features

- **Automatic Content Generation** with Google Gemini AI
- **Random Topics System** with rotation
- **System Cron Support** for 100% reliability
- **Cron Diagnostics** built-in troubleshooting
- **Multiple Gemini Models** (2.5 Flash, Pro, 2.0 Flash)
- **Custom Post Type** keeps AI posts separate
- **Detailed Statistics** and logs
- **Email Notifications** for new posts
- **Multiple Content Lengths** (brief, medium, long)
- **Publication Control** (publish or draft)

---

## 📝 Full Changelog

See [readme.txt](readme.txt) for complete changelog history.

### v1.4.0 Highlights
- ✅ **0 Plugin Check errors** (100% clean)
- ✅ All security vulnerabilities fixed
- ✅ Complete i18n implementation
- ✅ WordPress.org standards compliance
- ✅ Production-ready code
- ✅ Professional documentation

From 100+ errors to 0 errors - a complete overhaul! 🎉

---

## ⚠️ Important Notes

### WordPress 6.9 Warning
The Plugin Check tool shows a warning about "Tested up to 6.7 < 6.9". This is **expected and normal**:
- WordPress 6.9 doesn't exist yet
- Current stable version is 6.7
- Plugin is tested with the latest available WordPress version
- This does NOT prevent WordPress.org approval
- Will be updated when WordPress 6.8/6.9 is released

### System Requirements
- WordPress 5.8 or higher
- PHP 7.4 or higher
- Google Gemini API Key (free at https://makersuite.google.com)

---

## 🤝 Support

- **GitHub Issues:** [Report bugs or request features](https://github.com/blogpocket/ai-auto-blog/issues)
- **Documentation:** See included README.txt and guides
- **WordPress.org:** Plugin will be available on WordPress.org soon

---

## 📄 License

GPL v2 or later

---

## 🙏 Credits

- Powered by Google Gemini AI
- Built with ❤️ for the WordPress community
- Thanks to all contributors and testers

---

## 🎯 Next Steps

1. ✅ Install and test the plugin
2. ✅ Configure your API key
3. ✅ Generate your first AI post
4. ✅ Set up system cron (optional)
5. ✅ Star the repository if you find it useful! ⭐

---

**Ready for production. Ready for WordPress.org. Ready to automate your blog! 🚀**
```

---

## 📋 **Pasos para Crear el Release:**

1. **Ve a:** https://github.com/blogpocket/ai-auto-blog/releases/new

2. **Choose a tag:** Selecciona `v1.4.0` del dropdown

3. **Release title:** 
```
   AI Auto Blog v1.4.0 - WordPress.org Ready
```

4. **Description:** Copia y pega todo el texto de arriba ☝️

5. **Attach files:** Sube el archivo:
```
   ai-auto-blog-v1.4.0-WORDPRESS-ORG-SUBMISSION-READY.zip

3. Adjuntar el ZIP:

  • Click en «Attach binaries by dropping them here or selecting them»
  • Selecciona: ai-auto-blog-v1.4.0-WORDPRESS-ORG-SUBMISSION-READY.zip

4. Publicar:

  • Click «Publish release»

Cómo eliminar el error de validación de la versión de WordPress

El plugin Plugin Check (PCP) es una herramienta para comprobar si un plugin cumple con los estándares requeridos por el directorio de plugins de WordPress.org. Con ese plugin se realizó la eliminación de todos los errores y se preparao AI Auto Blog para un posible envío al repositorio de WordPress.

AI Auto Blog se encuentra en mi cuenta de GitHub pero si quieres probarlo debes hacer lo siguiente:

  • Descarga el plugin y edita el archivo ai-auto-blog.php añadiendo a los comentario iniciales las líneas:
 * Requires at least: 5.9
 * Tested up to: 6.9

O la última versión con la que hayas probado el plugin en tu instalación y la última versión requerida.

  • Edita el archivo readme.txt y añade dentro del apartado inicial «=== AI Auto Blog ===» lo siguiente:
Requires at least: 5.9
Tested up to: 6.9

O la última versión con la que hayas probado el plugin en tu instalación y la última versión requerida.

Ambas versiones deben coincidir en los archivos ai-auto-blog.php y readem.txt para que el plugin Plugin Check no arroje ese aviso en su informe.

Actualización del repositorio de GitHub

Si actualizamos el plugin, hay que actualizar también el repositorio de GitHub. Para ello:

Localiza primero el repositorio local. En el terminal del ordenador, ejecuta el siguiente comando:

cd /ai-auto-blog-3
grep "Version:" ai-auto-blog.php

Eso te dará la versión del plugin, si ai-auto-blog-3 es la carpeta conectada a GitHub.

Para comprobar que está conectada a GitHub, ejecuta:

git remote -v

Esto dará como resultado:

origin  https://github.com/blogpocket/ai-auto-blog (fetch)
origin  https://github.com/blogpocket/ai-auto-blog (push)

A continuación, nos aseguraremos de que estamos en main y que la versión está al día:

# 1. Asegurarte de estar en main
git checkout main

# 2. Actualizar por si acaso
git pull origin main

Reemplazar Archivos con v1.4.2

Supongamos que queremos actualizar con la versión 1.4.2:

  1. Descomprimir ai-auto-blog-v1.4.2-COMPLETE-RETRY-FIX.zip en tu Mac
  2. Abrir Finder → Ir a tu carpeta ai-auto-blog-3
  3. Mostrar archivos ocultos: Presiona Cmd + Shift + . (punto)
  4. Seleccionar TODO excepto la carpeta .git
  5. Eliminar todo lo seleccionado
  6. Ir a la carpeta descomprimida → Dentro de ai-auto-blog/
  7. Seleccionar TODO
  8. Copiar y pegar en tu carpeta ai-auto-blog-3

Verificar cambios

Ejecutar dentro de la carpeta (ai-auto-blog-3)

git status

Se debe ver:

modified:   includes/class-gemini-api.php
modified:   ai-auto-blog.php
modified:   readme.txt

O los cambios realizados.

Commit

Ejecuta:

git add -A
git commit -m "Release v1.4.2 - Complete Retry System Fix - Added retry system to fallback method"
git tag -a v1.4.2 -m "Version 1.4.2 - Complete Retry System"
git push origin main --tags

Crear Release en GitHub

  1. Ve a: https://github.com/blogpocket/ai-auto-blog/releases/new
  2. Tag: v1.4.2
  3. Título: AI Auto Blog v1.4.2 - Complete Retry System Fix
  4. Descripción: (el texto que te di antes)
  5. Adjuntar: ai-auto-blog-v1.4.2-COMPLETE-RETRY-FIX.zip
  6. Publicar

Consideraciones fianles

IMPORTANTE: Prueba siempre los nuevos plugins en tu WordPress de una instalación de pruebas, antes de pasarlo a producción o tu entorno real.

AI Auto Blog ha sido probado exhaustivamente en el laboratorio de Blogpocket y lleva funcionando unas cuantas semanas de manera autónoma, sin fallos, en la página de aterrizaje del blog Siempre Irrelevante en Blogpocket.es. Pero es un proyecto en progreso, por lo que está en constante evolución.