Charla en el marco del User Web Analytics del eShow Barcelona 2017. En este caso hablamos de indexación SEO y de como los logs pueden darte información de primera mano sobre el rastreo que Google hace sobre nuestras webs.
Desgranamos además la técnica que usamos en IKAUE para crear dashboards del rastreo de GoogleBot con Google Big Query y Google Data Studio
3. #ClinicSEO @ikhuerta
Elección de Keywords y temáticas
Content Marketing
Optimización de Contenidos
Priorización del HTML
Marcado Semántico (HTML5 & Schema)
Links de temáticas recibidos
Links Entrantes
Link Sculpting
Crecimiento (Natural, Building & Baiting)
Links Tóxicos
Velocidad de Carga
Calidad del contenido
Señales Sociales y Marca
Crawling
Priorización de la indexación
Velocidades de rastreo
Redirecciones y Canonicals
Orientación hacia distintos bots
Restricciones y ayudas a las arañas
Indexación
Semántica Autoridad
Calidad
11. #ClinicSEO @ikhuerta
Acabé contigo,
preséntame a tus
amigas…
LINK LINK LINK
LINK
LINK
LINK LINK LINK
LINK
LINK
LINK
LINK
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
12. #ClinicSEO @ikhuerta
Y ahora las amigas
de tus amigas…
LINK LINK LINK
LINK
LINK
LINK LINK LINK
LINK
LINK
LINK
LINK
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
KL
I
N
K
L
I
N
K
L
I
N
K
L
I
N
KL
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
L
I
N
K
15. #ClinicSEO @ikhuerta
Distancia de rastreo
Número de saltos que necesita dar la araña desde una URL de gran
autoridad para encontrar tu contenido.
Home
Categoría
Contenido
Página 2
Punto de gran
autoridad
Contenido a
posicionar
16. #ClinicSEO @ikhuerta
Distancia de rastreo
Número de saltos que necesita dar la araña desde una URL de gran
autoridad para encontrar tu contenido.
Home
Categoría
Contenido
Página 2
21
3
Punto de gran
autoridad
Contenido a
posicionar
18. #ClinicSEO @ikhuerta
Nuestras herramientas de optimización OnSite del Rastreo
Gran mejora
No afectamos
a la UX del site
Afectamos mucho
a la UX del site
Sin mejora
Cambios en la AI
Menús dinámicos y
Breadcrumbs
Rel=nofollow
Robots.txt
Sitemaps.xml
Etiquetados HTML Bloques de linking
Sitemaps HTML
Content Links
Meta Robots
19. #ClinicSEO @ikhuerta
Nuestras herramientas de optimización OnSite del Rastreo
Gran mejora
No afectamos
a la UX del site
Afectamos mucho
a la UX del site
Sin mejora
Cambios en la AI
Menús dinámicos y
Breadcrumbs
Rel=nofollow
Robots.txt
Sitemaps.xml
Etiquetados HTML Bloques de linking
Sitemaps HTML
OPTIMIZACIONES TÉCNICAS LINK SCULPING
Content Links
Meta Robots
20. #ClinicSEO @ikhuerta
Crawl Budget
Se basa en “suponer” que google nos dedica un tiempo de proceso de sus
arañas por día y por lo tanto cada página supone un gasto de este tiempo.
“Mi tiempo para ti es limitado!”
21. #ClinicSEO @ikhuerta
Tiempo que nos dedican las arañas de Google
Página
404
No se
indexa
Página
Rastreada
Página
Rastreada
Redi-
rección
Página
503
No se
indexa
Página
Rastreada
A esta
página las
arañas ya no
llegan
22. #ClinicSEO @ikhuerta
Optimización del Crawl Budget
- Errores de servidor (5xx)
- Redirecciones (3xx)
- Páginas que no existen o sin acceso (4xx)
- Páginas “Thin Content”
- Páginas con KW duplicadas
- Páginas y filtros sin KW de negocio
1. Eliminar Rastreos innecesarios
23. #ClinicSEO @ikhuerta
Optimización del Crawl Budget
- Tiempos de respuesta del servidor (rendimiento y caché)
- Peso de las páginas (imágenes, scripts, css, html)
- Respuesta de dominios y DNS
- Localización del servidor que da la respuesta
- Negociaciones (cookies, etc.)
2. Mejorar velocidad de rastreo (WPO)
24. #ClinicSEO @ikhuerta
Optimización del Crawl Budget
- Productos estrella sobre productos
- Categorías con volumen sobre menores
- Primera página sobre el resto
- Páginas de KW con volumen
- Páginas de KW con potencial de volumen (TOP10-15)
- Etc…
3. Priorizar recursos con mayor potencial SEO
27. #ClinicSEO @ikhuerta
LO BUENO
LOGSEMULADORES
(Crawlers)
LO MALO
- Info REAL del crawling
- Reflejan el momento en el
que sucedió la información.
- Fácil manejo
- Bajo coste
- Información sobre
etiquetas HTML
- Muy técnicos
- Archivos muy pesados
- Debemos capturarlos
ANTES de trabajar
- Debes lanzarlos sobre
toda la web
- No garantizan que sea así
como rastrea Google
29. #ClinicSEO @ikhuerta
20€/mes - 100K Urls
100€/mes - 500K Urls
200€/mes - 2M Urls
Solo planes a medida:
Aproximación de ejemplo:
300€/mes - 2M Urls
API
(solo planes altos)
API
(depende del plan)
LOGS
LOGS
(solo planes a medida)
API
(bajo demanda)
70€/mes - 100K Urls
170€/mes - 500K Urls
440€/mes – 1,5M Urls
Crawlers Emuladores en la Nube:
30. #ClinicSEO @ikhuerta
Analizadores de Logs en la nube
Se implementa en el servidor.
Es capaz de procesar grandes volúmenes de datos
Pero no está orientado a SEO, hay que saber manejarlo
De pago, con precio a negociar, siempre como añadido al crawler
Se sincroniza con las URLs recogidas
Puedes sincronizar o subir tus logs
De pago, con precio a negociar, siempre como añadido al crawler
Se sincroniza con las URLs recogidas
Subes tus logs
31. #ClinicSEO @ikhuerta
Trabajando con Datos…
FUENTE
(Conseguir
los datos correctos)
MODELADO
(tranformarlos
información útil)
ACCESO
(poder sacar el informe
que necesitemos)
CONSUMO
(Visualizar la información
de forma comprensible)
33. #ClinicSEO @ikhuerta
Trabajando con Datos…
FUENTE
(Conseguir
los datos correctos)
MODELADO
(tranformarlos
información útil)
ACCESO
(poder sacar el informe
que necesitemos)
CONSUMO
(Visualizar la información
de forma comprensible)
45. #ClinicSEO @ikhuerta
91.121.115.186 - - [18/Nov/2016:00:00:01 +0100] "GET / HTTP/1.1" 200 19548 "-" "Mozilla/5.0
(compatible; Googlebot/2.1; +http://www.google.com/bot.html)“
ESTO ES UNA LÍNEA DE LOG:
46. #ClinicSEO @ikhuerta
91.121.115.186 - - [18/Nov/2016:00:00:01 +0100] "GET / HTTP/1.1" 200 19548 "-" "Mozilla/5.0
(compatible; Googlebot/2.1; +http://www.google.com/bot.html)“
ESTO ES UNA LÍNEA DE LOG:
48. #ClinicSEO @ikhuerta
¿No sería genial que los logs fuesen CSVs?
- Día de la solicitud;
- Hora;
- IP desde donde se pidió la página;
- Método de la petición (GET, POST, ...);
- Protocolo (http,https);
- Host del servidor (dominio + subdominio);
- URL solicitada (sin parámetros de consulta);
- Parámetros de la consulta en la query;
- Referrer de la solicitud;
- User Agent que hace la petición;
- Tamaño de la descarga;
- Tiempo de proceso antes de servir la descarga
Ejemplo de línea de Log CSV:
2017-03-23;17:00;91.23.1.5;GET;https;”blog.ikhuerta.com”;;”http://www.google.es”;” Mozilla/5.0 (compatible; …
50. #ClinicSEO @ikhuerta
Lo Bueno Trabajar con LOGs se vuelve más Fácil
Lo Malo Sin histórico,
Recoges datos desde que cambies el
formato.
Lo Feo Cambiar como trabaja Sistemas solo
por analizar logs no siempre cuaja…
51. #ClinicSEO @ikhuerta
MODELADO
LOG FILE ANALYSER
Cómo herramienta aún no
es muy potente.
Pero la lectura del LOGS la
hace muy bien.
Y la exportación a CSV o
Excel después de leerlos
también…
53. #ClinicSEO @ikhuerta
Lo Bueno
Sin Ayuda
ni conocimientos técnicos
Lo Malo Solo para logs pequeños
“lo que aguante la RAM de tu PC”
Lo Feo Pagar 115€ al año, solo para
convertir a CSV no acaba de salir
a cuenta…
61. #ClinicSEO @ikhuerta
Nos permite almacenar grandes archivos en la nube de
Google.
(Recuerda, los logs pueden medir fácilmente varios GB)
Nos permite transformar los datos en una Base de
datos orientada a Big Data y consultarlos a gran
velocidad.
62. #ClinicSEO @ikhuerta
Para poder trabajar
con cualquier
servicio,
HAY QUE DEFINIR
UN MÉTODO DE
PAGO
(Aunque sea para no pagar nada)
63. #ClinicSEO @ikhuerta
Pero tenemos 300$
gratis para los primeros
3 Meses.
Más que suficiente para probarlo e incluso para hacer muchos análisis puntuales
66. #ClinicSEO @ikhuerta
No deberíais asustaros por el precio (para el análisis de logs)
Coste al año para analizar casi 10 GB de logs: < 5 €
67. #ClinicSEO @ikhuerta
No deberíais asustaros por el precio (para el análisis de logs)
Coste al año para analizar casi 10 GB de logs: < 5 €
El precio empieza a crecer cuando realizas
consutlas de más de 1TB al mes.
69. #ClinicSEO @ikhuerta
En el servicio de “Storage” debemos crear un “Segmento”
donde iremos almacenando los logs
1. Subiendo tus Logs
70. #ClinicSEO @ikhuerta
0,026$ por GB/MES
Alta disponibiliad en todo el mundo.
0,020$ por GB/MES
Alta disponibilidad solo en tu región
(el más cercano es OestedeEuropa)
0,010$ por GB/MES - Mínimo 30 días duración
Y cobran 0,01$ por GB consultado
0,007$ por GB/MES – Mínimo 90 días duración
y cobran 0,05$ por GB consultado.
Nombre del segmento (¡¡¡que sea fácil de escribir!!!)
71. #ClinicSEO @ikhuerta
0,026$ por GB/MES
Alta disponibiliad en todo el mundo.
0,020$ por GB/MES
Alta disponibilidad solo en tu región
(el más cercano es OestedeEuropa)
0,010$ por GB/MES - Mínimo 30 días duración
Y cobran 0,01$ por GB consultado
0,007$ por GB/MES – Mínimo 90 días duración
y cobran 0,05$ por GB consultado.
REGIONAL: Tu opción si vas a realizar una sola carga y borrar los datos.
O si vas a ir recargando los logs varias veces al mes.
NEARLINE: Tu opción si vas a dejar los datos ahí para ir consultando la
misma colección de datos una y otra vez
72. #ClinicSEO @ikhuerta
SUBIMOS LOS ARCHIVOS QUE DESEEMOS
Una vez subidos accederemos a ellos con la dirección:
{nombre segmento}/{nombre archivo}
Por ejemplo:
Nombre Segmento: logs-midominio
Nombre-archivo: logs-2017-02.log
Accederíamos con: “logs-midomio/logs-2017-02.log”
79. #ClinicSEO @ikhuerta
Indicamos el archivo
que acabamos de subir
Ponemos nombre a la
tabla
Formato CSV
Creando Tabla de big query 1/2
Segmento Archivo
80. #ClinicSEO @ikhuerta
Creando Tabla de big query 2/2
Creamos solo un campo
al que llamamos “data”
Los campos van
separados por cualquier
carácter que
NO EXISTA en el log
Asi no lo separará…
82. #ClinicSEO @ikhuerta
Le añadimos además
esta tabla para poder
trabajar los meses
(que en los logs vienen
así escritos)
(subimos un CSV que asocie nombres de
meses con sus números)
DESCARGA EL CSV AQUI
84. #ClinicSEO @ikhuerta
Nuestra Query Mágica
SELECT
DATE(CONCAT(
regexp_extract( l.data , r'[[0-9]{2}/(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Ago|Sep|Oct|Nov|Dec)/([0-9]{4})' ) , "-",
STRING(m.number), "-",
regexp_extract( l.data , r'[([0-9]{2})/(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Ago|Sep|Oct|Nov|Dec)/[0-9]{4}' )
)) as date,
regexp_extract( l.data , r'[ "]([^ "/]*[Gg]oogle[^ ";]*);?[ "]' ) as bot,
regexp_extract( l.data , r' ([1-5][0-9]{2}) ' ) as code,
regexp_extract( l.data , r' (/[^s]*)' ) as uri,
regexp_extract( l.data , r' (/[^s?]*)' ) as clean_uri,
regexp_extract( l.data , r'^(?:[^"]*"){5}([^"]*)') as useragent,
regexp_extract( l.data , r'([.a-z0-9]*midominio[.a-z]+)' ) as host
FROM [dataSet.nombreTabla] l CROSS JOIN [dataSet.months] m
WHERE
regexp_extract( l.data , r'[[0-9]{2}/(Jan|Feb|Mar|Apr|May|Jun|Jul|Ago|Sep|Oct|Nov|Dec)/[0-9]{4}' ) = m.text
AND
( REGEXP_MATCH(l.data, r'"[^"/h][^"]*oogle[Bb]ot[^"]*"' ) OR REGEXP_MATCH(l.data,
r'"[^"/h][^"]*([Mm]ediapartners|[Aa]ds[Bb]ot)-[gG]oogle[^"]*"'
) )
Solo debes descargarla y reemplazar los trozos en rojo por los de tu
host (sin extensión), nombre de dataSet y el de las tablas
DESCARGA LA QUERY AQUI
86. #ClinicSEO @ikhuerta
Copiamos la Query
Mágica
Ponemos nombre a la
nueva tabla donde se
guardarán los datos
Permitimos resultados
grandes
Y lanzamos la consulta
93. #ClinicSEO @ikhuerta
Antonio ya os ha presentado la
herramienta esta misma mañana…
@seoito
http://blog.ikhuerta.com/dashboards-profesionales-de-
google-analytics-con-google-datastudio
Y os añado un par de posts…
http://blog.ikhuerta.com/introduccion-a-google-
datastudio-los-dashboards-de-google
96. #ClinicSEO @ikhuerta
1. Seleccionamos Big
Query
2. Seleccionamos el
proyecto con los logs
3. Seleccionamos el
dataSet
4. Seleccionamos la
tabla con los logs
modelados
98. #ClinicSEO @ikhuerta
1. Nombre del campo
2. ID interno de data
studio (no se puede
editar luego)
3. Definición de la
Fórmula
99. #ClinicSEO @ikhuerta
CAMPO ¿QUÉ REPRESENTA? Fórmula en DataStudio
Hits Número de visitas del BOT COUNT(1)
URIs Visitadas Número de URIs únicas visitadas por el BOT COUNT_DISCTINCT(URI)
URIs (Sin parámetros)
Visitadas
Eliminando paramentros (Tras el ?) cuantas URIs
únicas visitadas COUNT_DISTICNT(URI (sin parámetros) )
Hits por URI
Número de Hits en el periodo por cada URI
contemplada Hits / URIs Visitadas
Hits por URI (sin parámetros)
Número de Hits en el periodo por cada URI única
(sin parámetros) visitada Hits / URIs (sin parámetros) Visitadas
URI nivel 1 Primera carpeta/directorio de la URI REGEXP_EXTRACT(URI, '^/([^/]*)')
URI nivel 2 Segunda carpeta/directorio de la URI REGEXP_EXTRACT(URI, '^/[^/]+/([^/]*)')
Nuestra colección de Métricas y Dimensiones calculadas…
103. #ClinicSEO @ikhuerta
CONSUMO
(Visualizar la información
de forma comprensible)
Pero lo realmente interesante es
“IR A BUSCAR LA INFORMACIÓN ACCIONABLE”
Eliminar Rastreos innecesarios
Entender tu crawl budget
Priorizar tus páginas
104. #ClinicSEO @ikhuerta
Eliminar Rastreos innecesarios
• Los 200 son correctos.
• Los 404 y 410 deben minimizarse (pero no
desaparecerán nunca)
• Los 302 y 301 deben ir eliminándose del rastreo
• Los 500, 501 y 502 son errores de servidor y
perdida de autoridad que no debería suceder
• Los 503 de forma temporal no hacen daño
• Los códigos inventandos (499, 599, etc.) nunca
deberían haber existido
Códigos de servidor
105. #ClinicSEO @ikhuerta
Eliminar Rastreos innecesarios
• Las visitas a la versión que redirige son perdidas
de rastreo, pero un resto siembre es inevitable.
• Incluso en sites en los que nunca ha existido
http, google valida ambas versiones de los
datos.
Protocolo
En los logs por defecto de servidor no se suele guardar el protocolo y
esto supone no saber que hits son a http o https
106. #ClinicSEO @ikhuerta
Eliminar Rastreos innecesarios
• Si tenemos varios dominios no
debemos confundir las visitas de bots
entre ellos
• Muchos sites reciben visitas en
dominios que no sabían que tenían
activos
Hots y Subdominios
El host es otro campo que muchos logs no incluyen de serie
108. #ClinicSEO @ikhuerta
Los picos son similares,
Pero Search Console normaliza mucho la información
Entender tu crawl budget
109. #ClinicSEO @ikhuerta
Por lo general GoogleBot realiza gran cantidad de hits
a URLs de gran autoridad y las que tienen pocos hits corren riegos
Entender tu crawl budget
• Más importante que los hits
son las URIs visitadas
• Y la cantidad de hits por URL
que realizan los robots
110. #ClinicSEO @ikhuerta
Priorizar tus páginas
• Crear una página
“buscadora de URLs” es
vital para encontrar
problemas y ver el
número de Hits de
cada URL
Filtros, para poder
escoger cuales ver
URIs con el número de
hits recibidos
111. #ClinicSEO @ikhuerta
Priorizar tus páginas
• Si además podemos
clasificarlas por
tipologías o carpetas, el
análisis resulta mucho
más fácil e intuitivo
112. #ClinicSEO @ikhuerta
BONUS : Esto es solo el principio…
1. ¿Montamos dashboards con datos de Logs, Google Search
Console y Analytics?
2. ¿Automatizamos la subida de logs a Google Big Query?
3. ¿Subimos a BigQuery datos de ScreamingForg, Analytics,
Sistrix y Semrush asociados a los logs?