Guía paso a paso: conectar WordPress con la API de OpenAI para generar contenido
Si ya tienes un WordPress vivo (aunque medio abandonado) y estás cansado de copiar y pegar desde ChatGPT,
el siguiente paso lógico es claro: conectar tu web directamente con la API de OpenAI y dejar que la máquina
trabaje desde dentro.
En esta guía vas a ver, de forma práctica:
- Cómo usar plugins que ya integran OpenAI en WordPress.
- Cómo llamar directamente a la API desde WordPress con PHP.
- Cómo montar un pequeño backend en Node.js que genere contenido y lo mande a WordPress.
- Y por qué, aun haciendo todo eso, te quedas lejos de un sistema programático como el que usamos en PotionServices.
1. Qué opciones tienes realmente
No todos los enfoques sirven para lo mismo. Este resumen te sitúa:
| Enfoque | Ventaja | Limitación | Para quién |
|---|---|---|---|
| Plugin “IA para WordPress” | Instalar, pegar API key y usar | Flujo muy manual, difícil escalar | Usuarios no técnicos |
| Código en PHP dentro de WordPress | Control total de prompts y flujo | Requiere tocar código y mantenerlo | Desarrolladores / usuarios avanzados |
| Backend externo en Node.js | Ideal para programmatic SEO y automatizaciones grandes | Es un proyecto de desarrollo, no un apaño rápido | Proyectos ambiciosos, agencias, nicheros serios |
2. Primer paso obligatorio: conseguir y guardar tu API key de OpenAI
Sea cual sea la opción que elijas, necesitas una API key de OpenAI.
- Entra en la plataforma de OpenAI, en la sección de API.
- Crea una nueva API key.
- Guárdala en un lugar seguro (variable de entorno, configuración del servidor, etc.).
En un WordPress típico, una forma sencilla de usarla es definirla como constante en wp-config.php:
define( 'OPENAI_API_KEY', 'TU_CLAVE_SECRETA_AQUI' );
Después podrás leer OPENAI_API_KEY desde tu plugin o snippet sin tener que pegar la clave
en cada archivo.
3. Opción plug-and-play: conectar WordPress con OpenAI usando plugins
Si quieres empezar sin tocar código, lo más fácil es usar plugins que ya integran la API de OpenAI.
Algunos ejemplos populares (pueden cambiar con el tiempo, pero la idea es esta):
- AI Engine (de MeowApps): añade generación de contenido, chatbots, copiloto en el editor, etc.
- AI Power / GPT AI Power: paquete muy completo para crear posts, descripciones de productos, chatbots y más.
- Easy GPT for WP: centrado en generar y actualizar contenido (posts, páginas, WooCommerce) usando tu propia API key.
El flujo típico es:
- Ir a Plugins > Añadir nuevo y buscar el plugin por su nombre.
- Instalar y activar.
- Entrar en el nuevo menú del plugin (por ejemplo, “AI Engine”, “AI Power”, “Easy GPT”).
- Pegar tu API key de OpenAI en el campo correspondiente y guardar.
- Activar los módulos de “Content writer”, “Bulk content”, “AI assistant”, etc., según el plugin.
Con eso ya puedes:
- Generar borradores directamente desde el editor de entradas.
- Crear descripciones de productos para WooCommerce.
- Actualizar o reescribir contenido antiguo con ayuda de la IA.
Está muy bien para darle superpoderes a tu WordPress, pero todo sigue siendo bastante
manual: tú haces clic, tú decides el prompt, tú revisas, tú publicas. Para un blog mediano es perfecto;
para proyectos grandes de contenido masivo se empieza a quedar pequeño.
4. Opción técnica 1: llamar a la API de OpenAI desde WordPress (PHP)
Si quieres más control, lo serio es crear tu propia integración en PHP. La idea es:
- Añadir un botón “Generar con IA” en el editor de posts.
- Al pulsarlo, WordPress llama a la API de OpenAI con un prompt.
- La respuesta se inserta automáticamente como contenido del post (o en un campo personalizado).
Este es un ejemplo simplificado de un plugin que añade un botón en el editor
y, al pulsarlo, genera contenido usando el título del post:
<?php
/**
* Plugin Name: WP OpenAI Demo
*/
// Añade metabox con botón en el editor de posts
add_action( 'add_meta_boxes', function() {
add_meta_box(
'wp_openai_box',
'Generar contenido con OpenAI',
'wp_openai_box_callback',
'post',
'side'
);
} );
function wp_openai_box_callback( $post ) {
?>
<p>
<button type="button" class="button" id="wp-openai-generate">
Generar con IA
</button>
</p>
<script>
document.addEventListener('DOMContentLoaded', function () {
const btn = document.getElementById('wp-openai-generate');
if (!btn) return;
btn.addEventListener('click', async () => {
btn.disabled = true;
btn.innerText = 'Generando...';
const response = await fetch(ajaxurl, {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
body: new URLSearchParams({
action: 'wp_openai_generate',
post_id: '<?php echo esc_js( $post->ID ); ?>',
_ajax_nonce: '<?php echo wp_create_nonce( 'wp_openai_generate' ); ?>'
})
});
location.reload();
});
});
</script>
<?php
}
// Acción AJAX que llama a OpenAI y guarda el contenido en el post
add_action( 'wp_ajax_wp_openai_generate', function() {
check_ajax_referer( 'wp_openai_generate' );
$post_id = intval( $_POST['post_id'] ?? 0 );
if ( ! $post_id ) {
wp_send_json_error( 'ID de post no válido' );
}
$title = get_the_title( $post_id );
$prompt = "Eres un redactor profesional. Escribe un artículo de 1.000 palabras "
. "para un blog, con el título: \\"$title\\". Usa encabezados (H2, H3), "
. "tono cercano y estructura clara.";
$request_body = [
'model' => 'gpt-4.1-mini', // ajusta al modelo que uses
'input' => [
[
'role' => 'user',
'content' => $prompt,
],
],
];
$response = wp_remote_post(
'https://api.openai.com/v1/responses',
[
'headers' => [
'Authorization' => 'Bearer ' . OPENAI_API_KEY,
'Content-Type' => 'application/json',
],
'body' => wp_json_encode( $request_body ),
'timeout' => 60,
]
);
if ( is_wp_error( $response ) ) {
wp_send_json_error( $response->get_error_message() );
}
$data = json_decode( wp_remote_retrieve_body( $response ), true );
// Adaptar según el formato devuelto por el modelo
$generated = $data['output'][0]['content'][0]['text'] ?? '';
if ( ! $generated ) {
wp_send_json_error( 'No se recibió texto de la IA.' );
}
// Guardar el contenido generado en el post
wp_update_post( [
'ID' => $post_id,
'post_content' => wp_kses_post( $generated ),
] );
wp_send_json_success( 'Contenido generado.' );
} );
Con algo así ya puedes crear tu propio flujo de generación: defines el prompt, usas el título u otros datos
del post, llamas a la API y rellenas el contenido con un clic.
A partir de aquí, lo lógico es ir añadiendo:
- Campos personalizados (por ejemplo: ciudad, categoría, tipo de negocio…).
- Plantillas más elaboradas de prompts que usen esos campos.
- Procesos en lote (cron, WP-CLI) para generar muchos posts a la vez.
5. Opción técnica 2: backend en Node.js que genera contenido y lo envía a WordPress
Cuando ya quieres hacer programmatic SEO serio (cientos o miles de posts, uso de bases de datos,
varias webs), lo más limpio suele ser tener un pequeño backend externo, por ejemplo en Node.js.
La idea es:
- Tener una base de datos o un CSV con todo lo que quieres generar (títulos, ciudades, productos, etc.).
- Un script en Node.js que recorra esa lista, llame a OpenAI y genere contenido para cada fila.
- Crear el post en WordPress usando la REST API o WP-CLI.
Ejemplo mínimo en Node.js usando el SDK oficial de OpenAI:
npm install openai node-fetch
// archivo: generate-post.js
import OpenAI from "openai";
import fetch from "node-fetch";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
async function generarArticulo(titulo) {
const prompt = `
Eres un redactor experto en SEO. Escribe un artículo de 1.200 palabras
para un blog con el título: "${titulo}".
Usa encabezados (H2, H3), listas y un tono cercano y profesional.
No repitas ideas y no inventes datos delicados.`;
const response = await client.responses.create({
model: "gpt-4.1-mini",
input: [
{ role: "user", content: prompt }
],
});
const texto =
response.output?.[0]?.content?.[0]?.text ??
JSON.stringify(response, null, 2);
return texto;
}
async function crearPostEnWordPress(titulo, contenido) {
const wpUser = process.env.WP_USER;
const wpPass = process.env.WP_PASSWORD;
const wpUrl = process.env.WP_URL; // p.ej. "https://tusitio.com/wp-json/wp/v2/posts"
const auth = Buffer.from(`${wpUser}:${wpPass}`).toString("base64");
const res = await fetch(wpUrl, {
method: "POST",
headers: {
"Authorization": `Basic ${auth}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
title: titulo,
content: contenido,
status: "draft" // o "publish" si quieres publicarlo directamente
}),
});
if (!res.ok) {
const errText = await res.text();
throw new Error(`Error al crear post: ${res.status} - ${errText}`);
}
const data = await res.json();
console.log("Post creado con ID:", data.id);
}
async function main() {
const titulo = "Ejemplo: Guía para visitar Sevilla en 3 días";
const contenido = await generarArticulo(titulo);
await crearPostEnWordPress(titulo, contenido);
}
main().catch(console.error);
A partir de este esqueleto, puedes leer títulos de una base de datos, iterar, generar diez, cien o mil posts
y dejarlos todos creados como borrador en WordPress para revisarlos.
6. Buenas prácticas para no romper nada
Algunas reglas básicas para no estrellarte al integrar IA en WordPress:
- Genera el contenido siempre en el backend (panel o scripts), no al vuelo en el frontal.
- Revisa, aunque sea por muestreo, lo que genera la IA antes de publicar.
- Controla los costes: modelos más baratos para volumen, mejores modelos para piezas clave.
- Registra qué posts han sido generados por IA y con qué plantillas de prompt.
- No conviertas tu web en un vertedero automático: volumen sin criterio no es estrategia.
7. Hasta dónde llegas tú… y dónde entra PotionServices
Con todo lo anterior puedes:
- Conectar WordPress con la API de OpenAI vía plugins.
- Crear tus propios botones internos para generar artículos desde el editor.
- Montar un backend en Node.js que lea una base de datos y llene tu WordPress de contenido.
Es decir, puedes dejar de ser “el que copia y pega desde ChatGPT” y pasar a tener integraciones reales
entre tu web y la IA.
Pero cuando quieres:
- Trabajar con bases de datos grandes (municipios, productos, modelos, herramientas, categorías…).
- Usar plantillas programables con condiciones, bloques fijos y bloques dinámicos generados por IA.
- Publicar cientos o miles de artículos con HTML y CSS ya pensados, respetando clases y estructura.
- Tener un sistema estable que no dependa de un plugin aleatorio ni de scripts frágiles.
Ahí ya no hablamos de un “truco con la API”, sino de un motor diseñado para hacer contenido masivo
de forma seria. Eso es lo que usamos en PotionServices: Plantilla + Publicador, bases de datos, IA
y conexión directa con la API de WordPress para publicar a escala.
Si quieres experimentar por tu cuenta, con esta guía tienes para jugar durante un buen rato.
Si lo que quieres es ir directamente a contenido masivo bien planteado, puedes ver nuestro servicio aquí:

