Publicación automática de tweets en base a eventos

Publicación automática de tweets

En alguna ocasión he comentado que una de las tareas a las que más atención suelo dedicar es a la automatización de procesos que permitan ahorrarme tiempo en mi día a día, especialmente aquellos que son tediosos o pesados de hacer. En esta línea publiqué hace unas semanas sobre cómo generar y almacenar automáticamente backups de base de datos MySQL con PHP y posteriormente expliqué cómo mediante web scraping mantengo automáticamente actualizada la información de algunos de mis proyectos web. Hoy le toca el turno a la publicación automática de tweets, sin lugar a dudas una de las automatizaciones más útiles que he llevado a cabo en los últimos tiempos.

¿Es necesaria la publicación automática de tweets?

La respuesta, como casi siempre, es que depende. Depende del tipo de proyecto, depende de la cantidad de contenido a compartir y depende especialmente de lo estructurado que sea este contenido. En mi caso es muy útil, y lo utilizo en varios de mis proyectos deportivos, especialmente en futsalia.es y en mis proyectos piloto de fútbol provincial (futbolvalladolid.esfutbolburgos.esfutbolsalamanca.esfutbolsegovia.es y futbolzamora.es). En el ámbito de la información en competiciones deportivas, la inmediatez es muy importante y Twitter ha demostrado ser una de las herramientas esenciales para la captación de tráfico y generación de marca.

Ejemplos de tweets publicados automáticamente

En futsalia.es básicamente necesito la publicación automática de tweets para difundir los resultados de los partidos donde participan equipos de los 25 clubes asociados al proyecto así como noticias generadas por dichos clubes u otros medios afines.

Cada vez que el sistema detecta que se ha actualizado un resultado (la mayor parte de las veces actualizado de forma automática, como ya expliqué en un artículo anterior) de uno de los equipos cuyo club forma parte del proyecto, genera automáticamente un tweet con la información del partido, apoyándose en una infografía (creada también automáticamente) con los escudos de los equipos, el resultado y el patrocinador de dicho equipo:


También quiero en futsalia.es repasar cada semana los resultados que han tenido los equipos de mis clubes asociados, para lo cual también recurro a un proceso automático que genere para cada uno de ellos una infografía a medida y la comparta en la cuenta de twitter:

Por último, también quiero que en futsalia.es automáticamente se compartan las noticias que publican en sus webs nuestros clubes u otros medios colaboradores:

Además, saco partido a otras de mis cuentas de Twitter para que difundan enlaces al contenido de futsalia.es cuando detectan que una jornada ha concluido, como por ejemplo:

En el caso de los proyectos de fútbol provincial, el funcionamiento es ligeramente distinto y algo más simple, dado que en estos proyectos aún no he buscado modelo de negocio y simplemente los utilizo para probar cosas. Por ejemplo, cuando el sistema de cada una de las webs detecta que se ha actualizado un resultado de un equipo de la provincia en categorías regionales o nacionales, genera automáticamente un tweet con infografía como este:

Además, también se recurre a la publicación automática de tweets cuando finaliza la jornada en una competición donde participa algún equipo de esa provincia, y semanalmente para repasar cómo está la clasificación de cada una de las competiciones donde participan equipos de dicha provincia:

En total utilizo actualmente 9 cuentas de Twitter distintas para publicar contenido automáticamente generado, con una media de varios cientos de publicaciones a la semana. Por lo tanto, en mi caso, sin duda merece la pena.

Proceso de publicación automática de tweets

Una vez creada la aplicación de twitter para la cuenta en cuestión (si tienes dudas, este artículo explica cómo hacerlo) tenemos que obtener cuatro claves: consumer keyconsumer secretaccess tokenaccess token secret. Estas cuatro claves nos permitirán hacer llamadas a la API de twitter para publicar automáticamente los tweets.

Cuando hayamos hecho esto, necesitamos generar el procedimiento que automáticamente va a determinar si se debe o no generar de forma automática un tweet. En mi caso, hay dos tipos de procedimientos: los que se disparan cada vez que se actualiza un resultado en mis bases de datos, y aquellos que se disparan de forma regular en base a una tarea cron.

