IA

Cómo Construí un Sistema de Automatización de Artículos con IA: Mi Experiencia

Introducción: El Problema que Quería Resolver

Hace unos meses me enfrenté a un problema: gestionar contenido para varios blogs era un proceso lento y repetitivo. Entre buscar fuentes, reescribir para evitar duplicados, optimizar para SEO y publicar… cada artículo me llevaba horas. Así que decidí construir una solución: Article Scraper, un sistema que automatiza todo el proceso usando web scraping e inteligencia artificial.

En este tutorial os cuento cómo lo hice, qué tecnologías usé y cómo funciona todo por dentro.

La Arquitectura: Django como Base

Decidí construir el sistema sobre Django por varias razones:

  • Framework maduro y robusto
  • Excelente manejo de modelos y bases de datos
  • Sistema de usuarios y permisos ya integrado
  • Fácil integración con APIs externas

La estructura del módulo quedó así:

📁 article_scraper/
├── models.py       → Configuración de API keys y usuarios
├── services.py     → Toda la lógica de scraping y procesamiento
├── views.py        → Interfaz y flujo del usuario
└── wordpress_categories_tags.py → Gestión de taxonomías

Parte 1: El Scraper – Extrayendo Contenido Limpio

El Reto del Web Scraping

Lo primero que necesitaba era extraer contenido de URLs de forma limpia. No quería publicidad, menús, footers ni nada de eso. Solo el artículo.

Mi solución:

  • Usé para parsear el HTML
  • Implementé headers realistas para evitar bloqueos
  • Configuré un sistema de reintentos con delays aleatorios
# Simular un navegador real
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...',
    'Accept': 'text/html,application/xhtml+xml...',
    'Accept-Language': 'es-ES,es;q=0.9,en;q=0.8',
}

El scraper elimina automáticamente:

  • Menús de navegación
  • Publicidad
  • Sidebars
  • Footers
  • Scripts y estilos

Y extrae solo lo importante: título y contenido del artículo.

Parte 2: Inteligencia Artificial – La Reescritura con OpenAI

Por Qué GPT-4

Probé varias soluciones, pero OpenAI GPT-4 resultó ser la más efectiva para:

  • Reescribir contenido manteniendo el sentido
  • Generar metadatos SEO optimizados
  • Crear títulos atractivos
  • Sugerir categorías y tags inteligentemente

Cómo Implementé el Procesamiento

Dividí el proceso en dos fases:

Fase 1 – Generación de Contenido:

# Le pido a GPT que:
- Genere un título optimizado para SEO
- Reescriba completamente el artículo
- Cree un resumen/excerpt
- Genere meta título (máx. 60 caracteres)
- Genere meta descripción (máx. 155 caracteres)

Fase 2 – Taxonomías Inteligentes:

# Primero obtengo todas las categorías y tags del WordPress
# Luego le pido a GPT que:
- Seleccione 2-3 categorías existentes apropiadas
- Sugiera 2-3 categorías nuevas si es necesario
- Elija 4-5 tags existentes relevantes
- Proponga 3-5 tags nuevos complementarios

Esta separación en dos fases me permitió optimizar costos y tener mejor control sobre el proceso.

El Sistema de Prompts Personalizados

Añadí una funcionalidad muy interesante: prompts personalizados por usuario. Cada usuario puede configurar instrucciones específicas como:

  • «Escribe en tono formal para sector financiero»
  • «Usa siempre ejemplos prácticos y lenguaje cercano»
  • «Incluye datos estadísticos cuando sea posible»

Esto se guarda en la base de datos y se añade al contexto de GPT automáticamente.

Parte 3: Integración con CMS – WordPress y Más

La API de WordPress

Para publicar en WordPress usé su REST API. Lo que implementé:

1. Autenticación con Application Password:

# Uso autenticación básica con credenciales seguras
auth = (username, application_password)

2. Paginación para taxonomías:
El problema es que WordPress limita los resultados. Mi solución fue implementar un sistema que recorre todas las páginas:

while True:
    response = requests.get(url, params={'per_page': 100, 'page': page})
    # Procesar y continuar hasta que no haya más resultados

3. Creación automática de categorías y tags:
Si una categoría o tag no existe, el sistema la crea automáticamente.

Compatibilidad con Otros CMS

No quería limitarme a WordPress, así que diseñé la arquitectura para soportar:

  • PrestaShop (para blogs de e-commerce)
  • Ghost (CMS moderno)
  • Strapi (headless CMS)
  • Cualquier CMS con API REST

Parte 4: Integración con Facebook

El Reto del Doble Token

Publicar en Facebook fue más complejo de lo que pensaba. Descubrí que necesitaba un sistema de doble token:

1. User Access Token:

  • Lo renuevo automáticamente cada 27 días
  • Lo guardo en la base de datos

2. Page Access Token:

  • Lo genero dinámicamente cada vez
  • NO lo guardo (se obtiene del user token)
  • Es el que realmente uso para publicar

Esto garantiza que los permisos sean correctos y no expire nada inesperadamente.

Dos Modos de Entrada

Implementé dos formas de usar el sistema:

Modo 1: Desde URL

Usuario introduce URL
    ↓
Scraping automático
    ↓
GPT reescribe
    ↓
Selección de taxonomías
    ↓
Preview interactivo
    ↓
Publicación

Modo 2: Texto Manual

Usuario pega texto
    ↓
