Script para reducir las palabras clave a trabajar en SEO

Script para reducir las palabras clave a trabajar en SEO

Posicionamiento en buscadores 5 1391
análisis de palabras clave agrupando frases con un algoritmo de stemming

Ya he comentado alguna vez la técnica sobre cómo reducir las palabras clave a trabajar en SEO utilizando un algoritmo de Stemming (sirve para reducir una palabra a su raíz); también mi ponencia del Congreso SEO4SEOs que organizó el año pasado Javier Gosende en Alicante fue sobre el agrupado de frases utilizando un stemmer.
Ahora voy un poco más allá y he desarrollado una función con javascript que:

  1. Elimina las stopwords de una palabra clave
  2. Reduce las palabras de una frase a su raíz (Stemmer)
  3. Ordena las raíces de palabras de una frase alfabéticamente (así consigo agrupar variaciones de palabras clave seo como: ‘aluminios forjados’ y ‘forjados de aluminio’)

Esta función servirá para agrupar las frases y reducir el número de palabras clave SEO que vamos a trabajar en nuestra estrategia, centrando el foco en las que más tráfico pueden aportar. Te tocará a ti ahora, discriminar cuáles son vitales, relevantes o irrelevantes para tu proyecto web

1) Añadir la función de procesamiento de palabras clave al Editor de Secuencia de Comandos

He preparado un este GOOGLE DOCS para que puedas ver cómo se utilizan las fórmulas.

Lo primero que tienes que hacer es añadir la función javascript al Editor de Secuencia de Comandos de una hoja de cálculos GOOGLE SPREADSHEET, para ello:

  1. Ve Herramientas > Editor de Secuencia de Comandos…
  2. Si no tienes otros comandos, usa la opción: Crear secuencia de comandos para Proyecto en blanco en el formulario que -probablemente- te saldrá
  3. Copia la función que te he preparado más abajo
  4. Pégala (tal cual) en el editor
  5. Guarda el script
  6. Cierra el Editor de Secuencia de Comandos

Una vez que guardas el script, ya la puedes utilizarla como si fuera una función nativa de GOOGLE SPREADSHEET, pero -si quieres utilizarla en otros documentos de GOOGLE SPREADSHEET- tendrás que guardarla cada vez en cada hoja de cálculo

2) Herramienta de palabras clave de ADWORDS

Haz un Keyword Research con la herramienta de palabras clave que GOOGLE y pega el resultado en la primera hoja del libro de GOOGLE SPREADSHEET.

resultados de un Keyword Research con la herramienta de palabras clave de ADWORDS, pegados en una hoja de cálculo de GOOGLE DOCS

La función de Agrupado de Palabras Clave en funcionamiento…

Ve a la primera celda libre que tengas (que deberá ser E1) y ponle nombre a la columna (GRUPOS) y utiliza la función que he creado a partir de E2 hasta abajo:

  • =groupby(A2)

Eliminar los corchetes

Como has debido hacer el Keyword Research con ‘concordancia exacta’ tendrás las expresiones con corchetes, por lo que vamos a usar una fórmula nativa de SPREADSHEET para eliminarlos. Pon nombre a una nueva columna (VARIACIONES) y usa la siguiente fórmula desde la fila F2 hacia abajo:

  • =substitute(substitute(A2;"[";"");"]";"")

Aclarando los datos

Crea una nueva hoja y con vamos a usar una consulta que se traiga los valores buenos para ir aclarando palabras clave seo.
En la celda A1 vas a utilizar la siguiente fórmula:

  • =query('Hoja 1'!A:F;"SELECT E, F, D WHERE A<>'' AND D>0 ORDER BY E, D DESC")

Con esto obtenemos las columnas: ‘GRUPOS’, ‘VARIACIONES’ y ‘Búsquedas locales mensuales (España)’, ordenadas por ‘GRUPOS’ y ‘Búsquedas locales mensuales (España)’ que tengan más de 0 búsquedas mensuales.

¿Qué palabra clave del grupo trae más tráfico?

Ahora, nombre la columna D como ‘KEYWORDS’ y usa la siguiente fórmula desde D2 hacia abajo para conocer cuál de las frases agrupadas es la que más tráfico puede aportar:

  • =VLOOKUP(A2;A:B;2;false)

Las palabras clave SEO ya agrupadas

Por último, crea una nueva hoja y usa la siguiente fórmula en la celda A1 para obtener el resultado agrupado:

  • =query('Hoja 2'!A:D;"SELECT D, MAX(C) WHERE A<>'' GROUP BY D")

resultado del agrupado de palabras clave a trabajar en una estrategia SEO

Ojo a las variaciones, porque son muy interesantes para trabajarlas en tu estrategia de linkbuilding.

El script javascript para la manipulación de palabras clave con SPREADSHEET

