← Volver Explorando el blog de Toni
Toni Domenech

El Blog de Toni Domenech

Ideas, código, reflexiones y experimentos digitales

Panel

IA automatizaciones con Make parte 1

10/10/2025 06:50
IA automatizaciones con Make parte 1

Modelo de Automatización.

Automatismo simple con una fuente RSS + conector de Telegram: mi ejemplo paso a paso

Voy a mostrarte cómo montar un automatismo sencillo pero potente: tomar contenido de un feed RSS y hacer que se publique automáticamente en un canal o grupo de Telegram. Este tipo de integración sirve para:

  • Ahorrar tiempo de vigilancia/manualidad.
  • Mantener informados a suscriptores/colaboradores sin esfuerzo extra.
  • Crear flujos de contenido que puedes reutilizar para varios medios.

Voy a ir paso a paso: qué necesitas, cómo armar el conector, qué cosas tener en cuenta, blueprint visual del flujo, y mejoras posibles según buenas prácticas.

Qué necesitarás / pré-requisitos

Paso a paso: ejemplo práctico

Voy a describir un ejemplo concreto con herramientas libres (o de bajo coste), y tú lo adaptas según tu stack.

Tecnología usada en el ejemplo

  • Lenguaje: Python
  • Librería para RSS: feedparser
  • Librería para Telegram Bot: python-telegram-bot
  • Cron job en servidor Linux para ejecución periódica

Desarrollo

  1. Crear el bot de Telegram En Telegram usarás el BotFather → crear nuevo bot → obtén el token. Añádelo al canal/grupo como administrador para que pueda publicar.
  2. En Telegram usarás el BotFather → crear nuevo bot → obtén el token.
  3. Añádelo al canal/grupo como administrador para que pueda publicar.
  4. Escribir el script que hace la integración
  5. Configurar ejecución periódica En Linux puedes usar cron (“cron job”) para ejecutar el script cada hora. Ejemplo de línea en crontab -e: 0 * * * * /usr/bin/python3 /ruta/a/mi/script/rss_to_telegram.py
  6. En Linux puedes usar cron (“cron job”) para ejecutar el script cada hora.
  7. Ejemplo de línea en crontab -e:
  8. código en python:
import feedparser
from telegram import Bot
import time

RSS_URL = "https://mi-blog.com/feed"
TELEGRAM_TOKEN = "TU_TOKEN_DE_BOT"
CHAT_ID = "@mi_canal_o_id_grupo"

# Mantener un historial de los items ya enviados
processed_entries = set()

def check_and_send():
    feed = feedparser.parse(RSS_URL)
    for entry in feed.entries:
        if entry.id not in processed_entries:
            texto = f"Nuevo artículo: *{entry.title}*\n{entry.link}"
            bot.send_message(chat_id=CHAT_ID, text=texto, parse_mode="Markdown")
            processed_entries.add(entry.id)

if __name__ == "__main__":
    bot = Bot(token=TELEGRAM_TOKEN)
    while True:
        check_and_send()
        time.sleep(3600)  # esperar una hora
  1. Asegurar persistencia del estadoImportante almacenar qué items ya se mandaron. En el ejemplo uso un set en memoria, pero eso se pierde si el script se reinicia.Mejor usar base de datos simple (SQLite), archivo local o cache persistente para marcar los items procesados.
  2. Importante almacenar qué items ya se mandaron. En el ejemplo uso un set en memoria, pero eso se pierde si el script se reinicia.
  3. Mejor usar base de datos simple (SQLite), archivo local o cache persistente para marcar los items procesados.
  4. Importante almacenar qué items ya se mandaron. En el ejemplo uso un set en memoria, pero eso se pierde si el script se reinicia.
  5. Mejor usar base de datos simple (SQLite), archivo local o cache persistente para marcar los items procesados.

Blueprint visual del flujo

Aquí te propongo un diagrama de flujo (puedes hacerlo con draw.io, Lucidchart, etc.) que ilustra la arquitectura del automatismo:

[ Feed RSS ] → [ Analizador (script: consulta RSS) ] → [ Lógica de filtrado (¿nuevo? ¿interesante?) ] → [ Formateo mensaje Telegram ] → [ Envío via Bot ] → [ Registro de lo enviado ]
          ↑                                         |
          └------------ Disparo periódico -------------┘