En el caso de los resultados de fútbol sala, consulto si alguno de los equipos participantes pertenece a un club premium, y en caso afirmativo genero el tweet. Para los resultados de fútbol, lo que consulta el sistema es la provincia de los equipos participantes y el tipo de competición del partido, en base a lo cual determina si se debe o no publicar un tweet, y en caso afirmativo qué cuenta o cuentas de twitter deben publicarlo. En ambos casos, una vez se detecta que una jornada ha concluido (se han disputado todos sus partidos), también se genera un tweet de forma automática.

Los procedimientos disparados por tareas cron son mucho más sencillos, ya que se limitan a lanzar el proceso de repaso al estado de las competiciones y no dependen de ningún tipo de evento en tiempo real.

Una vez detectado el evento, el siguiente paso crucial es generar el contenido que va a tener el tweet. Este paso es probablemente uno de los más complicados, especialmente si quieres que tus tweets parezcan lo más humanos posibles y por lo tanto poco repetitivos. En mi caso este proceso ha supuesto bastantes horas y varios miles de líneas de código, pero a modo de ejemplo os dejo varios fragmentos.

Bajo estas líneas podéis ver la función que determina en futsalia.es si tras finalizar un partido, en dicho partido ha participado algún club premium, y en caso afirmativo, en función del resultado (victoria, empate o derrota) utiliza un método distinto para generar el mensaje del tweet.

Cada uno de estos métodos para generar el texto tiene su propia lógica interna, sirva como ejemplo:

Como se puede ver, el objetivo es generar un mensaje lo más aleatorio posible valiéndose de la combinatoria para tener el mayor número de mensajes distintos, y por lo tanto que las posibilidades de repetición sean muy escasas. Simplificando mucho, el proceso básicamente consiste en elegir una estructura de frase y rellenar el contenido, valiéndonos de una lista de sinónimos o expresiones equivalentes que den una mayor variabilidad a nuestros mensajes.

En el ejemplo anterior, que es el procedimiento que genera los mensajes cuando se trata de un partido donde ha ganado el equipo local, se elige aleatoriamente una de las cinco estructuras predeterminadas para este tipo de textos y se rellenan las variables con contenidos que a su vez son también aleatorios. Ejemplo, con el proceso que determina el verbo en caso de goleada con victoria del equipo local:

Evidentemente, todos estos procesos se pueden complicar añadiendo más estructuras, ampliando las listas de sinónimos, etc. El objetivo principal debería ser que un usuario promedio vea los tweets y piense que han sido escritos manualmente por una persona.

Cuando hemos generado el texto del tweet ya podemos publicarlo directamente. Sin embargo, yo añado un paso intermedio y en lugar de publicar directamente envío el tweet a la base de datos, estableciendo una hora de publicación específica en función del día de la semana, de la cantidad de tweets en cola para publicar, y de la hora que sea. De este modo me aseguro una distribución más o menos regular de los tweets.

Una tarea cron está constantemente consultando el estado de los tweets pendientes de publicar, y una vez sobrepasada la hora de publicación es cuando los envía a la API de twitter. Para la publicación automática de tweets, yo utilizo una librería muy ligera para utilizar la API de twitter en PHP: https://github.com/J7mbo/twitter-api-php:

La publicación en sí como podéis ver es muy sencilla, son unas pocas líneas de código. A destacar el hecho de que en función de si nuestro tweet tiene o no tiene una imagen asociada cambia la url de destino de la petición POST. También es muy recomendable hacer una gestión de errores, ya sea por fallo en la API, porque has sobrepasado los 140 caracteres o por cualquier otro motivo. Yo almaceno los errores en la base de datos y los voy procesando posteriormente, aunque eso excede el objetivo de este artículo.

La publicación automática de tweets tiene una cierta complejidad, pero los resultados merecen mucho la pena. A mí desde luego me ha ahorrado cientos de horas de trabajo “manual”, permitiéndome mantener vivos proyectos que sin automatización de tareas no podría mantener.

Uso de cookies

Este sitio web, como todos, utiliza cookies. Si continúas navegando por la web estás dando tu consentimiento para la aceptación de la política de cookies de este sitio web. ACEPTAR

Aviso de cookies