Identificar páginas semánticamente similares con Screaming Frog
Clasificar Embeddings en Screaming Frog
En junio de 2025 Juan González Villa dio una clase en mi máster de SEO técnico sobre una de las novedades de la versión 22 de Screaming Frog: generar embeddings de cada página durante el propio rastreo y usarlos para encontrar páginas que hablan de lo mismo, páginas que no pintan nada en la web y hasta hacer búsquedas "conversacionales" dentro de tu propio sitio.
Hasta ahora esto se podía hacer, pero sacando los embeddings y trabajándolos fuera de la herramienta. Ahora está todo dentro del rastreo, así que lo dejo por escrito con las capturas de la clase para que lo puedas replicar paso a paso.
Qué es un embedding
Lo que hace aquí Screaming Frog no es contar palabras, que para eso ya estaba la función de N-grams. Un embedding es la representación numérica de un texto: el modelo parte el contenido en tokens (una unidad más pequeña que la palabra; en español una palabra puede tener dos o tres tokens) y lo convierte en una ristra de números muy larga. Cada número es una dimensión, y los modelos buenos de hoy manejan miles.
Al final cada página acaba siendo un punto en un espacio de muchísimas dimensiones. Dos textos que hablan de lo mismo quedan cerca y dos que no tienen nada que ver quedan lejos, aunque no compartan ni una palabra. Por eso funciona igual con un post en español y su traducción al inglés: el embedding va al significado, no al idioma.
De esa idea salen las tres cosas que usa la herramienta:
- Similitud: la distancia entre dos páginas. Se mide con similitud de coseno, de 0 a 1.
- Centroide: el punto medio de todas las páginas del sitio. Lo que esté muy lejos de él es contenido que se sale de la temática de la web. En la filtración de documentación de Google de 2024 aparecía un embedding llamado site2vec, que apunta a que Google hace algo parecido con cada sitio.
- Búsqueda semántica: también se puede hacer el embedding de una consulta y ver qué páginas están más cerca de ella. Que es, salvando las distancias, una de las señales que puede usar un buscador para decidir qué URL ranquea.
Configurar el rastreo
Todo esto necesita la versión 22 o superior de Screaming Frog y licencia de pago. Juan lo hizo con Gemini, pero vale cualquiera de los proveedores.
1. Conectar un proveedor de IA
En Config › API Access están, debajo de las integraciones de siempre (Analytics, Search Console, Ahrefs…), las de inteligencia artificial: OpenAI, Gemini, Ollama y Anthropic. Para los embeddings sirven OpenAI, Gemini y Ollama (este último para modelos en local).

Metes la clave de la API en Account Information y, ojo, le das a Connect. En el directo Juan pasó por aquí corriendo, no le dio a conectar y hubo que repetir el rastreo entero: no vale con relanzar el análisis, porque los embeddings se generan durante el rastreo.
2. El prompt de los embeddings
En la pestaña Prompt Configuration del proveedor, Add from Library y eliges Extract Semantic Embeddings from Page (en Gemini usa la tarea SEMANTIC_SIMILARITY). Ya viene hecho; lo único que se decide aquí es sobre qué parte de la página se calcula el embedding: el texto de toda la página, que es lo que hace por defecto, o el resultado de una extracción propia. También podrías hacerlo solo con los títulos o solo con las FAQ de cada página.

3. Guardar el HTML
En Config › Spider › Extraction hay que marcar Store HTML y Store Rendered HTML. Si no, no hay texto del que sacar nada. Usa el HTML sin renderizar en modo texto y el renderizado si rastreas con JavaScript. Juan prefiere rastrear en modo JavaScript aunque tarde más, por lo del punto siguiente.
Como solo interesa el texto, quita del rastreo imágenes, CSS, JavaScript y demás recursos. Y si en modo JavaScript te siguen entrando imágenes enlazadas con un href, exclúyelas con una regla en Exclude.
4. Quedarte solo con el contenido principal
Este es el truco de la clase. Si haces el embedding de la página entera metes menú, pie, sidebar, comentarios y el "suscríbete", y todo eso es ruido que se repite en todas las URLs y hace que se parezcan más de lo que se parecen. En una web minimalista entra poco, pero en la mayoría entra un chorizo.
Juan usa un Custom JavaScript (Config › Custom › Custom JavaScript) de tipo Extraction que carga la librería Readability.js de Mozilla, la misma del modo lectura de Firefox, y devuelve solo el texto del artículo. Lo tiene explicado, con el código para copiar, en su post sobre cómo crear un Custom JS para Screaming Frog.