También sugeriría incluir un bloque opcional de alertas / logs:

                    ┌──> [ Logs locales / fichero ]
                    │
[ Feed RSS ] → ... → Bot → Telegram → [ Alertas si falla envío o si redundancia ]

Imagina el blueprint como un mapa para que si algo falla sepas dónde mirar.

Capturas / imágenes sugeridas

Para hacerlo visual en el post, sería ideal incluir:

  • Pantalla de cómo obtienes el token de Telegram con BotFather.
  • Código del script, resaltando las partes: parseo RSS, filtrado, envío, almacenamiento estado.
  • Ejemplo del crontab.
  • Ejemplo de mensaje Telegram ya enviado, cómo aparece en el canal/grupo.
  • Diagrama de flujo (“blueprint”) como un gráfico.

Consejos de buenas prácticas & mejoras

  1. Manejo de errores robusto Capturar excepciones (fallos de red, parseo inválido, errores del bot). Registrar los errores (logs), notificar si algo crítico falla (por ejemplo, por email o Telegram).
  2. Capturar excepciones (fallos de red, parseo inválido, errores del bot).
  3. Registrar los errores (logs), notificar si algo crítico falla (por ejemplo, por email o Telegram).
  4. Evitar duplicados Como te decía, usar almacenamiento persistente para lo enviado. Verificar no solo entry.id, también entry.link u otros atributos; algunos RSS pueden no tener id estable.
  5. Como te decía, usar almacenamiento persistente para lo enviado.
  6. Verificar no solo entry.id, también entry.link u otros atributos; algunos RSS pueden no tener id estable.
  7. Frecuencia adecuada No pongas tiempos demasiado cortos para evitar sobrecargar RSS ni sobrepasar límites del servidor del feed. Si usas muchos feeds, aplica backoff si hay errores o retrasos.
  8. No pongas tiempos demasiado cortos para evitar sobrecargar RSS ni sobrepasar límites del servidor del feed.
  9. Si usas muchos feeds, aplica backoff si hay errores o retrasos.
  10. Formato atractivo en mensajes Usa Markdown o HTML (según soporte del bot) para que los mensajes se vean mejor (negritas, links, emojis, separadores). Quizá incluye imagen destacada si el RSS la tiene, para hacerlo visual.
  11. Usa Markdown o HTML (según soporte del bot) para que los mensajes se vean mejor (negritas, links, emojis, separadores).
  12. Quizá incluye imagen destacada si el RSS la tiene, para hacerlo visual.
  13. Configurabilidad Hacer parámetros externos: URL del RSS, chat_id, token, frecuencia, plantilla de mensaje. Permitir excluir fuentes no deseadas, keywords irrelevantes, etc.
  14. Hacer parámetros externos: URL del RSS, chat_id, token, frecuencia, plantilla de mensaje.
  15. Permitir excluir fuentes no deseadas, keywords irrelevantes, etc.
  16. Seguridad No exponer el token de Telegram en repositorios públicos. Validar datos del RSS si vienen de fuentes fiables.
  17. No exponer el token de Telegram en repositorios públicos.
  18. Validar datos del RSS si vienen de fuentes fiables.
  19. Escalabilidad Si normalmente manejas muchos RSS o envías muchos mensajes, quizá mover el script a una arquitectura de microservicios, usar colas (RabbitMQ, etc.). Cachear resultados, usar webhooks si disponible.
  20. Si normalmente manejas muchos RSS o envías muchos mensajes, quizá mover el script a una arquitectura de microservicios, usar colas (RabbitMQ, etc.).
  21. Cachear resultados, usar webhooks si disponible.

Conclusión

Este automatismo es relativamente simple de montar, pero muy poderoso. Me permite mantener sincronizado un canal de comunicación con contenido nuevo sin tener que estar pendiente. Además, al estructurarlo bien desde el principio (almacenamiento de estado, logs, buen formateo), la base estará servida para futuras versiones más complejas (por ejemplo, varios feeds, filtros, integración con base de datos mayor, etc.).