Este proyecto es una reversión de mi proyecto bot de X/Twitter llamado "Messi Perfect Shots", ahora reescrito en TypeScript y completamente automatizado en la nube usando Cloudinary y GitHub Actions.
Messi Perfect Shots es un bot de X/Twitter dedicado a publicar fotos de Lionel Messi todos los días, de forma automática y aleatoria. Empezó en abril de 2024 como un proyecto en JavaScript ejecutado localmente con el Programador de Tareas de Windows, y logró más de 5.000 seguidores en un año, con más de 800 publicaciones al día de hoy.
👉 Link: Messi Perfect Shots
Esta nueva versión 2.0 representa una migración a tecnologías más sostenibles, y prácticas más eficientes:
| Característica | Antes (JavaScript y local) | Ahora (TypeScript y en la nube) |
|---|---|---|
| ✍ Lenguaje | JavaScript | TypeScript y YAML |
| 🚀 Ejecución | Programador de Tareas (local) | GitHub Actions (cloud, 100% automatizado) |
| 📷 Imágenes | Carpeta local en mi sistema | Cloudinary (almacenamiento en la nube) |
| 🤖 Funcionamiento | Se realiza en mi máquina, 100% local | Se ejecuta solo desde GitHub |
| 🔺 Escalabilidad | Limitada a herramientas locales | Más flexible con GitHub Actions y Cloudinary |
- Selección aleatoria: El bot elige una imagen aleatoria desde un repositorio en Cloudinary.
- Publicación automática: La imagen se publica en la cuenta de X/Twitter conectada: @MessiPF.
- Evita repeticiones: Una vez publicada, la imagen es renombrada en Cloudinary con un prefijo (
Posted-) para evitar volver a usarla. - Automatización diaria: Gracias a GitHub Actions, el bot se ejecuta automáticamente todos los días a las 17:00 y 22:00 hora Argentina.
-
Clonar el proyecto y ejecutar
npm installpara instalar las dependencias. -
Crear y completar un archivo
.envcon las variables de entorno necesarias:# Claves para vincularse a la cuenta de X/Twitter TWITTER_API_KEY="" TWITTER_API_SECRET="" TWITTER_ACCESS_TOKEN="" TWITTER_ACCESS_SECRET="" # Claves para vincularse a la cuenta de Cloudinary CLOUD_NAME="" CLOUDINARY_API_KEY="" CLOUDINARY_API_SECRET=""
- Para obtener las credenciales de X/Twitter, hay que entrar a X Developer Platform y crear un proyecto vinculado a alguna cuenta de X/Twitter existente. Y no olvidarse de configurar permisos de escritura y no solo lectura.
- Para obtener las credenciales de Cloudinary, simplemente hay que registrarnos en Cloudinary e iniciar sesión.
- Crear y guardar cada una de estas claves en GitHub Secrets. Esto se configura en:
[Tu repositorio ya creado] > Settings > Secrets and variables > Actions
-
Ejecutar
npx tsc○para compilar el proyecto. -
Finalmente, ejecutar
node dist/main.jspara hacer una prueba manual.
El archivo post-image.yml que está en la carpeta .github/workflows/ se usa para definir cuándo se va a ejecutar el bot y qué pasos va a realizar. En este caso, el proceso se hace todos los días a las:
- 🕔 17:00 (Argentina) → "0 20 * * *" UTC
- 🕘 21:00 (Argentina) → "0 0 * * *" UTC
También se puede ejecutar el flujo manualmente desde la pestaña de Actions en GitHub. Obviamente, uno puede modificar esta parte (el on-schedule) a su antojo, para especificar cuándo se tiene que ejecutar el proceso del bot.
Como aclaré al principio, este proyecto es una reescritura de mi bot anterior hecho en JavaScript, el cual utilizaba carpetas locales y el Programador de Tareas de Windows. Si te interesa ver cómo funcionaba esa versión, podés revisarla en su repositorio: Antiguo Proyecto. Aunque lo ideal sería hacerlo como vimos recién.
Si tenés preguntas, ideas o querés crear tu propio bot, podés escribirme en: junmigue7@gmail.com