Pruébalo con el botón Test sobre una URL antes de rastrear: el resultado tiene que empezar donde empieza el artículo de verdad y acabar donde acaba, sin comentarios ni enlaces relacionados. Después, en el prompt de los embeddings (punto 2), le dices que use la salida de esa extracción en vez de Page Text.
5. Activar los embeddings
En Config › Content › Embeddings:
- Enable Embedding functionality y eliges el prompt del proveedor que has conectado. Si el desplegable sale vacío es que no le has dado a Connect.
- Semantic Similarity. El umbral por defecto es 0,95, y eso es mucho: solo te va a sacar páginas prácticamente idénticas. Juan lo baja a 0,8; entran falsos positivos, pero prefiere verlos a que se le escape algo. Marca también que solo mire las indexables y que ignore las paginaciones.
- Low Relevance. Umbral de 0,4 o 0,5 (0,1 sería estar lejísimos del centroide). Lo que marque son los outliers temáticos de la web.

6. Excluir lo que ya sabes y lanzar
Antes de rastrear, excluye los patrones que sabes que van a salir parecidos entre sí y que no te aportan nada (en el caso de Juan, el archivo de su newsletter). Si no, te llenan el informe. En Crawl Analysis › Configure marca Auto-Analyse at End of Crawl para no tener que lanzarlo a mano, conecta el sitemap por si hay huérfanas y a rastrear.
Cuando termine, fíjate en que la barra de la API también llegue al 100 %. Si no ha llegado, algo ha fallado en la conexión.
Qué sacas del rastreo
Búsqueda semántica
La pestaña Semantic Search (en la ventana de la derecha) es lo que a Juan le parece más práctico. Escribes una consulta, amplia o conversacional, y te devuelve las páginas más cercanas con su puntuación. No busca las palabras en la página: compara el embedding de la consulta con el de cada URL.

Dos ejemplos de la clase. Buscando "efectos del update de contenido útil", por coincidencia de términos no salía el post que hablaba justo de eso y por embeddings sí, con un 0,56. Y con "patentes de Google que hablan de predecir la calidad de una página por el tráfico que recibe" salieron dos posts al 0,78 y al 0,72 que no contienen esa frase en ningún sitio.
¿Para qué lo usamos? Si tienes un post nuevo y quieres saber a cuáles enlazar internamente, los primeros de la lista son los candidatos naturales, donde el enlace no va a quedar forzado. Y todo lo que esté por debajo de 0,55, más o menos, lo puedes descartar directamente. Es lo que antes se hacía a mano buscando términos, sinónimos y erratas, con un montón de falsos positivos porque la palabra aparecía de pasada al final de un post que no tenía nada que ver.
Páginas semánticamente similares
En la pestaña Content, el filtro Semantically Similar lista las páginas que superan el umbral, y en Duplicate Details (abajo) ves con cuáles se parece cada una y la puntuación. Se exportan todas de golpe desde Bulk Export › Content › Semantically Similar.
No confundir con Exact Duplicates y Near Duplicates, que llevan años en la herramienta: esos trabajan con un hash de trozos de texto y buscan páginas iguales. Esto busca páginas que hablan de lo mismo aunque estén escritas con otras palabras, o en otro idioma: en la web de Juan el mismo post en español y en inglés salió con una puntuación altísima.
También hay que leer los resultados con cabeza. Le marcó como muy parecidos un post sobre bases de datos de backlinks y otro sobre bases de datos de keywords: los dos tienen poco texto y una tabla de dominios, y para un sistema que solo ve números eso es casi lo mismo.
Contenido de baja relevancia
El filtro Low Relevance Content saca las páginas más alejadas del centroide del sitio. Son las que menos tienen que ver con el resto: a veces es contenido que sobra y a veces es una sección que se ha quedado sin contexto. Eso ya lo tienes que decidir tú.
Diagrama de clústeres
En Visualisations › Content Cluster Diagram se pintan hasta 10.000 páginas agrupadas por color según su similitud. Es lo que hacía Safecont, aquella herramienta española que dejó de existir, y que Juan usaba en la primera toma de contacto con cualquier web que no fuera pequeña: ver de un vistazo los grandes temas que toca y dónde hay duplicidades.

