Cómo hacer un bot de twitter y ganar seguidores automáticamente

¡Buenas! Como ya os habréis dado cuenta, una de las cosas que más me gusta es automatizar procesos y tratar de conseguir un gran impacto con ello, hoy toca hablar sobre la automatización de Twitter. Si eres usuario de esta red social seguramente te habrás fjado que la mayoría de cuentas funcionan de manera automática parcial o completamente y cada vez hay más cuentas que utilizan la API de Twitter para publicar su contenido.

como crear bot twitter

Hace unos meses se hizo muy viral el WorldWarBot, se trataba de una cuenta que simulaba una guerra mundial entre países y que obtuvo una gran repercusión y le salieron muchos clones, pero si estás leyendo este artículo, seguramente lo que te interese de los bots de twitter es cómo aplicarlos a tu estrategia de Marketing Online para promocionar tu contenido, así que vamos a ello!

Creando un bot de Twitter utilizando NodeJs

En este caso vamos a utilizar NodeJs para la creación del bot ya que es una tecnología relativamente sencilla de utilizar si se tienen conocimientos de programación y su gestor de paquetes NPM tiene librerías para casi cualquier cosa que se te ocurra.

El primer paso para la creación del bot es instalar Node, si todavía no lo tienes lo puedes descargar desde su web oficial, recomiendo descargar la versión LTS ya que es la más estable y la que tiene soporte. Una vez lo hayas instalado puedes comprobar que está operativo poniendo este comando en la consola:


node --version

Si todo está bien podemos seguir e inicializar el proyecto de Node donde estará nuestro bot, para ello muévete desde el terminal a la carpeta donde quieras que esté el bot y ejecutar el siguiente comando para crear el proyecto:

 npm init 

Tras ejecutar esto nos saldrán una serie de preguntas en el terminal, tendrás que poner el nombre del proyecto, el nombre del autor, las keywords y la licencia que tendrá.

Una vez completado este proceso se nos generará la carpeta del proyecto que contendrá un archivo llamado package.json este es el archivo que contiene las dependencias necesarias para que el proyecto funcione y los datos relativos al proyecto que hemos introducido previamente. ¡Ahora es el turno de empezar con el bot!

¿Cómo utilizar la API de Twitter con Node?

Utilizar la API de Twitter con Node es muy sencillo, hay varias librerías que permiten hacerlo, pero mi favorita es Twit, para poder utilizarla tenemos que añadirla a nuestro proyecto, para ello debemos de introducir el siguiente comando en nuestro terminal:

 npm install -s twit 

Con esto descargaremos la librería dentro de la carpeta node-modules y podremos utilizarla en nuestro proyecto, además, gracias al parámetro «-s» la añadiremos a nuestro package.json, de forma que si queremos mover nuestro bot a otro ordenador o a un servidor podremos instalar todas las dependencias que haya en el package.json con el comando:

npm install

Una vez tengamos la librería lista ya la podemos importar en nuestro proyecto, para ello debemos incluir en nuestro index.js la siguiente linea:

const Twit = require("twit");

Una vez importada debemos configurar nuestras credenciales:

var T = new Twit({ 
  consumer_key: "Tu Consumer Key", 
  consumer_secret: "Tu Consumer Secret", 
  access_token: "Tu Access Token", 
  access_token_secret: "Tu Access Token Secret", 
  timeout_ms: 60 * 1000, // optional HTTP request timeout 
  strictSSL: true // optional - requires SSL certificates to be valid. 
});

Si todavía no tienes las credenciales de Twitter las puedes solicitar desde la página para desarrolladores de Twitter, el proceso es bastante sencillo, en primer lugar te tendrás que enviar una solicitud para que te habiliten la cuenta de desarrollador (Tardarán unas horas en aprobar la solicitud),  una vez te hayan aprobado tendrás que crear una aplicación y te darán las credenciales.

Utilizando el bot para dar Retweets automáticamente

Una de las funcionalidades que probablemente más te interese para llamar la atención de otros usuarios y además publicar nuevo contenido en tu cuenta es la opción de dar Retweets de forma automáticamente.

Para ello debemos definir un stream, el cuál detectará todos los tweets que contengan una cierta palabra, hashtag o frase que le indiquemos y una vez que lo detecte le daremos indicaciones sobre que hacer con ese tweet, para crear el stream debemos incluir la siguiente línea en nuestro código:

const stream1 = T.stream("statuses/filter",{track:"#SEO"});

En este caso estaremos escuchando todos los tweets que contengan el hashtag #SEO, para interaccionar con los tweets que escuche debemos de crear el hook que lo active:

 stream1.on("tweet",reTweet);

Esto lo que hará es que cada vez que detecte un tweet llamará a la función «reTweet» la cual debemos definir:

