Ir a blog

Extrae datos JSON de la API de SEMrush con Google Apps Scripts

65
Wow-Score
La Wow-Score muestra si una entrada de un blog crea o no interacción. Se calcula en base a la correlación entre el tiempo de lectura activo de los usuarios, su velocidad de desplazamiento y la longitud del artículo.
Leer más

Extrae datos JSON de la API de SEMrush con Google Apps Scripts

Eric Jorge Segui Parejo
Extrae datos JSON de la API de SEMrush con Google Apps Scripts

¿Sabes cómo extraer datos JSON de la API de SEMrush?

SEMrush es una gran herramienta que ofrece muchas posibilidades a la hora de buscar palabras clave, buscar keywords, ver los cambios en el ranking, estudiar los anuncios de la competencia, etc.

Pero no solo existe SEMrush, existen muchas otras herramientas que nos gustaría controlar y que en el día a día trabajamos con ellas.

El problema reside en que tenemos que estar continuamente abriendo y cerrando pestañas y hacer login en diferentes herramientas para comparar datos y tomar decisiones.

Pero, ¿y si pudiéramos extraer esta información y unificarla dentro de un solo dashboard, ofreciendo todos los datos que necesitamos en un solo vistazo?

Para facilitarnos esto, tenemos las conexiones por APIs, aunque lamentablemente, muchas veces se requiere tener conocimientos de programación.

Hoy os voy a explicar cómo extraer la información directamente desde vuestros proyectos para enviarlos a Google Spread Sheets con Google Apps Scripts.

Una vez allí podréis usar DataStudio o crear vuestros propios informes desde aquí, por lo que será mucho más práctico trabajar y analizar datos.

¿Cuándo usar IMPORTDATA y cuándo usar Google Apps Scripts?

Por lo general, con la regla “IMPORTDATA” es suficiente si la información viene dada en vectores (arrays), esto sucede para los datos de la API de SEMrush de analytics.

Pero cuando solicitas información a la API de SEMrush, para los proyectos creados dentro de la herramienta en los que haces seguimiento, la información viene dada en JSON.

Dentro de la documentación de SEMrush podemos leerlo:

Todas las peticiones a la api utilizan métodos HTTP como POST, PUT, GET o DELETE con parámetros JSON y deben contener la API Key

— SEMrush

Por lo que la función IMPORTDATA, nos dejará un matojo de datos bastante difíciles de leer si la utilizamos.

La solución más fácil es usar algo de código en javascript, para ello, voy a explicaros cómo buscar la información y el proceso que hay que seguir para poder extraer toda la información.

Aunque no sepas mucho de programación al final del artículo podrás hacerlo, pero necesitarás algo de concentración para entenderlo todo.

Al finalizar el artículo serás capaz de extraer datos con JSON y además, trabajar con otros datos JSON mediante llamadas a URLs.

Antes de pasar a ver cómo extraer la información y el código que empleé para ello, es importante entender qué es un JSON y cómo se muestra la información de este.

¿Qué es un JSON?

Es un formato de texto ligero empleado en el intercambio de datos que es bastante fácil de entender y leer.

Ejemplo de JSON

Cómo se visualizan los datos json de la API de SEMrush

Al hacer una llamada con la URL

https://api.semrush.com/reports/v1/projects/Idproject/siteaudit/info?key=CLAVE 

Donde Idproject, es el identificador del proyecto (para visualizarlo, solo debemos acceder a la URL de uno de nuestros proyectos de SEMrush, y veremos un número de 6 cifras, este es el id del proyecto).

Dentro del Siteaudit podemos encontrarlo aquí

https://es.semrush.com/siteaudit/campaign/XXXXXX/review/

Dentro de la url de Position Tracking podemos encontrarlo aquí

https://es.semrush.com/tracking/overview/XXXXXX.html

CLAVE, es nuestra clave API (deberemos acceder a nuestro panel de SEMrush API y ver cuál es para insertarla en la URL).

Nos devolverá como resultado un JSON de datos, podemos acceder a ver esta información utilizando https://jsonformatter.curiousconcept.com/

Pasos para extraer la información de la API de proyectos con App Scripts

Una vez ya hemos visto e identificado que necesitamos utilizar Google App Scripts para la extracción de información de un JSON, tenemos que averiguar qué dato necesitamos extraer.

Para ello, debemos acceder a la documentación de la API de proyectos de SEMrush e identificar los datos que queremos sacar.

En mi caso, fueron un elemento y un subconjunto de elementos, el seguimiento de la evolución de las keywords y la evolución de la auditoría SEO.

Página de la API de SEMrush

Creación del menú principal para actualizar la información con botones en spreadsheets

Lo primero que debemos hacer es crear los botones para Spreadsheets. Para ello, vamos a

Herramientas -> Editor de secuencia de comandos y pegamos el siguiente código reemplazando el código actual:

Creación de menú en spreadsheets

NOTA 