function GroupBy(x) 
{
  x = x.toLowerCase();
  x = x.replace('[','');
  x = x.replace(']','');
  x = x.replace(/(á| x)/g,'a');
  x = x.replace(/(é| x)/g,'e');
  x = x.replace(/(í| x)/g,'i');
  x = x.replace(/(ó| x)/g,'o');
  x = x.replace(/(ú| x)/g,'u');
  x = x.replace(/(ä| x)/g,'a');
  x = x.replace(/(ë| x)/g,'e');
  x = x.replace(/(ï| x)/g,'i');
  x = x.replace(/(ö| x)/g,'o');
  x = x.replace(/(ü| x)/g,'u');
  x = x.replace(/(à| x)/g,'a');
  x = x.replace(/(è| x)/g,'e');
  x = x.replace(/(ì| x)/g,'i');
  x = x.replace(/(ò| x)/g,'o');
  x = x.replace(/(ù| x)/g,'u');
  x = x.replace(x, ' ' + x + ' ');
  x = x.replace(/( a | x)/gi,' ');
  x = x.replace(/( al | x)/gi,' ');
  x = x.replace(/( algo | x)/gi,' ');
  x = x.replace(/( algunas | x)/gi,' ');
  x = x.replace(/( algunos | x)/gi,' ');
  x = x.replace(/( ante | x)/gi,' ');
  x = x.replace(/( antes | x)/gi,' ');
  x = x.replace(/( como | x)/gi,' ');
  x = x.replace(/( con | x)/gi,' ');
  x = x.replace(/( contra | x)/gi,' ');
  x = x.replace(/( cual | x)/gi,' ');
  x = x.replace(/( cuando | x)/gi,' ');
  x = x.replace(/( de | x)/gi,' ');
  x = x.replace(/( del | x)/gi,' ');
  x = x.replace(/( desde | x)/gi,' ');
  x = x.replace(/( donde | x)/gi,' ');
  x = x.replace(/( durante | x)/gi,' ');
  x = x.replace(/( e | x)/gi,' ');
  x = x.replace(/( el | x)/gi,' ');
  x = x.replace(/( ella | x)/gi,' ');
  x = x.replace(/( ellas | x)/gi,' ');
  x = x.replace(/( ellos | x)/gi,' ');
  x = x.replace(/( en | x)/gi,' ');
  x = x.replace(/( entre | x)/gi,' ');
  x = x.replace(/( era | x)/gi,' ');
  x = x.replace(/( erais | x)/gi,' ');
  x = x.replace(/( eramos | x)/gi,' ');
  x = x.replace(/( eran | x)/gi,' ');
  x = x.replace(/( eras | x)/gi,' ');
  x = x.replace(/( eres | x)/gi,' ');
  x = x.replace(/( es | x)/gi,' ');
  x = x.replace(/( esa | x)/gi,' ');
  x = x.replace(/( esas | x)/gi,' ');
  x = x.replace(/( ese | x)/gi,' ');
  x = x.replace(/( eso | x)/gi,' ');
  x = x.replace(/( esos | x)/gi,' ');
  x = x.replace(/( esta | x)/gi,' ');
  x = x.replace(/( estaba | x)/gi,' ');
  x = x.replace(/( estabais | x)/gi,' ');
  x = x.replace(/( estabamos | x)/gi,' ');
  x = x.replace(/( estaban | x)/gi,' ');
  x = x.replace(/( estabas | x)/gi,' ');
  x = x.replace(/( estad | x)/gi,' ');
  x = x.replace(/( estada | x)/gi,' ');
  x = x.replace(/( estadas | x)/gi,' ');
  x = x.replace(/( estado | x)/gi,' ');
  x = x.replace(/( estados | x)/gi,' ');
  x = x.replace(/( estais | x)/gi,' ');
  x = x.replace(/( estamos | x)/gi,' ');
  x = x.replace(/( estan | x)/gi,' ');
  x = x.replace(/( estando | x)/gi,' ');
  x = x.replace(/( estar | x)/gi,' ');
  x = x.replace(/( estara | x)/gi,' ');
  x = x.replace(/( estaran | x)/gi,' ');
  x = x.replace(/( estaras | x)/gi,' ');
  x = x.replace(/( estare | x)/gi,' ');
  x = x.replace(/( estareis | x)/gi,' ');
  x = x.replace(/( estaremos | x)/gi,' ');
  x = x.replace(/( estaria | x)/gi,' ');
  x = x.replace(/( estariais | x)/gi,' ');
  x = x.replace(/( estariamos | x)/gi,' ');
  x = x.replace(/( estarian | x)/gi,' ');
  x = x.replace(/( estarias | x)/gi,' ');
  x = x.replace(/( estas | x)/gi,' ');
  x = x.replace(/( este | x)/gi,' ');
  x = x.replace(/( esteis | x)/gi,' ');
  x = x.replace(/( estemos | x)/gi,' ');
  x = x.replace(/( esten | x)/gi,' ');
  x = x.replace(/( estes | x)/gi,' ');
  x = x.replace(/( esto | x)/gi,' ');
  x = x.replace(/( estos | x)/gi,' ');
  x = x.replace(/( estoy | x)/gi,' ');
  x = x.replace(/( estuve | x)/gi,' ');
  x = x.replace(/( estuviera | x)/gi,' ');
  x = x.replace(/( estuvierais | x)/gi,' ');
  x = x.replace(/( estuvieramos | x)/gi,' ');
  x = x.replace(/( estuvieran | x)/gi,' ');
  x = x.replace(/( estuvieras | x)/gi,' ');
  x = x.replace(/( estuvieron | x)/gi,' ');
  x = x.replace(/( estuviese | x)/gi,' ');
  x = x.replace(/( estuvieseis | x)/gi,' ');
  x = x.replace(/( estuviesemos | x)/gi,' ');
  x = x.replace(/( estuviesen | x)/gi,' ');
  x = x.replace(/( estuvieses | x)/gi,' ');
  x = x.replace(/( estuvimos | x)/gi,' ');
  x = x.replace(/( estuviste | x)/gi,' ');
  x = x.replace(/( estuvisteis | x)/gi,' ');
  x = x.replace(/( estuvo | x)/gi,' ');
  x = x.replace(/( fue | x)/gi,' ');
  x = x.replace(/( fuera | x)/gi,' ');
  x = x.replace(/( fuerais | x)/gi,' ');
  x = x.replace(/( fueramos | x)/gi,' ');
  x = x.replace(/( fueran | x)/gi,' ');
  x = x.replace(/( fueras | x)/gi,' ');
  x = x.replace(/( fueron | x)/gi,' ');
  x = x.replace(/( fuese | x)/gi,' ');
  x = x.replace(/( fueseis | x)/gi,' ');
  x = x.replace(/( fuesemos | x)/gi,' ');
  x = x.replace(/( fuesen | x)/gi,' ');
  x = x.replace(/( fueses | x)/gi,' ');
  x = x.replace(/( fui | x)/gi,' ');
  x = x.replace(/( fuimos | x)/gi,' ');
  x = x.replace(/( fuiste | x)/gi,' ');
  x = x.replace(/( fuisteis | x)/gi,' ');
  x = x.replace(/( ha | x)/gi,' ');
  x = x.replace(/( habeis | x)/gi,' ');
  x = x.replace(/( haber | x)/gi,' ');
  x = x.replace(/( habia | x)/gi,' ');
  x = x.replace(/( habiais | x)/gi,' ');
  x = x.replace(/( habiamos | x)/gi,' ');
  x = x.replace(/( habian | x)/gi,' ');
  x = x.replace(/( habias | x)/gi,' ');
  x = x.replace(/( habida | x)/gi,' ');
  x = x.replace(/( habidas | x)/gi,' ');
  x = x.replace(/( habido | x)/gi,' ');
  x = x.replace(/( habidos | x)/gi,' ');
  x = x.replace(/( habiendo | x)/gi,' ');
  x = x.replace(/( habra | x)/gi,' ');
  x = x.replace(/( habran | x)/gi,' ');
  x = x.replace(/( habras | x)/gi,' ');
  x = x.replace(/( habre | x)/gi,' ');
  x = x.replace(/( habreis | x)/gi,' ');
  x = x.replace(/( habremos | x)/gi,' ');
  x = x.replace(/( habria | x)/gi,' ');
  x = x.replace(/( habriais | x)/gi,' ');
  x = x.replace(/( habriamos | x)/gi,' ');
  x = x.replace(/( habrian | x)/gi,' ');
  x = x.replace(/( habrias | x)/gi,' ');
  x = x.replace(/( han | x)/gi,' ');
  x = x.replace(/( has | x)/gi,' ');
  x = x.replace(/( hasta | x)/gi,' ');
  x = x.replace(/( hay | x)/gi,' ');
  x = x.replace(/( haya | x)/gi,' ');
  x = x.replace(/( he | x)/gi,' ');
  x = x.replace(/( hemos | x)/gi,' ');
  x = x.replace(/( hube | x)/gi,' ');
  x = x.replace(/( hubiera | x)/gi,' ');
  x = x.replace(/( hubierais | x)/gi,' ');
  x = x.replace(/( hubieramos | x)/gi,' ');
  x = x.replace(/( hubieran | x)/gi,' ');
  x = x.replace(/( hubieras | x)/gi,' ');
  x = x.replace(/( hubieron | x)/gi,' ');
  x = x.replace(/( hubiese | x)/gi,' ');
  x = x.replace(/( hubieseis | x)/gi,' ');
  x = x.replace(/( hubiesemos | x)/gi,' ');
  x = x.replace(/( hubiesen | x)/gi,' ');
  x = x.replace(/( hubieses | x)/gi,' ');
  x = x.replace(/( hubimos | x)/gi,' ');
  x = x.replace(/( hubiste | x)/gi,' ');
  x = x.replace(/( hubisteis | x)/gi,' ');
  x = x.replace(/( hubo | x)/gi,' ');
  x = x.replace(/( la | x)/gi,' ');
  x = x.replace(/( las | x)/gi,' ');
  x = x.replace(/( le | x)/gi,' ');
  x = x.replace(/( les | x)/gi,' ');
  x = x.replace(/( lo | x)/gi,' ');
  x = x.replace(/( los | x)/gi,' ');
  x = x.replace(/( mas | x)/gi,' ');
  x = x.replace(/( me | x)/gi,' ');
  x = x.replace(/( mi | x)/gi,' ');
  x = x.replace(/( mia | x)/gi,' ');
  x = x.replace(/( mias | x)/gi,' ');
  x = x.replace(/( mio | x)/gi,' ');
  x = x.replace(/( mios | x)/gi,' ');
  x = x.replace(/( mis | x)/gi,' ');
  x = x.replace(/( mucho | x)/gi,' ');
  x = x.replace(/( muchos | x)/gi,' ');
  x = x.replace(/( muy | x)/gi,' ');
  x = x.replace(/( nada | x)/gi,' ');
  x = x.replace(/( ni | x)/gi,' ');
  x = x.replace(/( no | x)/gi,' ');
  x = x.replace(/( nos | x)/gi,' ');
  x = x.replace(/( nosotras | x)/gi,' ');
  x = x.replace(/( nosotros | x)/gi,' ');
  x = x.replace(/( nuestra | x)/gi,' ');
  x = x.replace(/( nuestras | x)/gi,' ');
  x = x.replace(/( nuestro | x)/gi,' ');
  x = x.replace(/( nuestros | x)/gi,' ');
  x = x.replace(/( o | x)/gi,' ');
  x = x.replace(/( os | x)/gi,' ');
  x = x.replace(/( otra | x)/gi,' ');
  x = x.replace(/( otras | x)/gi,' ');
  x = x.replace(/( otro | x)/gi,' ');
  x = x.replace(/( otros | x)/gi,' ');
  x = x.replace(/( para | x)/gi,' ');
  x = x.replace(/( pero | x)/gi,' ');
  x = x.replace(/( poco | x)/gi,' ');
  x = x.replace(/( por | x)/gi,' ');
  x = x.replace(/( porque | x)/gi,' ');
  x = x.replace(/( que | x)/gi,' ');
  x = x.replace(/( quien | x)/gi,' ');
  x = x.replace(/( quienes | x)/gi,' ');
  x = x.replace(/( se | x)/gi,' ');
  x = x.replace(/( sea | x)/gi,' ');
  x = x.replace(/( seais | x)/gi,' ');
  x = x.replace(/( seamos | x)/gi,' ');
  x = x.replace(/( sean | x)/gi,' ');
  x = x.replace(/( seas | x)/gi,' ');
  x = x.replace(/( ser | x)/gi,' ');
  x = x.replace(/( sera | x)/gi,' ');
  x = x.replace(/( seran | x)/gi,' ');
  x = x.replace(/( seras | x)/gi,' ');
  x = x.replace(/( sere | x)/gi,' ');
  x = x.replace(/( sereis | x)/gi,' ');
  x = x.replace(/( seremos | x)/gi,' ');
  x = x.replace(/( seria | x)/gi,' ');
  x = x.replace(/( seriais | x)/gi,' ');
  x = x.replace(/( seriamos | x)/gi,' ');
  x = x.replace(/( serian | x)/gi,' ');
  x = x.replace(/( serias | x)/gi,' ');
  x = x.replace(/( si | x)/gi,' ');
  x = x.replace(/( sido | x)/gi,' ');
  x = x.replace(/( siendo | x)/gi,' ');
  x = x.replace(/( sin | x)/gi,' ');
  x = x.replace(/( sobre | x)/gi,' ');
  x = x.replace(/( sois | x)/gi,' ');
  x = x.replace(/( somos | x)/gi,' ');
  x = x.replace(/( son | x)/gi,' ');
  x = x.replace(/( soy | x)/gi,' ');
  x = x.replace(/( su | x)/gi,' ');
  x = x.replace(/( sus | x)/gi,' ');
  x = x.replace(/( suya | x)/gi,' ');
  x = x.replace(/( suyas | x)/gi,' ');
  x = x.replace(/( suyo | x)/gi,' ');
  x = x.replace(/( suyos | x)/gi,' ');
  x = x.replace(/( tambien | x)/gi,' ');
  x = x.replace(/( tanto | x)/gi,' ');
  x = x.replace(/( te | x)/gi,' ');
  x = x.replace(/( tendra | x)/gi,' ');
  x = x.replace(/( tendran | x)/gi,' ');
  x = x.replace(/( tendras | x)/gi,' ');
  x = x.replace(/( tendre | x)/gi,' ');
  x = x.replace(/( tendreis | x)/gi,' ');
  x = x.replace(/( tendremos | x)/gi,' ');
  x = x.replace(/( tendria | x)/gi,' ');
  x = x.replace(/( tendriais | x)/gi,' ');
  x = x.replace(/( tendriamos | x)/gi,' ');
  x = x.replace(/( tendrian | x)/gi,' ');
  x = x.replace(/( tendrias | x)/gi,' ');
  x = x.replace(/( tened | x)/gi,' ');
  x = x.replace(/( teneis | x)/gi,' ');
  x = x.replace(/( tenemos | x)/gi,' ');
  x = x.replace(/( tenga | x)/gi,' ');
  x = x.replace(/( tengais | x)/gi,' ');
  x = x.replace(/( tengamos | x)/gi,' ');
  x = x.replace(/( tengan | x)/gi,' ');
  x = x.replace(/( tengas | x)/gi,' ');
  x = x.replace(/( tengo | x)/gi,' ');
  x = x.replace(/( tenia | x)/gi,' ');
  x = x.replace(/( teniais | x)/gi,' ');
  x = x.replace(/( teniamos | x)/gi,' ');
  x = x.replace(/( tenian | x)/gi,' ');
  x = x.replace(/( tenias | x)/gi,' ');
  x = x.replace(/( tenida | x)/gi,' ');
  x = x.replace(/( tenidas | x)/gi,' ');
  x = x.replace(/( tenido | x)/gi,' ');
  x = x.replace(/( tenidos | x)/gi,' ');
  x = x.replace(/( teniendo | x)/gi,' ');
  x = x.replace(/( ti | x)/gi,' ');
  x = x.replace(/( tiene | x)/gi,' ');
  x = x.replace(/( tienen | x)/gi,' ');
  x = x.replace(/( tienes | x)/gi,' ');
  x = x.replace(/( todo | x)/gi,' ');
  x = x.replace(/( todos | x)/gi,' ');
  x = x.replace(/( tu | x)/gi,' ');
  x = x.replace(/( tus | x)/gi,' ');
  x = x.replace(/( tuve | x)/gi,' ');
  x = x.replace(/( tuviera | x)/gi,' ');
  x = x.replace(/( tuvierais | x)/gi,' ');
  x = x.replace(/( tuvieramos | x)/gi,' ');
  x = x.replace(/( tuvieran | x)/gi,' ');
  x = x.replace(/( tuvieras | x)/gi,' ');
  x = x.replace(/( tuvieron | x)/gi,' ');
  x = x.replace(/( tuviese | x)/gi,' ');
  x = x.replace(/( tuvieseis | x)/gi,' ');
  x = x.replace(/( tuviesemos | x)/gi,' ');
  x = x.replace(/( tuviesen | x)/gi,' ');
  x = x.replace(/( tuvieses | x)/gi,' ');
  x = x.replace(/( tuvimos | x)/gi,' ');
  x = x.replace(/( tuviste | x)/gi,' ');
  x = x.replace(/( tuvisteis | x)/gi,' ');
  x = x.replace(/( tuvo | x)/gi,' ');
  x = x.replace(/( tuya | x)/gi,' ');
  x = x.replace(/( tuyas | x)/gi,' ');
  x = x.replace(/( tuyo | x)/gi,' ');
  x = x.replace(/( tuyos | x)/gi,' ');
  x = x.replace(/( un | x)/gi,' ');
  x = x.replace(/( una | x)/gi,' ');
  x = x.replace(/( uno | x)/gi,' ');
  x = x.replace(/( unos | x)/gi,' ');
  x = x.replace(/( vosotras | x)/gi,' ');
  x = x.replace(/( vosotros | x)/gi,' ');
  x = x.replace(/( vuestra | x)/gi,' ');
  x = x.replace(/( vuestras | x)/gi,' ');
  x = x.replace(/( vuestro | x)/gi,' ');
  x = x.replace(/( vuestros | x)/gi,' ');
  x = x.replace(/( y | x)/gi,' ');
  x = x.replace(/( ya | x)/gi,' ');
  x = x.replace(/^\s+/g,'').replace(/\s+$/g,'');
  x = x.replace(x, x + ' ');
  x = x.replace(/(iendoselas | x)/g,'iendo ');
  x = x.replace(/(yendoselas | x)/g,'yendo ');
  x = x.replace(/(iendoselos | x)/g,'iendo ');
  x = x.replace(/(yendoselos | x)/g,'yendo ');
  x = x.replace(/(iendosela | x)/g,'iendo ');
  x = x.replace(/(yendosela | x)/g,'yendo ');
  x = x.replace(/(iendoselo | x)/g,'iendo ');
  x = x.replace(/(yendoselo | x)/g,'yendo ');
  x = x.replace(/(andoselas | x)/g,'ando ');
  x = x.replace(/(andoselos | x)/g,'ando ');
  x = x.replace(/(andosela | x)/g,'ando ');
  x = x.replace(/(andoselo | x)/g,'ando ');
  x = x.replace(/(iendolas | x)/g,'iendo ');
  x = x.replace(/(yendolas | x)/g,'yendo ');
  x = x.replace(/(iendoles | x)/g,'iendo ');
  x = x.replace(/(yendoles | x)/g,'yendo ');
  x = x.replace(/(iendolos | x)/g,'iendo ');
  x = x.replace(/(yendolos | x)/g,'yendo ');
  x = x.replace(/(iendonos | x)/g,'iendo ');
  x = x.replace(/(yendonos | x)/g,'yendo ');
  x = x.replace(/(iendome | x)/g,'iendo ');
  x = x.replace(/(yendome | x)/g,'yendo ');
  x = x.replace(/(iendose | x)/g,'iendo ');
  x = x.replace(/(yendose | x)/g,'yendo ');
  x = x.replace(/(arselas | x)/g,'ar ');
  x = x.replace(/(erselas | x)/g,'er ');
  x = x.replace(/(irselas | x)/g,'ir ');
  x = x.replace(/(arselos | x)/g,'ar ');
  x = x.replace(/(erselos | x)/g,'er ');
  x = x.replace(/(irselos | x)/g,'ir ');
  x = x.replace(/(iendola | x)/g,'iendo ');
  x = x.replace(/(yendola | x)/g,'yendo ');
  x = x.replace(/(iendole | x)/g,'iendo ');
  x = x.replace(/(yendole | x)/g,'yendo ');
  x = x.replace(/(iendolo | x)/g,'iendo ');
  x = x.replace(/(yendolo | x)/g,'yendo ');
  x = x.replace(/(andolas | x)/g,'ando ');
  x = x.replace(/(andoles | x)/g,'ando ');
  x = x.replace(/(andolos | x)/g,'ando ');
  x = x.replace(/(andonos | x)/g,'ando ');
  x = x.replace(/(andome | x)/g,'ando ');
  x = x.replace(/(andose | x)/g,'ando ');
  x = x.replace(/(arsela | x)/g,'ar ');
  x = x.replace(/(ersela | x)/g,'er ');
  x = x.replace(/(irsela | x)/g,'ir ');
  x = x.replace(/(arselo | x)/g,'ar ');
  x = x.replace(/(erselo | x)/g,'er ');
  x = x.replace(/(irselo | x)/g,'ir ');
  x = x.replace(/(andola | x)/g,'ando ');
  x = x.replace(/(andole | x)/g,'ando ');
  x = x.replace(/(andolo | x)/g,'ando ');
  x = x.replace(/(iendo | x)/g,'iendo ');
  x = x.replace(/(yendo | x)/g,'yendo ');
  x = x.replace(/(arlas | x)/g,'ar ');
  x = x.replace(/(erlas | x)/g,'er ');
  x = x.replace(/(irlas | x)/g,'ir ');
  x = x.replace(/(arles | x)/g,'ar ');
  x = x.replace(/(erles | x)/g,'er ');
  x = x.replace(/(irles | x)/g,'ir ');
  x = x.replace(/(arlos | x)/g,'ar ');
  x = x.replace(/(erlos | x)/g,'er ');
  x = x.replace(/(irlos | x)/g,'ir ');
  x = x.replace(/(arnos | x)/g,'ar ');
  x = x.replace(/(ernos | x)/g,'er ');
  x = x.replace(/(irnos | x)/g,'ir ');
  x = x.replace(/(ando | x)/g,'ando ');
  x = x.replace(/(arme | x)/g,'ar ');
  x = x.replace(/(erme | x)/g,'er ');
  x = x.replace(/(irme | x)/g,'ir ');
  x = x.replace(/(arse | x)/g,'ar ');
  x = x.replace(/(erse | x)/g,'er ');
  x = x.replace(/(irse | x)/g,'ir ');
  x = x.replace(/(arla | x)/g,'ar ');
  x = x.replace(/(erla | x)/g,'er ');
  x = x.replace(/(irla | x)/g,'ir ');
  x = x.replace(/(arle | x)/g,'ar ');
  x = x.replace(/(erle | x)/g,'er ');
  x = x.replace(/(irle | x)/g,'ir ');
  x = x.replace(/(arlo | x)/g,'ar ');
  x = x.replace(/(erlo | x)/g,'er ');
  x = x.replace(/(irlo | x)/g,'ir ');
  x = x.replace(/(ar | x)/g,'ar ');
  x = x.replace(/(er | x)/g,'er ');
  x = x.replace(/(ir | x)/g,'ir ');
  x = x.replace(/(abilidades | x)/g,' ');
  x = x.replace(/(icaciones | x)/g,' ');
  x = x.replace(/(antemente | x)/g,' ');
  x = x.replace(/(ablemente | x)/g,' ');
  x = x.replace(/(iblemente | x)/g,' ');
  x = x.replace(/(amientos | x)/g,' ');
  x = x.replace(/(imientos | x)/g,' ');
  x = x.replace(/(icadoras | x)/g,' ');
  x = x.replace(/(icadores | x)/g,' ');
  x = x.replace(/(icancias | x)/g,' ');
  x = x.replace(/(ivamente | x)/g,' ');
  x = x.replace(/(osamente | x)/g,' ');
  x = x.replace(/(icamente | x)/g,' ');
  x = x.replace(/(adamente | x)/g,' ');
  x = x.replace(/(abilidad | x)/g,' ');
  x = x.replace(/(icidades | x)/g,' ');
  x = x.replace(/(ividades | x)/g,' ');
  x = x.replace(/(amiento | x)/g,' ');
  x = x.replace(/(imiento | x)/g,' ');
  x = x.replace(/(aciones | x)/g,' ');
  x = x.replace(/(icadora | x)/g,' ');
  x = x.replace(/(icación | x)/g,' ');
  x = x.replace(/(icantes | x)/g,' ');
  x = x.replace(/(icancia | x)/g,' ');
  x = x.replace(/(uciones | x)/g,'u ');
  x = x.replace(/(adoras | x)/g,' ');
  x = x.replace(/(adores | x)/g,' ');
  x = x.replace(/(ancias | x)/g,' ');
  x = x.replace(/(icador | x)/g,' ');
  x = x.replace(/(icante | x)/g,' ');
  x = x.replace(/(logias | x)/g,'log ');
  x = x.replace(/(encias | x)/g,'ente ');
  x = x.replace(/(amente | x)/g,' ');
  x = x.replace(/(idades | x)/g,' ');
  x = x.replace(/(icidad | x)/g,' ');
  x = x.replace(/(ividad | x)/g,' ');
  x = x.replace(/(ativos | x)/g,' ');
  x = x.replace(/(ativas | x)/g,' ');
  x = x.replace(/(anzas | x)/g,' ');
  x = x.replace(/(ismos | x)/g,' ');
  x = x.replace(/(ables | x)/g,' ');
  x = x.replace(/(ibles | x)/g,' ');
  x = x.replace(/(istas | x)/g,' ');
  x = x.replace(/(adora | x)/g,' ');
  x = x.replace(/(ación | x)/g,' ');
  x = x.replace(/(antes | x)/g,' ');
  x = x.replace(/(ancia | x)/g,' ');
  x = x.replace(/(logia | x)/g,'log ');
  x = x.replace(/(ucion | x)/g,'u ');
  x = x.replace(/(encia | x)/g,'ente ');
  x = x.replace(/(mente | x)/g,' ');
  x = x.replace(/(ativo | x)/g,' ');
  x = x.replace(/(ativa | x)/g,' ');
  x = x.replace(/(anza | x)/g,' ');
  x = x.replace(/(icos | x)/g,' ');
  x = x.replace(/(icas | x)/g,' ');
  x = x.replace(/(ismo | x)/g,' ');
  x = x.replace(/(able | x)/g,' ');
  x = x.replace(/(ible | x)/g,' ');
  x = x.replace(/(ista | x)/g,' ');
  x = x.replace(/(osos | x)/g,' ');
  x = x.replace(/(osas | x)/g,' ');
  x = x.replace(/(ador | x)/g,' ');
  x = x.replace(/(ante | x)/g,' ');
  x = x.replace(/(idad | x)/g,' ');
  x = x.replace(/(ivas | x)/g,' ');
  x = x.replace(/(ivos | x)/g,' ');
  x = x.replace(/(ico | x)/g,' ');
  x = x.replace(/(ica | x)/g,' ');
  x = x.replace(/(oso | x)/g,' ');
  x = x.replace(/(osa | x)/g,' ');
  x = x.replace(/(ivo | x)/g,' ');
  x = x.replace(/(iva | x)/g,' ');
  x = x.replace(/(ariamos | x)/g,' ');
  x = x.replace(/(eriamos | x)/g,' ');
  x = x.replace(/(iriamos | x)/g,' ');
  x = x.replace(/(ieramos | x)/g,' ');
  x = x.replace(/(iesemos | x)/g,' ');
  x = x.replace(/(uyeron | x)/g,' ');
  x = x.replace(/(uyendo | x)/g,' ');
  x = x.replace(/(uyamos | x)/g,' ');
  x = x.replace(/(guemos | x)/g,'g ');
  x = x.replace(/(ariais | x)/g,' ');
  x = x.replace(/(aremos | x)/g,' ');
  x = x.replace(/(eriais | x)/g,' ');
  x = x.replace(/(eremos | x)/g,' ');
  x = x.replace(/(iriais | x)/g,' ');
  x = x.replace(/(iremos | x)/g,' ');
  x = x.replace(/(ierais | x)/g,' ');
  x = x.replace(/(ieseis | x)/g,' ');
  x = x.replace(/(asteis | x)/g,' ');
  x = x.replace(/(isteis | x)/g,' ');
  x = x.replace(/(abamos | x)/g,' ');
  x = x.replace(/(aramos | x)/g,' ');
  x = x.replace(/(uyais | x)/g,' ');
  x = x.replace(/(yeron | x)/g,' ');
  x = x.replace(/(yendo | x)/g,' ');
  x = x.replace(/(yamos | x)/g,' ');
  x = x.replace(/(gueis | x)/g,'g ');
  x = x.replace(/(arian | x)/g,' ');
  x = x.replace(/(arias | x)/g,' ');
  x = x.replace(/(areis | x)/g,' ');
  x = x.replace(/(erian | x)/g,' ');
  x = x.replace(/(erias | x)/g,' ');
  x = x.replace(/(ereis | x)/g,' ');
  x = x.replace(/(irian | x)/g,' ');
  x = x.replace(/(irias | x)/g,' ');
  x = x.replace(/(ireis | x)/g,' ');
  x = x.replace(/(ieran | x)/g,' ');
  x = x.replace(/(iesen | x)/g,' ');
  x = x.replace(/(ieron | x)/g,' ');
  x = x.replace(/(iendo | x)/g,' ');
  x = x.replace(/(ieras | x)/g,' ');
  x = x.replace(/(ieses | x)/g,' ');
  x = x.replace(/(abais | x)/g,' ');
  x = x.replace(/(arais | x)/g,' ');
  x = x.replace(/(aseis | x)/g,' ');
  x = x.replace(/(iamos | x)/g,' ');
  x = x.replace(/(uyan | x)/g,' ');
  x = x.replace(/(uyen | x)/g,' ');
  x = x.replace(/(uyas | x)/g,' ');
  x = x.replace(/(uyes | x)/g,' ');
  x = x.replace(/(yais | x)/g,' ');
  x = x.replace(/(emos | x)/g,' ');
  x = x.replace(/(guen | x)/g,'g ');
  x = x.replace(/(gues | x)/g,'g ');
  x = x.replace(/(aran | x)/g,' ');
  x = x.replace(/(aras | x)/g,' ');
  x = x.replace(/(aria | x)/g,' ');
  x = x.replace(/(eran | x)/g,' ');
  x = x.replace(/(eras | x)/g,' ');
  x = x.replace(/(eria | x)/g,' ');
  x = x.replace(/(iran | x)/g,' ');
  x = x.replace(/(iras | x)/g,' ');
  x = x.replace(/(iria | x)/g,' ');
  x = x.replace(/(iera | x)/g,' ');
  x = x.replace(/(iese | x)/g,' ');
  x = x.replace(/(aste | x)/g,' ');
  x = x.replace(/(iste | x)/g,' ');
  x = x.replace(/(aban | x)/g,' ');
  x = x.replace(/(aran | x)/g,' ');
  x = x.replace(/(asen | x)/g,' ');
  x = x.replace(/(aron | x)/g,' ');
  x = x.replace(/(ando | x)/g,' ');
  x = x.replace(/(abas | x)/g,' ');
  x = x.replace(/(adas | x)/g,' ');
  x = x.replace(/(idas | x)/g,' ');
  x = x.replace(/(aras | x)/g,' ');
  x = x.replace(/(ases | x)/g,' ');
  x = x.replace(/(iais | x)/g,' ');
  x = x.replace(/(ados | x)/g,' ');
  x = x.replace(/(idos | x)/g,' ');
  x = x.replace(/(amos | x)/g,' ');
  x = x.replace(/(imos | x)/g,' ');
  x = x.replace(/(uya | x)/g,' ');
  x = x.replace(/(uye | x)/g,' ');
  x = x.replace(/(uyo | x)/g,' ');
  x = x.replace(/(yan | x)/g,' ');
  x = x.replace(/(yen | x)/g,' ');
  x = x.replace(/(yas | x)/g,' ');
  x = x.replace(/(yes | x)/g,' ');
  x = x.replace(/(eis | x)/g,' ');
  x = x.replace(/(ara | x)/g,' ');
  x = x.replace(/(are | x)/g,' ');
  x = x.replace(/(era | x)/g,' ');
  x = x.replace(/(ere | x)/g,' ');
  x = x.replace(/(ira | x)/g,' ');
  x = x.replace(/(ire | x)/g,' ');
  x = x.replace(/(aba | x)/g,' ');
  x = x.replace(/(ada | x)/g,' ');
  x = x.replace(/(ida | x)/g,' ');
  x = x.replace(/(ara | x)/g,' ');
  x = x.replace(/(ase | x)/g,' ');
  x = x.replace(/(ian | x)/g,' ');
  x = x.replace(/(ado | x)/g,' ');
  x = x.replace(/(ido | x)/g,' ');
  x = x.replace(/(ias | x)/g,' ');
  x = x.replace(/(ais | x)/g,' ');
  x = x.replace(/(ya | x)/g,' ');
  x = x.replace(/(ye | x)/g,' ');
  x = x.replace(/(yo | x)/g,' ');
  x = x.replace(/(en | x)/g,' ');
  x = x.replace(/(es | x)/g,' ');
  x = x.replace(/(ia | x)/g,' ');
  x = x.replace(/(ad | x)/g,' ');
  x = x.replace(/(ed | x)/g,' ');
  x = x.replace(/(id | x)/g,' ');
  x = x.replace(/(an | x)/g,' ');
  x = x.replace(/(io | x)/g,' ');
  x = x.replace(/(ar | x)/g,' ');
  x = x.replace(/(er | x)/g,' ');
  x = x.replace(/(ir | x)/g,' ');
  x = x.replace(/(as | x)/g,' ');
  x = x.replace(/(is | x)/g,' ');
  x = x.replace(/(os | x)/g,' ');
  x = x.replace(/(a | x)/g,' ');
  x = x.replace(/(i | x)/g,' ');
  x = x.replace(/(o | x)/g,' ');
  x = x.replace(/(e | x)/g,' ');
  x = x.replace(/^\s+/g,'').replace(/\s+$/g,'');
  x=x.split(" ").sort().join(" ");
  x = x.toLowerCase();
  x = x.replace(/^\s+/g,'').replace(/\s+$/g,'');
  return(x);
}

