Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Javascript + SEO

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for Nacho Mascort Nacho Mascort
October 03, 2026
7

Javascript + SEO

Avatar for Nacho Mascort

Nacho Mascort

October 03, 2026

Transcript

  1. Hola! Soy Nacho Mascort SEO Product Owner @ Softonic Enlaces

    de interés: https://twitter.com/NachoMascort https://github.com/NachoSEO https://gumroad.com/l/programacion-seo 2
  2. Objetivos de hoy ⬡ Comprender que es JS y aclarar

    ciertos aspectos técnicos ⬡ Entender cómo lo procesan los buscadores ⬡ Qué podemos hacer como SEO cuando nos enfrentamos a un site en JS 3
  3. ¿Qué es JavaScript? Lenguaje de programación Usado en cliente para

    interactuar con el DOM También usado del lado del servidor Desarrollado por Brendan Eich de NetScape (en 10 días) ⬡ Mocha -> LiveScript -> JavaScript ⬡ ⬡ ⬡ ⬡ * No tiene nada que ver con Java 5
  4. DOM ⬡ Document Object Model ⬡ El DOM se constituye

    a través de un HTML ⬡ Es un árbol de nodos jerárquicos con relación padre-hijo-hermano ⬡ JS puede manipular estos nodos 8
  5. ¿Cómo es un site “tradicional”? ⬡ Tradicional = archivos estáticos

    en el server ⬡ En tu servidor tienes: A) HTML con el contenido ya generado (poco eficiente y cero escalable) B) Templates en los que hay variables que se rellenan de contenido y que cambian según cada ruta de la URL 14
  6. Cambiando el mindset • Lo que hemos visto también se

    hace con frameworks en JS • Importante: ◦ JS Front-end vs JS Back-end ◦ (Cliente vs servidor) 18
  7. ¿Cómo es un site JS en cliente? • El servidor

    tiene los archivos pero no le aplica ninguna lógica, eso lo hace el navegador (cliente) 19
  8. Tipos de sites hechos en JS en cliente • SPA

    = Single Page Application (no hay urls) • PWA = Progressive Web App (Es como una SPA pero con funcionalidades extra que imita a una app) • Otras opciones mixtas 20
  9. Diferencia principal Servidor Cliente • El servidor devuelve el archivo

    estático con todo montado para el navegador • El servidor devuelve una serie de archivos de HTML y JS que después el navegador tendrá que procesar y “montar” 25
  10. Procesos de un motor de búsqueda RASTREAR INDEXAR POSICIONAR Todo

    aquel proceso que tiene que ver con la accesibilidad del site y la obtención de información por parte de Googlebot. Multitud de procesos destinados a la comprensión del lenguaje, cálculos de relevancia, renderización de componentes y otros temas. Algoritmos encargados de procesar la “query” y cruzar los datos del índice (índex) con tal de devolver los resultados más relevantes. 36
  11. Proceso de indexación Raw HTML Procesamiento del contenido - Semántica

    - Duplicidad - Internacionalización - Tasa de actualización - … Similar al índice de las últimas páginas de un libro: una entrada para cada palabra de cada página web que se indexa.
  12. ¿Que pasa cuando no hay contenido en el HTML porque

    lo ha de crear un JS en cliente? 43
  13. Googlebot es evergreen • Crawlea y renderiza usando la última

    versión disponible de Chromium • Googlebot renderiza con Chrome/Chromium • Soporta: ◦ ES6 y otras funcionalidades de JS ◦ IntersectionObserver para lazy load ◦ V1 APIs para Componentes Web 48
  14. Pool manager • El servicio de renderizado usa varios chromiums

    “siempre activos” • Ese conjunto de chromiums esta dentro una “pool” que recibe ciertos datos de configuración del Orquestador 55
  15. Renderizador • Cookies se sobreescriben • Fecha / tiempo determinado

    • Service Workers y Avisos de permisos desactivados • Las animaciones se comportan distinto 56
  16. Fetching Con tal de optimizar: • No obedecen las reglas

    de cacheo HTTP • No suelen pedir todos los recursos 64
  17. JavaScript El coste importa • Google limita el uso de

    CPU • Si hace falta interrumpirán un script • Un consumo excesivo de CPU impacta de forma negativa en la indexación 66
  18. JavaScript - Errores típicos • • • • Robots.txt bloqueando

    recursos Recursos que no soporta Google Cloaking Minería de criptomonedas 67
  19. ¿Qué configuraciones existen? • • • • CSR = Client

    Side Rendering SSR = Server Side Rendering Dynamic Rendering Hybrid Rendering 69
  20. Client Side Rendering • Todo el JS se procesa en

    cliente • El HTML viene vacío o con la estructura básica y se rellena en el navegador • Es la configuración más costosa para Google (y la que suele dar más problemas) 70
  21. Server Side Rendering • En el servidor hay una etapa

    extra que crea todo el HTML final evitando ese trabajo al navegador • Se manda un archivo totalmente estático • La opción preferida de Google, la menos costosa para ellos (y la que mejor suele funcionar) 72
  22. Server Side Rendering • React → renderToString() o NextJS •

    Vue.js → Nuxt • Angular → Universal 73
  23. CSR vs SSR SSR CSR • TTFB se incrementa •

    Mayor coste para el servidor • Necesidad de cacheado por componentes • Más amigable con los motores de búsqueda • Más rápido en server pero más lento en cliente • Dispositivos con poca potencia tendrán muchas dificultades • Nada amigable con los motores de búsquedas 74
  24. Dynamic Rendering • Depende del user-agent se manda un archivo

    por construir (CSR) o estático (SSR) • Solución provisional para Google según su documentación • No se considera cloaking 77
  25. Hybrid rendering • Una parte del HTML ya viene pre-construída,

    sólo la más crítica o la más reutilizable • A través de la “rehidratación” rellenan los huecos con JS usando el DOM pre-cargado en servidor • Se pueden realizar customizaciones para adaptar elementos CSR + SSR 82
  26. 85

  27. Links • Uno de los métodos principales para descubrir nuevas

    páginas • Si usamos CSR, muchos se descubrirán en la segunda ola de indexación • Depende cómo estemos “mostrando” esos links los tendrá en cuenta o no en el cálculo del link graph 87
  28. Links <a onclick=”goTo(‘page’)”>no, no hay href</a> <a href=”javascript:goTo(‘page’)”>no, falta enlace</a>

    <a href=”javascript:void(0)”>nope, falta enlace</a> <span onclick=”goTo(‘page’)”>no es el elemento HTML adecuado</span> <option value="page">no, elemento HTML erroneo</option> <a href=”#”>no hay enlace</a> 89
  29. Links en SPA • URLs con un hash # en

    su ruta son la misma URL para Google ◦ ejemplo.com/#category • La URL debe estar en un <a> con un href sin el hash (y por nuestro lado debemos implementar la lógica para mandar al usuario a otra página) 91
  30. Metadata • Sea la configuración que sea, es recomendable siempre

    devolver metadatos desde el servidor: ◦ Title ◦ Description ◦ Canonical ◦ Robots ◦ Hreflang 93
  31. Soft 404 • Una página de error que devuelve un

    estatus HTTP 200 ok • Una página de destino de una redirección que no tenga que ver con la página origen • Páginas sin rellenar o apenas con contenido 100
  32. Soft 404 • En las SPA es típico encontrarse con

    el primer error (página de error cargada en cliente pero con un código 200 desde server) • ¿Cómo se soluciona? ◦ Redirect a una página de error tipo: /not-found (y devolviendo 404 o 410) ◦ Añadir un noindex 101
  33. Cookies y detectar user agents • Googlebot no guarda estado

    ◦ Datos de sesión y almacenamiento local se borran por cada petición ◦ Borra cookies HTTP por request 102
  34. Otros problemas típicos • Falta de datos estructurados • Problemas

    con imágenes (usar lazy load nativo siempre) • Componentes web 104
  35. Configuración • Definir configuración del framework ◦ SSR la más

    recomendada ▪ Definir framework para la renderización • En caso de no hacer SSR ◦ Definir elementos mínimos clave ◦ Contenido esencial ◦ Metas 106
  36. Comprueba el resto de problemáticas • • • • •

    Enlaces Soft 404 Imágenes Datos estructurados etc 114
  37. Recursos ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡

    ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ https://es.wikipedia.org/wiki/JavaScript https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model https://javascript.info/dom-nodes https://httparchive.org/reports/state-of-javascript?start=2016_11_15&end=latest&view=list https://v8.dev/blog/cost-of-javascript-2019 https://medium.com/@addyosmani/the-cost-of-javascript-in-2018-7d8950fbb5d4 https://es.statista.com/estadisticas/600645/cuota-de-mercado-mundial-de-smartphones-por-fabricante/ https://www.youtube.com/watch?t=800&v=PFwUbgvpdaQ&feature=youtu.be https://es.semrush.com/blog/seo-javascript/ https://developers.google.com/search/docs/guides/javascript-seo-basics?hl=es https://youtu.be/bEet8sysV5s?t=1212 https://www.jcchouinard.com/what-is-rendering-for-google/ https://www.youtube.com/watch?v=58GhnR_-iWM https://medium.com/walmartglobaltech/the-benefits-of-server-side-rendering-over-client-side-rendering-5d 07ff2cefe8 https://developers.google.com/web/tools/puppeteer/articles/ssr https://stackoverflow.com/questions/51255949/dynamic-rendering-vs-hybrid-rendering https://developers.google.com/web/updates/2019/02/rendering-on-the-web 116
  38. Recursos ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ https://reactjs.org/docs/react-dom-server.html#rendertostring https://www.youtube.com/watch?t=1177&v=PFwUbgvpdaQ&feature=youtu.be https://ahrefs.com/blog/es/javascript-seo/

    https://developers.google.com/search/docs/advanced/guidelines/links-crawlable?hl=es https://www.searchviu.com/en/javascript-seo-experiment-hreflang/ https://www.mecagoenlos.com/Posicionamiento/la-segunda-ola-de.php 117
  39. Free templates for all your presentation needs For PowerPoint and

    Google Slides 100% free for personal or commercial use Ready to use, professional and customizable Blow your audience away with attractive visuals 118