Para aquellos que no sepan programación, todo lo que está insertado después de la doble barra (//) en una misma línea, no se ejecuta como código, son comentarios para que a las personas nos sea más fácil entender el código.

Este código hará que al cargar nuestra hoja, se actualice con una nueva entrada  en el menú llamada “Actualizar” y dentro de ella, dos subelementos de menú llamados “Siteaudit” y “Keywords”.

Función para extraer la información del Siteaudit

Una vez realizado el paso anterior, debemos extraer el siteaudit haciendo una llamada a la siguiente URL:

https://api.semrush.com/reports/v1/projects/Idproject/siteaudit/info?key=CLAVE

Recordad que:

  • Idproject: es el identificador del proyecto.

  • CLAVE: es la clave API de nuestra cuenta de SEMrush.

Creamos a continuación una página en spreadsheets llamada Siteaudit o como queramos, pero tenemos que ser conscientes de que el nombre debe de ser igual al que introduciremos en esta línea de código:

Guardar datos en una hoja de spreadsheets

Nos vamos de nuevo a Apps Scripts y debajo de la función creada, insertamos este código (en los comentarios implementados con doble barra “//”, explico cada parte del código):

Siteaudit api de SEMrush desde apps script

¿Cómo podemos ver y extraer otros datos del JSON?

Para ver otros datos del JSON podemos buscar un JSON viewer online (podéis utilizar el que os recomendé anteriormente https://jsonformatter.curiousconcept.com/).

Gracias a él podremos visualizar toda la información y detectar qué elementos queremos extraer.

Como vemos, un JSON se compone de una estructura ramificada.

Si en el visualizador online insertamos la URL creada:

https://api.semrush.com/reports/v1/projects/idproject/siteaudit/info?key=CLAVE

veremos como dentro de current_snapshot encontramos el elemento quality y dentro de este el elemento value que contiene el valor del Siteaudit.

En el código anterior, utilizaba chuckNorrisObject, como un objeto donde parseaba el JSON para poder extraer la información y, a continuación, mediante el uso de puntos (.) indicaba el valor que quería extraer dentro del JSON, dándonos como resultado la siguiente línea:

Declarar ubicación de un apartado dentro de un JSON

Y mediante la instrucción sheet.getRange(1,1).setValue() indicaba el valor que se iba a imprimir en nuestra hoja de excel, generado la siguiente línea de código al unir ambas líneas:

Extraer datos de JSON

Si quisiéramos extraer otro dato, tan solo deberíamos identificar dónde se encuentra y utilizar chuckNorrisObject para indicar con el uso de punto, el trazado hasta llegar al elemento que queremos extraer del JSON.

Función para extraer información de las posiciones de keywords

La función de las posiciones de keywords de un proyecto, es algo más compleja:

Función para extraer información de las posiciones de keywords

  • Idproject: es el identificador del proyecto.

  • CLAVE: es la clave API de nuestra cuenta de SEMrush.

  • Fecha_mas_antigua: aquí debemos insertar la fecha más antigua con el siguiente formato yyyymmdd.

  • Fecha_mas_nueva: aquí insertaremos la fecha más cercana a la actual con el siguiente formato yyyymmdd.

  • Nombre_dominio: aquí vamos a insertar el dominio con la extensión sin www y sin el http o https, solo el nombre del dominio con la extensión de dominio.

  • display_limit=100: esta variable nos dice el número máximo de filas de palabras que vamos a mostrar. Yo inserté 100 pero podéis aumentar o reducir según el proyecto.

El código quedaría algo así (en los comentarios implementados con doble barra “//”, explico cada parte del código):

Posiciones de keywords con API de SEMrush y apps script

Resultado de todo el código para extraer el valor del Siteaudit y las posiciones del Position Report

Os he explicado cómo extraer el Siteaudit de un proyecto y las posiciones de las keywords que nos interesa tener más controladas en un proyecto.

En conjunto, todo el código se visualiza así, sin comentarios:

Conexión Api de SEMrush con apps scripts para spreadsheets

Si quisiera ejecutar el script de forma automática sin necesidad de usar los botones de menú creados, tan solo tendríamos que pulsar encima del reloj situado en el menú superior de Google Apps Script para programar, cuando queremos que se ejecute el código de forma automática.

Si hiciéramos esto, podríamos eliminar la función del menú ya que no sería necesaria.

Es importante que antes de pasar a la ejecución automática del script, se calcule el consumo que se realiza de la API de SEMrush, ya que es limitado y puede que sea necesario aumentar la inversión.

Como extra, he creado un repositorio en GIT para colaborar en el desarrollo de forma activa de la aplicación.

Además, iré actualizando nuevos desarrollos dentro de esta.

¿Qué podemos hacer con estos datos?

Una vez hemos aprendido a exportar esta información a spreadsheets y trabajar con ellos con Google Apps Scripts, podemos importar información de otras APIs para luego trasladarla desde Spreadsheets a diferentes tipos de dashboards.

El más común y más utilizado actualmente por muchas agencia es DataStudio, que permite importar información desde varias plataformas.

Ahora podemos agregar la información de SEMrush y empezar a trabajar con otras APIs para cruzar toda la información en un mismo dashboard.

Otra opción que podemos hacer es extraer esta información para automatizar ciertas acciones o análisis, automatizar o facilitar la toma de decisiones mediante código, etc.

Por ejemplo, podríamos ver los backlinks de la competencia e ir guardándolos en una base de datos donde contrastarlos con nuestros propios enlaces, contrastar la información de search console con la de SEMrush, actualizar los backlinks que apuntan a nuestra web, etc.

Con un poco de imaginación y código se pueden realizar potentes herramientas para el día a día.

Si utilizamos esto para el cruce de datos, podemos tomar mejores decisiones y realizar mejores estrategias.

Ahora ya no tienes excusa para empezar a trabajar con la API de SEMrush.

¿A qué esperas?

Empezar con la API de SEMrush

¿Te ha gustado este post? Síguenos en RSS y lee más posts interesantes:

RSS
Eric Jorge Seguí Parejo es Seo Manager en Agenciaseo.eu, una agencia de marketing especializada en SEO situada en Valencia. Su blog personal es Queseo y participa de forma activa en el blog de Publisuites.
Compartir esta entrada
o
2000 es el número máximo de caracteres permitido