function reTweet(tweet) {
    T.post("statuses/retweet/:id", { id: tweet.id_str }, function(
      err,
      data,
      response
    ){
      console.log("RT dado a: @" + tweet.user.screen_name);
    });
}

Con esto daremos Retweet a todos los tweets que contengan la cadena de texto que hayamos indicado, obviamente esto es una locura y es posible que sobrepases los límites de uso diarios de la API de Twitter en poco tiempo, por ello es recomendable limitar los ReTweets diarios y «randomizar» un poco el comportamiento para que no interactue con todos los tweets y sea un comportamiento más natural, en el código que dejaré al final del post podrás ver un ejemplo de como hacer esto.

Cómo dar Me Gusta a Tweets de forma automática

Otra de las formas de llamar la atención de otros usuarios es dando me gusta a sus publicaciones, además, a diferencia de los retweets, los Me Gusta no se ven en nuestra timeline, por lo que es una forma un poco más discreta de interaccionar con otros usuarios.

Al igual que para dar Retweets, debemos declarar un stream que escuche el hashtag o texto que deseemos (Podemos utilizar el mismo stream para todas las acciones).

 const stream2 = T.stream("statuses/filter",{track:"#SocialMedia"}); 

Y al igual que para los retweets, tenemos que llamar a la función que deseemos cuando escuchemos un nuevo tweet:

 stream2.on("tweet",MeGusta);

Y para que esto funcione tenemos que declarar la función MeGusta:

function meGusta(tweet) {
    T.post("favorites/create", { id: tweet.id_str }, function(
      err,
      data,
      response
    ) {
      console.log("Me gusta dado a: @" + tweet.user.screen_name);
    });
}

De la misma forma que con los Retweets, es importante limitar el número de Me gusta que se dan por día para no incumplir con las políticas de uso de Twitter y evitar que bloqueen nuestra cuenta. En el ejemplo que adjuntaré más adelante podrás ver como hacerlo de una forma sencilla.

Seguir cuentas de Twitter automáticamente

Sin ninguna duda, esta es la forma más efectiva (Y probablemente la más antigua) de conseguir seguidores, si seguimos a un usuario que publica cosas de nuestra temática es muy probable que nos siga el a nosotros también (El famoso followback), sin embargo Twitter es bastante estricto con esto y hay que limitarlo bastante si queremos evitar bloqueos de nuestra cuenta.

Al igual que para los Retweets y los Me Gusta, debemos declarar un stream, y cuando ese stream detecte un tweet llame a la función de seguir usuario:

 stream1.on("tweet",seguirCuenta);

Declaramos la función para seguir cuentas:

function seguirCuenta(tweet) {
    T.post(
      "friendships/create",
      { screen_name: tweet.user.screen_name },
      function(err, res) {
        if (err) {
          console.log(err);
        } else {
          console.log("Has seguido a: " + tweet.user.screen_name);
        }
      }
    );
}

Cómo Twittear automáticamente tus post antiguos

Muchas veces creamos contenido para nuestro blog, lo compartimos una vez y nos olvidamos de el, pero si tenemos un blog con contenido evergreen, es interesante ir compartiendo de forma periódica esas entradas que publicamos hace unos meses y ya nadie recuerda, de esta forma conseguiremos que nuestro contenido llegue a más gente y mantener nuestra cuenta de Twitter más activa, hay un plugin muy famoso de WordPress llamado Revive Old Post que se puede utilizar para esta funcionalidad, pero ya que estamos creando nuestro propio bot, ¿Por que no programar nosotros mismos esta funcionalidad?

publicar post antiguos twitter

Aprovechando que existen infinidad de librerías para Node que hacen todo tipo de cosas podemos combinar varias de ellas para que cada cierto tiempo revise la feed de nuestra web, seleccione un post al azar y lo publique en nuestra cuenta.

Configurando el cron para la publicación de tweets

Vamos a empezar por la programación de los tweets, necesitamos un cron que se active cada cierto tiempo y que llame a la función que se encarga de publicar en Twitter, para ello vamos a utilizar node-cron, para instalarlo utilizamos el siguiente comando en el terminal:

 npm install -s node-cron 

Una vez instalado lo importamos en nuestro código:

 const cron = require("node-cron"); 

Utilizarlo es muy sencillo, debemos indicarle en que momento queremos que se ejecute y todo lo que haya dentro se ejecutará una vez que el reloj de nuestra máquina coincida con los parámetros que le hemos indicado:

cron.schedule("10 20 8 * * *",()=>{
  //Funciones a ejecutar
});

El código anterior hará que todos los días a las 8 horas 20 minutos y 10 segundos, se ejecute el código que pongamos dentro.

Publicando tweets desde una feed