Espero que este script te resulte interesante en tus análisis de palabras clave. Si es así y quieres darle difusión en tu página, agradecería que lo referenciaras a este post.

About the author / 

jbmoreno

Soy consultor seo sem, el que maneja este cotarro de JBMoreno.es y puedes saber más de mi en Acerca de José B. Moreno Suárez

5 Comments

  1. Javier 20 abril, 2014 at 20:52 -  Responder

    Excelente Post¡¡ me resulta muy interesante el trabajo que haces con las palabras clave y sobre todo agradezco los archivos de ayuda que has puesto con todas las funciones, así como la explicación, muchas gracias por la información¡¡

  2. Ebaste 14 mayo, 2014 at 22:24 -  Responder

    Genial información. Vamos a ver que funciones podemos aplicar con un lematizador y para ofrecerlas como API. ¿Cuál sería la entrada?¿Una lista de frases?

    Gracias por el trabajazo!

    Eduardo

  3. Francisco Jofré 5 junio, 2014 at 04:24 -  Responder

    Tremendo trabajo, estimado. Se agradece que compartas estos conocimientos. He seguido tu trabajo desde hace ya un tiempo e intento aplicar tus metodologías a mi propio trabajo. Muchas gracias.

  4. Miguel A. Ayuste 16 septiembre, 2015 at 17:57 -  Responder

    Es genial par agrupar palabras. Muchisimas gracias.
    Una pregunta, los resultados de los allin title y allin anchor o allin url que salen en el spread sheet de ejemplo, ¿los automatizas de alguna manera para que te salgan en el Keyword research? He visto algún KW research de alguna agencia que también lo pone para determinar el grado de competencia pero no sé como lo hacen.

    Gracias y un saludo.

Leave a reply

Your email address will not be published. Required fields are marked *

  • Madrid: Calle Ayala 83,28006 Madrid(Madrid), España
  • Sevilla: Calle Asturias 11,41010 Sevilla(Sevilla), España
Optimization WordPress Plugins & Solutions by W3 EDGE