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.

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.

15 Comentarios
  1. marzo 10, 2020
    • marzo 11, 2020
  2. mayo 5, 2020
    • mayo 7, 2020
  3. mayo 9, 2020
    • mayo 10, 2020
  4. mayo 15, 2020
    • mayo 15, 2020
  5. julio 30, 2020
    • julio 31, 2020
  6. agosto 14, 2020
    • agosto 14, 2020
      • agosto 15, 2020
  7. septiembre 3, 2020
    • septiembre 7, 2020

Deja un comentario

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