En la web de Juan salieron a la primera: las paginaciones del blog, los posts de WordPress de los inicios, los de Core Web Vitals (con los de JavaScript pegados, porque al hablar de velocidad se habla mucho de JavaScript) y algún punto suelto en rojo que era justamente un outlier. Desde la rueda dentada se cambia el número de clústeres, el muestreo y los colores (se pueden colorear por segmentos), y con el botón derecho ves los enlaces internos dentro de cada clúster.
Para qué sirve en el día a día
- Duplicidades semánticas. Juan contaba la auditoría de un medio con unos 70.000 posts que había pecado de publicar lo mismo una y otra vez: "por qué la guerra civil se acabó con la batalla del Ebro" y, cuatro meses después, "por qué la batalla del Ebro fue decisiva en la guerra civil". Distintas palabras, mismo post. Esto los encuentra, y luego decides: unificarlos o redirigir los sobrantes al que Google ya ha elegido.
- Enlazado interno, con la búsqueda semántica o con la lista de similares.
- Mapear redirecciones en una migración: rastreas la web vieja y la nueva juntas y las URLs semánticamente más cercanas son las candidatas.
- Auditoría de temas de una web que no te conoces, con el diagrama de clústeres.
Consejos y límites
- Cuesta muy poco. Salvo en sitios gigantescos, sacar el embedding del texto de cada página son céntimos. Da igual Gemini u OpenAI (Juan considera que no van a ser ni mejores ni peores) y con Ollama puedes probar modelos en local sin pagar. Eso sí, con la capa gratuita de Gemini te vas a comer el límite de peticiones por minuto; en Advanced se puede bajar.
- Webs grandes, por trozos. Esto es mío: una web con mucho volumen y mucha categorización hay que trabajarla como si fueran varias webs distintas. Por el precio de la API y porque mezclar secciones que no tienen nada que ver entre sí ensucia los clústeres y el centroide. Pregunta al cliente qué secciones le generan negocio y empieza por ahí.
- Textos kilométricos. Con páginas muy largas que divagan el embedding pierde precisión y puedes pasarte del límite de tokens del modelo (el ejemplo del tutorial de Screaming Frog es un error a los 8.192). En Advanced hay un Limit Page Content que corta a 5.000 caracteres; después, botón derecho en la pestaña AI › Request API Data para repetir las que fallaron.
- Área de contenido. Si no quieres el Custom JS, al menos ajusta Config › Content › Area para quitar menús, pie y texto de cookies, y comprueba en View Source con el filtro Visible Content qué está entrando.
- Dimensiones. Se puede reducir la dimensión del embedding (parámetro
dimensionsen OpenAI,outputDimensionalityen Gemini) para que el análisis vaya más rápido sin perder apenas precisión. - No es la Biblia. La similitud de coseno no siempre refleja un parecido real y la configuración es la misma para todas las webs. Es una ayuda para encontrar candidatos; la decisión sigue siendo tuya.
Y como dije al cerrar la clase: probadlo vosotros, que es como se aprende. La primera vez saldrá mal (a Juan se le olvidó darle a Connect en directo y tocó repetir el rastreo), pero luego se pilla y es muy útil.
Bibliografía
- How To Identify Semantically Similar Pages & Outliers, tutorial de Screaming Frog.
- Screaming Frog SEO Spider Update – Version 22.0, notas de la versión (junio de 2025).
- Cómo crear un Custom JS para Screaming Frog, de Juan González Villa, con el snippet de Readability.js.
- Readability.js, la librería de Mozilla del modo lectura de Firefox.
Te falta mi máster. Accede a una formación avanzada que te permitirá aplicar e implementar SEO en cualquier tipo de web.
Accede al Máster de SEO Técnico