Una vez sabemos hacer que nuestro código se ejecute solo cada cierto tiempo, toca elegir la fuente de contenidos y poder leer sus datos, para ello vamos a utilizar la librería Rss Converter, la cual nos permite parsear una feed a formato JSON y nos facilita trabajar con ella, para instalar la librería:

 npm install -s rss-converter 

Para importarla en nuestro código:

const rssConverter = require("rss-converter");

Ahora tenemos que indicar la url de la feed de la que queremos publicar posts antiguos, para ello utilizamos la siguiente línea de código:

const blog_feed = "https://quieroserseo.com/feed"; 

Ahora solo queda elegir uno de esos posts al azar para poder publicarlo:

let feed = await rssConverter.toJson(blog_feed);
obj = feed.items;

//Elegimos uno al azar
const length = Object.keys(obj).length;
const random = Math.floor(Math.random()*length+0);

//Creamos el Tweet
const tweet =
      feed.items[random].title +
      " #RecordandoPosts\n" +
      feed.items[random].link;
console.log("Tweet publicado:\n" + tweet);

nuevo_tweet(tweet);

Esta parte es un poco liosa y puede que falle por temas de asincronidad, he tratado de resumir el código para que se vea más legible, pero recomiendo ver el código completo que pondré al final del post donde verás como se debe configurar de forma correcta.

Ahora falta declarar la función nuevo_tweet que será la encargada de publicar en nuestra cuenta:

function nuevo_tweet(texto) {
  var params = {
    status: texto
  };
  T.post("statuses/update", params, function(err, data, response) {
    console.log("Tweet publicado: "+data.text);
  });
}

Combinando el cron y la publicación desde lectura de feeds conseguirás que cada día a la hora que le indiques «reviva» uno de los posts de tu web. Si tienes una web muy grande también puedes crear dos cron distintos y publicar dos veces al día.

Cómo publicar en Twitter los artículos nuevos de tu web

Hemos visto como publicar nuestros artículos antiguos de forma automática, pero ¿Qué pasa con los nuevos?, también podemos automatizar su publicación, en este caso vamos a utilizar la librería rss-emitter-ts, esta librería funciona de forma similar a los stream de la API de twitter, escucha la feed y cuando recibe una actualización lanza un evento. Para instalar la librería hacemos:

 npm install -s rss-emitter-ts

Lo importamos en nuestro bot:

const { FeedEmitter } = require("rss-emitter-ts");
const emitter = new FeedEmitter();

Una vez declarado ya podemos añadir la feed de nuestra web:

emitter.add({
  url: "https://quieroserseo.com/feed/",
  refresh: 20000,
  ignoreFirst: true
});

Con el parámetro ignoreFirst lo que hacemos es que no active el evento con los posts que hay previamente en la feed.

Nota: Actualmente el parámetro ignoreFirst falla si añadimos más de una feed, el creador de la librería está trabajando para arreglarlo, así que en estos momentos no recomiendo añadir más de una feed aunque en el ejemplo que verás abajo si que añado más

Una vez añadida nuestra feed (También podemos añadir feeds de blogs de nuestra temática para generar más contenido) tenemos que indicarle que función queremos activar cuando detecte un nuevo elemento en la feed, para ello debemos incluir esto en nuestro bot:

emitter.on("item:new", item => {
  const tweet = item.title + " --> " + item.link;
  console.log("Tweet publicado:\n" + tweet);
  nuevo_tweet(tweet);
});

Conclusiones y código de ejemplo

Hemos visto como automatizar nuestra cuenta de Twitter para compartir contenido interesante para nuestros usuarios e interaccionar con cuentas de nuestra temática, pero hay que tener cuidado con las automatizaciones y no sobrepasar los límites de uso de la API ni infligir sus normas de uso, por eso es fundamental limitar el bot y no pasarse con las acciones que este realiza.

Una de las ideas básicas que nos pueden ayudar a cumplir estas premisas es no interaccionar con todas las publicaciones que contengan un cierto hashtag, si no hacerlo de una forma aleatoria, por ejemplo establecer que solo lo haga el 10% de las veces. Además es interesante limitar el número de acciones diarias, esto es tan sencillo como crear un contador y resetearlo una vez al día utilizando la función cron.

Llega el momento de compartir el código del que había hablado el cuál contiene todas las funcionalidades de las que he hablado en el post (Y alguna extra 😉) Pero no va a ser tan sencillo, si queréis ver el código tendréis que compartir el post

Tras un mes utilizando el bot en la cuenta de @QuieroSerSeo estos han sido los resultados:

impresiones bot twitter

Espero que este artículo os haya sido útil y os sirva para automatizar vuestra cuenta y sacarle el máximo partido a esta red social.

2 Comentarios
  1. marzo 10, 2020
    • marzo 11, 2020

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¡Suscríbete!

Recibirás todas las novedades del blog y consejos exclusivos