GPT genera título y reescribe
    ↓
Selección de taxonomías
    ↓
Preview interactivo
    ↓
Publicación

El preview interactivo fue clave: permite editar todo antes de publicar.

La Base de Datos: Modelos en Django

Creé varios modelos para gestionar todo:

ApiKey – Gestión de Credenciales

class ApiKey(models.Model):
    group = models.ForeignKey(Group, ...)
    api_type = models.CharField(choices=['openai', 'wordpress', 'facebook'])
    api_key = models.TextField()
    api_url = models.URLField()  # Para WordPress
    facebook_page_id = models.CharField()  # Para Facebook

Esto permite que cada grupo tenga sus propias credenciales.

UserPromptConfig – Prompts Personalizados

class UserPromptConfig(models.Model):
    user = models.OneToOneField(User, ...)
    custom_prompt = models.TextField()

ArticleHistory – Historial Completo

Guardo cada artículo procesado con:

  • URL o texto original
  • Contenido generado
  • Categorías y tags seleccionados
  • Tipo de entrada (URL o manual)
  • Timestamp

Lecciones Aprendidas

1. El Web Scraping No Es Trivial

Cada sitio tiene su estructura. Añadir headers realistas y delays aleatorios fue crucial para evitar bloqueos.

2. GPT-4 es Potente pero Caro

Dividir en dos fases redujo costos significativamente. Típicamente cada artículo cuesta $0.01-0.03.

3. Los Previews Son Imprescindibles

El preview interactivo te permite revisar y ajustar antes de confirmar.

4. Multi-tenancy Desde el Inicio

Diseñé el sistema para múltiples usuarios y grupos desde el principio. Esto facilitó mucho el escalado.

Consideraciones Éticas

Este sistema está diseñado para:

  • Transformar contenido, no copiarlo
  • Usarse con contenido público o licenciado
  • Añadir valor al contenido original
  • Funcionar como herramienta de curación

Es importante verificar los permisos de uso de las fuentes.

Tecnologías Utilizadas

Backend:

  • Django
  • Python

Web Scraping:

  • BeautifulSoup4
  • Requests

IA:

  • OpenAI API (GPT-4)

Integraciones:

  • WordPress REST API
  • Facebook Graph API

Base de Datos:

  • SQLite (desarrollo)
  • PostgreSQL (producción)

Resultados

Después del desarrollo y refinamiento, el sistema:

  • Reduce el tiempo de procesamiento de horas a pocos minutos
  • Genera contenido completamente único
  • Optimiza automáticamente para SEO
  • Publica en múltiples plataformas
  • Gestiona taxonomías inteligentemente

Próximas Mejoras

Estoy trabajando en:

  • Soporte para más CMS (Drupal, Joomla)
  • Integración con Instagram
  • Sistema de programación de publicaciones
  • Analytics integrado

Conclusión

Construir Article Scraper fue un proyecto interesante que combinó múltiples tecnologías: web scraping, inteligencia artificial, APIs REST y gestión de usuarios. Django demostró ser una excelente base para este tipo de sistema, y GPT-4 realmente marca la diferencia en la calidad del contenido generado.

Si estáis pensando en construir algo similar, mi consejo es:

  1. Empezad con un MVP simple
  2. Probad diferentes modelos de IA
  3. Implementad previews antes de publicar
  4. Diseñad para multi-tenancy desde el inicio
  5. No subestimeis la complejidad del web scraping

El código está en producción y procesando artículos diariamente. Ha sido una experiencia de aprendizaje increíble.


Preguntas Frecuentes

¿Cuál fue la parte más difícil?
La gestión del doble token de Facebook y hacer el scraping robusto contra diferentes estructuras web.

¿Funcionaría para mi blog?
Si tu CMS tiene API REST (WordPress, Ghost, Strapi, PrestaShop), sí. Es bastante flexible. Sólo se necesita algo de desarrollo.

¿Qué pasa si un sitio bloquea el scraping?
El sistema tiene reintentos y delays, pero si un sitio bloquea agresivamente, siempre queda la opción de entrada manual.


Tags: tutorial, django, python, web scraping, openai, gpt-4, automatización, cms, desarrollo web, inteligencia artificial, api rest, wordpress, facebook

descuderosanchez@gmail.com

Compartir
Publicado por
descuderosanchez@gmail.com

Artículos Recientes

Solución Verifactu para Prestashop

Módulo Verifactu para Prestashop: La Solución Definitiva para 2026 Si tu tienda online usa Prestashop,…

5 meses ago

Por qué debes actualizar tu PrestaShop: casos reales de hackeos, pérdidas de ventas y cómo evitarlos

Tener una tienda PrestaShop desactualizada no es simplemente arriesgado: es una amenaza directa para tus…

8 meses ago

Automatiza los procesos de tu empresa con N8N y OpenAI (gratis y a tu medida)

¿Te imaginas contar con un sistema de automatizaciones totalmente gratuito para tu empresa? ¡Es posible!…

10 meses ago

Problemas para traducir Temas Hijos en Prestashop 1.7+

Se puede corregir el problema modificando en el CORE el siguiente código:

11 meses ago

Script para Duplicar BBDD en otro Prestashop

Modifica tu tienda en un solo sitio Si por algún motivo, no utilizas multitienda y…

5 años ago

Prestashop – No se muestran las opciones de pago

En el proceso de compra no se muestran las opciones de pago Si te has…

5 años ago