Publicación indirecta de artículos de ChatGPT, Claude y Gemini en el blog: aprovecha el límite gratuito de los LLM con una sola línea de curl

5 min read · 1,130 words

Consejos prácticos / Gestión de blogs / Python · API
Aprox. 2400 caracteres

Al escribir artículos de blog con LLM, el patrón más común es escribir "escribe una guía sobre este tema" en la ventana de chat de ChatGPT o Claude, copiar manualmente el HTML recibido y pegarlo en la interfaz de administración de Blogger. Esto toma unos 5 minutos, y hay que configurar las etiquetas, la meta descripción y las categorías manualmente cada vez. Hemos creado un endpoint de desvío que envía la salida del chat del LLM directamente a un borrador (DRAFT) de Blogger con una sola línea de curl.

Por qué lo creamos

Llamar directamente a las API de los LLM (por ejemplo, Anthropic o Google) acumula costos de tokens, lo que cuesta entre $0.10 y $0.50 por artículo. Para 100 artículos, esto representa entre $10 y $50. Para un blog gestionado por una sola persona, como el nuestro, esto es una carga financiera.

Por otro lado, las suscripciones a ChatGPT Plus, Claude Pro o Gemini Advanced tienen una tarifa plana de $20 al mes. Incluso si escribes 100 artículos al mes, el costo adicional es cero. Sin embargo, el flujo de trabajo de copiar y pegar desde la ventana del chat a Blogger es tan lento que al final terminas volviendo a las llamadas de API.

Solución: Envías el HTML recibido del chat del LLM a un endpoint de publicación de la webapp en una sola línea → pasa por la inyección automática de etiquetas, metadatos y gráficos, y la cadena de hooks de validación SEO → se convierte en un borrador (DRAFT) de Blogger. Lo único que tiene que hacer el usuario es recibir la respuesta en el chat y ejecutar curl una vez.

Con una tarifa plana de $20 al mes, puedes publicar 100 artículos pasando por toda la cadena de hooks de publicación de la webapp (desinfección, control de calidad y 5 canales de indexación).

Cómo funciona

Existe un endpoint independiente dentro de la webapp: POST /api/writer/external-publish.

Estructura de la solicitud (Request shape)


{
 "title": "Título del artículo",
 "content_html": "<p>HTML del cuerpo...</p><h2>Sección</h2>...",
 "label": "Consejos prácticos",
 "post_type": "guide",
 "primary_keyword": "palabra clave",
 "meta_description": "Meta descripción de 100-160 caracteres"
}

Solo tienes que insertar el HTML recibido del chat del LLM directamente en content_html y completar los otros 5 campos.

Procesamiento en el servidor

  1. Autenticación: Limitado a localhost (127.0.0.1). Sin exposición externa.
  2. Normalización de etiquetas (Label normalize): Mapea automáticamente variaciones como ["활용 팁", "사용팁", "tips"] a una de las 6 etiquetas canónicas del sitio. Si no es una etiqueta conocida, responde con {"error":"unknown_label","allowed":["..."]}.
  3. Verificación de HTML: Elimina etiquetas