<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>Natzir Turrado</title>
	<atom:link href="https://natzir.com/feed/" rel="self" type="application/rss+xml"/>
	<link>https://natzir.com/</link>
	<description>Artículos del blog de Natzir Turrado</description>
	<lastBuildDate>Mon, 01 Jun 2026 07:41:29 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Cómo calcular el Quantum PageRank en el ordenador cuántico de IBM</title>
		<link>https://natzir.com/posicionamiento-buscadores/quantum-pagerank-ordenador-ibm/</link>
					<comments>https://natzir.com/posicionamiento-buscadores/quantum-pagerank-ordenador-ibm/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Sun, 31 May 2026 17:46:59 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[seo-tecnico]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3561</guid>

					<description><![CDATA[<p>He hecho un experimento un poco absurdo y muy divertido. He cogido el grafo de enlaces de este blog, traduje el PageRank a su versión cuántica y lo ejecuté en una de las máquinas cuánticas que IBM tiene en la nube, algo que nunca nadie ha hecho hasta el momento 🙂 ¡Y funcionó! Hay un [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/quantum-pagerank-ordenador-ibm/">Cómo calcular el Quantum PageRank en el ordenador cuántico de IBM</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>He hecho un experimento un poco absurdo y muy divertido. He cogido el grafo de enlaces de este blog, traduje el PageRank a su versión cuántica y lo ejecuté en una de las máquinas cuánticas que IBM tiene en la nube, algo que nunca nadie ha hecho hasta el momento <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>¡Y funcionó! Hay un identificador de trabajo (<a href="https://quantum.cloud.ibm.com/workloads?search=d8e52hhvjngc73ant800">d8e52hhvjngc73ant800</a>, por si alguien quiere comprobarlo) que demuestra que el circuito corrió en un chip de IBM y no en una simulación.</p>
<p>Antes que pierdas el tiempo aquí te aviso ya... para SEO no sirve de nada. Pero si eres un nerd, seguro que querrás seguir leyendo.</p>
<p>A continuación explico de dónde sale la idea, qué hice exactamente y <strong>por qué Google no haría esto ni queriendo</strong>.</p>
<p>No hace falta saber física porque voy a explicarlo todo para que se entienda.</p>
<h2>El PageRank simula un navegante que va dando tumbos aleatorios por Internet...</h2>
<p>La definición original de <strong>PageRank</strong> (Brin y Page, 1998) es recursiva y un poco circular, es decir, que una página es importante si la enlazan páginas importantes, que a su vez lo son si las enlazan otras importantes, y así hasta el infinito. Lo cual tiene un problema gordo, ya que eso es imposible de calcular.</p>
<p>Para que eso fuera calculable, Brin y Page lo explicaron con un modelo que acabó siendo hasta más famoso que la propia fórmula: el del <a href="https://patents.google.com/patent/US6285999"><strong>random surfer</strong></a> (el navegante aleatorio).</p>
<p>Imagina a alguien navegando sin rumbo que entra en una página, pincha un enlace al azar, llega a otra, pincha otro, y así durante horas. De vez en cuando se aburre y, en lugar de seguir un enlace, salta a una página cualquiera del sitio (ese es el famoso <strong>damping factor</strong> de 0,85, es decir, el 85% de las veces sigue un enlace, el 15% salta). El PageRank de una página es la fracción de tiempo que el navegante pasa ahí.</p>
<p>Lo que mola de esto es que los dos caminos dan exactamente el mismo resultado. La definición recursiva y el tiempo que pasa el navegante coinciden hasta el último decimal.</p>
<p>Quédate con lo del navegante aleatorio porque esto con <strong>la versión cuántica del PageRank</strong> va a cambiar. En matemáticas el navegante es una <strong>cadena de Markov</strong> y lo único que decide el siguiente paso es dónde estás ahora y no cómo llegaste. <strong>Un ordenador normal esto se resuelve en un momento, incluso para la web entera es trivial y eficiente</strong>. Yo <a href="https://natzir.com/posicionamiento-buscadores/enlaces-pagina-misma-pagina-pasan-pagerank/">lo implementé en 2011</a>, después de una discusión en Twitter, y el código me cabía en media pantalla.</p>
<h2>...y la versión cuántica cambia el dado por una onda</h2>
<p>En 2012, dos físicos (<strong>Giuseppe Paparo y Miguel Ángel Martín-Delgado</strong>) publicaron en<span> </span>Scientific Reports<span> </span>un artículo titulado<span> </span><a href="https://arxiv.org/abs/1112.2079">Google in a Quantum Network</a>. Se preguntaron: ¿y si en vez de un navegante que tira un dado en cada paso, pones uno que se comporta como una onda?</p>
<p>El navegante clásico está siempre en una página concreta, pero <strong>el navegante cuántico está repartido por muchas páginas a la vez, en lo que se llama una superposición</strong>. Y los distintos caminos que podría tomar interfieren entre sí, como las olas en el agua, que en unos puntos se suman y en otros se cancelan. Esa interferencia hace que la "probabilidad" de acabar en cada página se reparta de una forma distinta a la clásica.</p>
<p><img fetchpriority="high" decoding="async" src="https://natzir.com/wp-content/uploads/2026/05/Schematic-outline-and-summary-of-the-quantum-PageRank-algorithm-1024x674.avif" alt="Schematic outline and summary of the quantum pagerank algorithm" width="1024" height="674" class="alignnone size-large wp-image-3585" srcset="https://natzir.com/wp-content/uploads/2026/05/Schematic-outline-and-summary-of-the-quantum-PageRank-algorithm-1024x674.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/Schematic-outline-and-summary-of-the-quantum-PageRank-algorithm-350x231.avif 350w, https://natzir.com/wp-content/uploads/2026/05/Schematic-outline-and-summary-of-the-quantum-PageRank-algorithm-768x506.avif 768w, https://natzir.com/wp-content/uploads/2026/05/Schematic-outline-and-summary-of-the-quantum-PageRank-algorithm.avif 1400w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>Y esto se vuelve SUPER pesado de calcular porque el estado del navegante cuántico es <strong>de qué página vengo y a cuál voy</strong>. Es decir, si tu sitio tiene N páginas, los pares posibles son N por N, o sea N². <strong>Para las 123 páginas de mi blog eso son unos 15.000 estados posibles</strong>.</p>
<p>El motor de todo este invento se llama <a href="https://www.researchgate.net/profile/Mario-Szegedy/publication/4109377_Quantum_speed-up_of_Markov_Chain_based_algorithms/links/53fb7d920cf22f21c2f33046/Quantum-speed-up-of-Markov-Chain-based-algorithms.pdf">walk de Szegedy.</a> Vamos, que el algoritmo no es mío, lo único que hago yo es aplicarlo a mi blog. Lo que sí es nuevo, es haberlo ejecutado en un ordenador cuántico de verdad, porque Paparo y compañía lo simularon en ordenadores normales. Nadie, hasta donde he podido ver, <a href="https://www.abc.es/tecnologia/abci-cientificos-espanoles-crean-algoritmo-201112170000_noticia.html">había metido el quantum walk de una web real en un chip cuántico físico</a>.</p>
<p>Antes de empezar, repliqué el ejemplo que ellos publican en el paper, un arbolito de 7 nodos en 3 niveles, con unos valores concretos en una tabla y el código tenía que devolver esos mismos números y los devolvió, con cuatro decimales de acuerdo. A partir de ahí supe que íbamos por el buen camino.</p>
<p>Sobre mis datos también reaparecen los hallazgos que ellos describen en su paper: <strong>el ranking se reordena, emergen "hubs secundarios" que el clásico no destacaba, la cola de páginas poco enlazadas se redistribuye</strong>. Hay una afirmación suya que no logré reproducir bien, la mayor estabilidad frente al damping, pero es que esa propiedad necesita promediar sobre muchos grafos distintos y yo tengo uno solo. Lo digo para no venderte algo que no vi.</p>
<h2>Calculando el Quantum PageRank de mi blog en el ordenador cuántico de IBM</h2>
<p>Cogí un trozo pequeño del blog (luego entenderás la razón), solo 4 páginas que se enlazan entre sí (la home, el índice de artículos y dos posts), y mandé el circuito al <strong>ibm_marrakesh</strong>, con un procesador de 156 qubits.</p>
<p>El resultado es curioso, el PageRank clásico de ese grupito corona el índice de artículos por encima de la home. La versión cuántica le da la vuelta y pone la home primero. Y he comprobado que no se trata de un error, porque el cálculo ideal simulado lo predice y el chip, con su ruido y todo, lo respeta. Así que la home gana.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/mov1_qpu-1024x587.avif" alt="quantum-pagerank" width="1024" height="587" class="alignnone size-large wp-image-3562" srcset="https://natzir.com/wp-content/uploads/2026/05/mov1_qpu-1024x587.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/mov1_qpu-350x201.avif 350w, https://natzir.com/wp-content/uploads/2026/05/mov1_qpu-768x440.avif 768w, https://natzir.com/wp-content/uploads/2026/05/mov1_qpu.avif 1125w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>La barra de la home en el chip sale más alta de lo que debería. Resulta que un qubit, si lo dejas quieto, pierde energía y cae a su estado de reposo, el que etiquetamos como |0⟩ (se lee "ket cero" y es un qubit a cero). Es como una peonza que, según se va frenando, tiende a pararse siempre en la misma posición. A eso se le llama relajación, y como estos circuitos son largos, a muchos qubits les da tiempo a dormirse hacia el 0 antes de que midamos. El resultado se sesga hacia la cadena de todo ceros, el |00⟩ ("ket cero cero" = dos qubits en cero).</p>
<p>¿Y por qué le toca justo a la home? Porque por cómo numeré las páginas, la home es la número 0, que en binario es justo |00⟩. La tendencia natural del chip a caer en |00⟩ se confunde entonces con que el navegante terminó en la home. Parte de esa barra alta es lícita, porque el cálculo ideal también pone la home primera, pero otra parte es este artefacto ya que el chip mezcla haberse relajado al |00⟩ con que haya ganado la home.</p>
<p>Para limpiarlo usé dos técnicas estándar. La primera, dynamical decoupling, mete pulsos rápidos en los ratos en que un qubit está esperando sin hacer nada, para que no se duerma (es como ir dando toquecitos a la peonza para que no se pare). La segunda, twirling, repite el experimento muchas veces cambiando al azar pequeños detalles de cómo se aplican las puertas, de modo que un error que siempre tira hacia el mismo lado se vuelve ruido aleatorio que se cancela al promediar. En vez de equivocarte igual siempre, te equivocas distinto cada vez y la media sale más limpia.</p>
<p>Con las dos, la diferencia entre lo que da el chip y el cálculo ideal se redujo a la mitad, y la barra de la home bajó hacia donde tenía que estar. Aun así, que quede claro... sigue siendo un experimento de juguete de 4 nodos.</p>
<h3>¿Y por qué no puedo correr el blog entero?</h3>
<p>Por el muro. Para ejecutar el <strong>walk de Szegedy</strong> en un chip cuántico hay que traducirlo a "puertas" que son las operaciones elementales del procesador. Las que fastidian son las de 2 qubits, porque cada una añade un poco de ruido. Y el número de puertas crece de forma brutal con el tamaño del grafo:</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/mov2_wall-1024x644.avif" alt="Mov2 wall" width="1024" height="644" class="alignnone size-large wp-image-3568" srcset="https://natzir.com/wp-content/uploads/2026/05/mov2_wall-1024x644.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/mov2_wall-350x220.avif 350w, https://natzir.com/wp-content/uploads/2026/05/mov2_wall-768x483.avif 768w, https://natzir.com/wp-content/uploads/2026/05/mov2_wall.avif 1050w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Con 4 páginas son unas 180 puertas de 2 qubits sobre el chip y aún se distingue algo. Pero con 8 páginas saltas a unas 3.700 puertas, y a esa profundidad la probabilidad de que el circuito sobreviva sin un error es de aproximadamente 0,99 elevado a 3.700, que es prácticamente cero. El resultado es pura basura uniforme. Podéis ver que el cálculo ideal de esas 8 páginas tiene una estructura clara, pero lo que escupe el chip es indistinguible de tirar un dado.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/mov2_noise-1024x546.avif" alt="quantum pr noise" width="1024" height="546" class="alignnone size-large wp-image-3564" srcset="https://natzir.com/wp-content/uploads/2026/05/mov2_noise-1024x546.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/mov2_noise-350x187.avif 350w, https://natzir.com/wp-content/uploads/2026/05/mov2_noise-768x410.avif 768w, https://natzir.com/wp-content/uploads/2026/05/mov2_noise.avif 1125w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>Para el blog completo, 123 páginas, harían falta del orden de 270 millones de puertas</strong>, o lo que es lo mismo, ciencia ficción. Y ojo porque aquí yo creía que es por un problema de qubits pero no. Para 123 páginas bastarían unos 14 qubits y los chips de hoy tienen cientos. El problema es la profundidad del circuito y el ruido que acumula el mismo. Así que ahora entiendo porqué los propios inventores de la fórmula nunca lo han acabado metiendo en hardware, ahora incluso que es posible, y se limitaron a simularlo en una CPU, donde todo esto es trivial.</p>
<p>Para curiosos, este es el circuito que ha habido que montar para 4 urls:</p>
<div style="overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid #e5e5e5; border-radius: 8px; background: #fff;"><img decoding="async" src="https://natzir.com/circuito-pr-ordenador-cuantico-ibm.svg" alt="Circuito del Quantum PageRank transpilado para ibm_marrakesh" loading="lazy" style="height: 260px!important; width: auto!important; max-width: none!important; display: block;" /></div>
<p style="font-size: .85em; color: #666; margin: .5em 0 0;">Desplázate en horizontal para recorrer el circuito completo.</p>
<h2>¿Cambia el ranking? Sí, pero no para mejor</h2>
<p>Así que he hecho lo mismo que realizaron los inventores, hacer una simulación de PR cuántico usando el blog entero. Así podremos ver si computo el PageRank cuántico de las 123 páginas me dice algo que el clásico no.</p>
<p>Por un lado, veo que los dos rankings se parecen bastante en conjunto. La correlación de Spearman entre ambos es de 0,85, lo cual es alto. Pero por otro lado, lo que veo que cambia es el "head" de mi blog, es decir las 10 primeras páginas del ranking clásico, solo 4 siguen en el top 10 cuántico, y la 1 cambia. Más de la mitad de las páginas se mueven 10 puestos o más.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/mov3_divergence.jpg" alt="quantum-pr divergence" width="990" height="900" class="alignnone size-full wp-image-3566" srcset="https://natzir.com/wp-content/uploads/2026/05/mov3_divergence.jpg 990w, https://natzir.com/wp-content/uploads/2026/05/mov3_divergence-350x318.jpg 350w, https://natzir.com/wp-content/uploads/2026/05/mov3_divergence-768x698.jpg 768w" sizes="auto, (max-width: 990px) 100vw, 990px" /></p>
<p>¿Y qué hago con eso como SEO? Nada. Es otra medida de centralidad, distinta y matemáticamente legítima. Pero no hay ninguna razón para pensar que su orden sea el "bueno", el que importa para posicionar. Es simplemente diferente, no mejor.</p>
<h2>¿Tendría sentido que Google hiciera esto?</h2>
<p><strong>No</strong>. Y vale la pena entender por qué y así entendemos para qué sirve de verdad un ordenador cuántico:</p>
<ol>
<li>Primero: El <strong>PageRank ya se calcula rapidísimo en ordenadores normales</strong>. Es lo que en informática llamamos un problema "fácil", de coste polinómico, donde no hay nada que acelerar.</li>
<li>Segundo: <strong>la versión cuántica tampoco es más rápida</strong>. Suena raro después de todo el rollo del espacio de N², pero resulta que toda la acción ocurre en un rincón pequeño de ese espacio (de tamaño proporcional a N, no a N²), así que un ordenador normal solo necesita seguir ese rincón. No da ventaja de velocidad, es tan solo un ranking distinto.</li>
<li>Y tercero: ejecutarlo en un chip cuántico a escala web es imposible por el muro que acabo de contar.</li>
</ol>
<p><strong>Un ordenador cuántico es una herramienta para problemas muy concretos</strong> donde se ha demostrado que gana como factorizar números enormes (lo que rompería parte de la criptografía actual), simular el comportamiento de moléculas y materiales, ciertos tipos de búsqueda y optimización.</p>
<p>PageRank no es uno de esos. Es barato computacionalmente y meterlo en una máquina cuántica es traer un instrumento carísimo y frágil a una tarea que un portátil ya hacía en un momento.</p>
<p>Llevo años leyendo mucho sobre cuántica, y la lección que he sacado es que la mayoría de los problemas que tenemos actualmente no son del tipo que un cuántico resuelve mejor. A continuación os cuento la razón.</p>
<h3>La historia de descuantizar</h3>
<p>En 2018, una estudiante de grado de 17 años, <strong>Ewin Tang</strong>, hacía su tesis con Scott Aaronson (<a href="https://x.com/natzir9/status/1943936155382124744">super fan de este señor</a>) en la Universidad de Texas en Austin. Le pusieron demostrar que cierto algoritmo cuántico de moda, uno de sistemas de recomendación (el de Kerenidis y Prakash, el tipo de motor que hay detrás de "productos que también te pueden gustar"), no se podía igualar con un ordenador normal. Se pasó meses intentando probar esa imposibilidad, hasta que empezó a sospechar justo lo contrario. Acabó construyendo un algoritmo clásico que igualaba al cuántico y que era exponencialmente más rápido que cualquier intento clásico anterior. Así que el supuesto superpoder cuántico no estaba donde se pensaba.</p>
<p>A esa maniobra ahora se la llama ahora <strong>descuantizar</strong>. Consiste en coger un algoritmo cuántico que presume de ir exponencialmente más rápido y encontrar uno clásico que hace lo mismo. Desde el trabajo de Tang han caído unos cuantos, entre ellos versiones cuánticas de recomendación, de análisis de componentes principales, de resolución de sistemas lineales o de máquinas de vectores soporte. Vamos, que <strong>la "ventaja cuántica" salía de compararse contra un método clásico mediocre, no contra el mejor que había</strong>. En cuanto alguien se molestaba en buscar el mejor clásico, la ventaja se evaporaba.</p>
<p>El Quantum PageRank es lo mismo, un invento caro.</p>
<h2>Para qué ha servido esto</h2>
<p>Como experimento está muy bien. Es investigación de verdad, <strong>ejecutada por primera vez en hardware cuántico</strong>, y sobre el grafo de mi web. He visto cómo se traduce un algoritmo a "puertas", el problema del muro del ruido y por qué los qubits no son el cuello de botella.</p>
<p>Como herramienta SEO no vale nada, aviso por si algún GEO bro le da por venderte un "Prompt Tracker Cuántico", aunque bueno... <a href="https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/">devolviendo visibility scores de Schrödinger, algo cuánticos sí que lo son.</a></p>
<p>Consejo: Si quieres trastear con un ordenador cúantico, <a href="https://quantum.cloud.ibm.com">IMB te da 10 minutos gratis de cómputo al mes</a>. Aprende a factorizar números enormes o simula una molécula. Para rankear páginas, sigue bastando el navegante que va dando tumbos de forma random.</p>
<h3>Lo único útil que saqué fue por accidente</h3>
<p>En la primera pasada, el cálculo cuántico me rescató del fondo del ranking a 2 páginas que el clásico tenía enterradas. Me emocioné un segundo pensando que había encontrado algo. Fui a mirar qué páginas eran y resultó que una era una redirección 301 y la otra un enlace interno roto, un 404, que se me habían colado como nodos del grafo. El "hallazgo cuántico" eran mis propios fallos de enlazado...</p>
<p>O sea que lo más accionable de todo el experimento fue que me obligó a limpiar dos enlaces rotos. Usar un ordenador cuántico para esto no tiene precio <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f605.png" alt="😅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Metodología y datos</h2>
<p>El grafo sale de un rastreo con Screaming Frog (el informe All Inlinks). Los nodos son las URLs internas y las aristas son los enlaces internos. Filtré a enlaces de tipo Hyperlink, con atributo follow y respuesta 200, sin duplicados, y de ahí salen 1.091 aristas. Para el análisis del post me quedo solo con los enlaces que viven en el contenido (503 aristas), no en el menú, la cabecera o el pie, porque el sitewide reparte autoridad de una forma que no dice nada sobre la importancia editorial de cada página. Damping de 0,85 y teletransporte uniforme, tal y como lo plantea Paparo.</p>
<h3>El código, por si quieres reproducirlo</h3>
<p>Dejo las dos piezas de código listas para copiar. La primera es el motor del Quantum PageRank y solo necesita NumPy. Ya trae de ejemplo el árbol de Paparo, así que al ejecutarla deberías ver sus números de la Tabla 1. La segunda ejecuta el walk en un <strong>ordenador cuántico de IBM con Qiskit</strong> (necesitas una cuenta gratuita y haber guardado tus credenciales con <code>QiskitRuntimeService.save_account(...)</code>).</p>
<details style="margin: 16px 0; border: 1px solid #d8dee4; border-radius: 8px; padding: 8px 14px;">
<summary style="cursor: pointer; font-weight: 600;">Quantum PageRank simulado (Python, solo NumPy)</summary>
<pre style="overflow: auto; max-height: 460px; background: #f6f8fa; padding: 16px; border-radius: 8px; font-size: 13px; line-height: 1.45;"><code>import numpy as np

def quantum_pagerank(G, steps=2000):
    """Quantum PageRank de Paparo (walk de Szegedy, 2012).
    G = matriz de Google column-stochastic (sus columnas suman 1).
    Devuelve (media, desviacion) de I_q por nodo."""
    N = G.shape[0]
    A = np.zeros((N*N, N)); sq = np.sqrt(G)        # columnas |psi_j&gt; = |j&gt; x sum_i sqrt(G_ij)|i&gt;
    for j in range(N):
        A[j*N:(j+1)*N, j] = sq[:, j]
    def U(x):                                       # paso del walk: U = S (2 A A^T - I)
        Rx = 2*(A @ (A.T @ x)) - x                  # reflexion
        return Rx.reshape(N, N).T.reshape(-1)       # swap
    psi = A @ (np.ones(N)/np.sqrt(N))               # estado inicial
    serie = np.empty((steps, N))
    for m in range(steps):
        serie[m] = (np.abs(psi.reshape(N, N))**2).sum(axis=0)   # marginal del 2do registro
        psi = U(U(psi))                             # avanza U^2 (se mide en pasos pares)
    return serie.mean(0), serie.std(0)

def google_matrix(edges, N, alpha=0.85):
    """G column-stochastic desde aristas (origen, destino). Dangling -&gt; teletransporte uniforme."""
    S = np.zeros((N, N))
    for src, dst in edges:
        S[dst, src] += 1                            # la columna es el nodo de origen
    out = S.sum(axis=0)
    for j in range(N):
        S[:, j] = S[:, j]/out[j] if out[j] else 1.0/N
    return alpha*S + (1-alpha)/N

# Ejemplo: el arbol binario de Paparo (7 nodos, aristas hijo-&gt;padre).
# Reproduce su Tabla 1 -&gt; cuantico por nivel ~ [0.356, 0.151, 0.085].
edges = [(1,0),(2,0),(3,1),(4,1),(5,2),(6,2)]
media, desv = quantum_pagerank(google_matrix(edges, N=7))
print(media.round(3))
</code></pre>
</details>
<details style="margin: 16px 0; border: 1px solid #d8dee4; border-radius: 8px; padding: 8px 14px;">
<summary style="cursor: pointer; font-weight: 600;">Ejecutarlo en un ordenador cuántico de IBM (Qiskit)</summary>
<pre style="overflow: auto; max-height: 460px; background: #f6f8fa; padding: 16px; border-radius: 8px; font-size: 13px; line-height: 1.45;"><code><span style="font-size: 13px;">import numpy as np
from qiskit import QuantumCircuit, ClassicalRegister, transpile
from qiskit.circuit.library import UnitaryGate
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2

def walk_operator(G):
    """U = S (2 A A^T - I) como matriz densa N^2 x N^2 (solo N pequeno: 4-8 nodos)."""
    N = G.shape[0]
    A = np.zeros((N*N, N)); sq = np.sqrt(G)
    for j in range(N): A[j*N:(j+1)*N, j] = sq[:, j]
    R = 2*(A @ A.T) - np.eye(N*N)
    idx = np.arange(N*N); a, b = idx//N, idx % N
    S = np.zeros((N*N, N*N)); S[b*N + a, idx] = 1.0
    return S @ R

def run_on_ibm(G, t=1, shots=8192, mitigate=True):
    """Ejecuta U^t en el QPU menos ocupado. Devuelve la distribucion del 2do registro y las puertas.
    Requisito: guardar antes la cuenta con
    QiskitRuntimeService.save_account(channel='ibm_quantum_platform', token=..., instance=...)."""
    N = G.shape[0]; k = int(round(np.log2(N)))          # qubits por registro
    Ut = np.linalg.matrix_power(walk_operator(G), t)
    qc = QuantumCircuit(2*k)
    qc.append(UnitaryGate(Ut), range(2*k))              # el walk entero como una sola puerta
    creg = ClassicalRegister(k, "meas")
    qc.add_register(creg); qc.measure(range(k), creg)   # medimos solo el 2do registro (qubits bajos)
    backend = QiskitRuntimeService().least_busy(operational=True, simulator=False)
    tqc = transpile(qc, backend=backend, optimization_level=3)
    sampler = SamplerV2(mode=backend)
    if mitigate:                                        # supresion de ruido
        sampler.options.dynamical_decoupling.enable = True
        sampler.options.dynamical_decoupling.sequence_type = "XY4"
        sampler.options.twirling.enable_gates = True
        sampler.options.twirling.enable_measure = True
    counts = sampler.run([tqc], shots=shots).result()[0].data.meas.get_counts()
    m = np.zeros(N)
    for bits, c in counts.items(): m[int(bits, 2)] += c
    return m/m.sum(), tqc.count_ops()

# G es la misma matriz de Google del bloque anterior (usa 4 u 8 nodos para que quepa).
# dist, puertas = run_on_ibm(G, t=1)</span><span style="color: #333333; font-family: Georgia, Times New Roman, Bitstream Charter, Times, serif;"><span style="white-space: normal;">
</span></span></code></pre>
</details>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/quantum-pagerank-ordenador-ibm/">Cómo calcular el Quantum PageRank en el ordenador cuántico de IBM</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/posicionamiento-buscadores/quantum-pagerank-ordenador-ibm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>La evolución del Query Augmentation: Del Query Expansion al Agentic Search</title>
		<link>https://natzir.com/posicionamiento-buscadores/la-evolucion-del-query-augmentation-del-query-expansion-al-agentic-search/</link>
					<comments>https://natzir.com/posicionamiento-buscadores/la-evolucion-del-query-augmentation-del-query-expansion-al-agentic-search/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Thu, 21 May 2026 13:09:43 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[inteligencia-artificial-seo]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3500</guid>

					<description><![CDATA[<p>Google ha anunciado en Search I/O lo que han definido como "a new era for AI Search". Vamos, que Google entra oficialmente en la era de los Search Agents que operan 24/7 en background, razonando entre fuentes y notificándote cuando algo cambia. Cuando leí el anuncio pensé en la charla que di en septiembre de [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/la-evolucion-del-query-augmentation-del-query-expansion-al-agentic-search/">La evolución del Query Augmentation: Del Query Expansion al Agentic Search</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Google ha <a href="https://blog.google/products-and-platforms/products/search/search-io-2026/">anunciado en Search I/O</a> lo que han definido como <em>"a new era for AI Search"</em>. Vamos, que Google entra oficialmente en la era de los <strong>Search Agents</strong> que operan 24/7 en background, razonando entre fuentes y notificándote cuando algo cambia.</p>
<p>Cuando leí el anuncio pensé en la charla que di en septiembre de 2025 en un evento de SISTRIX (la siguiente imagen es una slide de la misma). Allí ya hablaba de la <strong>búsqueda agentic</strong> como una nueva forma de expandir queries, un paradigma distinto al Query Fan-Out (aunque se nutra de él), y Google por fin se ha atrevido a sacarlo a producción.</p>
<p>Lo ha empaquetado como <strong>Search Agents</strong>, en vez del <strong>Agentic Search</strong> con el que la industria lleva tiempo refiriéndose a esto, pero la dirección técnica era evidente para cualquiera que llevara siguiendo la tecnología de los últimos años.</p>
<p>El Query Fan-Out no era nuevo en 2023, los SEOs llevamos lidiando con esto desde los 2000 y el Agentic Search no es una sorpresa en 2026... vamos, es la culminación de <strong>25 años de evolución del Query Augmentation</strong>.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/query-augmentation-1024x555.avif" alt="Query augmentation" width="1024" height="555" class="alignnone size-large wp-image-3501" srcset="https://natzir.com/wp-content/uploads/2026/05/query-augmentation-1024x555.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/query-augmentation-350x190.avif 350w, https://natzir.com/wp-content/uploads/2026/05/query-augmentation-768x416.avif 768w, https://natzir.com/wp-content/uploads/2026/05/query-augmentation-1536x833.avif 1536w, https://natzir.com/wp-content/uploads/2026/05/query-augmentation-2048x1110.avif 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Este post es la continuación natural de <a href="https://natzir.com/posicionamiento-buscadores/busqueda-hibrida/">mi artículo sobre búsqueda híbrida</a>. Si aún no lo has leído, te recomiendo empezar por ahí.</p>
<h2>1. ¿Qué es el Query Augmentation y por qué existe?</h2>
<p>Un <a href="https://natzir.com/posicionamiento-buscadores/como-funciona-google-algoritmos/">buscador es un sistema con varias capas que trabajan en equipo</a>: una parte busca por palabras exactas, otra interpreta significados, y luego hay varios módulos que deciden qué merece estar arriba. Todo eso lo expliqué en el <a href="https://natzir.com/posicionamiento-buscadores/busqueda-hibrida/">post de búsqueda híbrida</a>.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/Query-rewriting-vector-search-1024x444.avif" alt="Query rewriting vector search" width="1024" height="444" class="alignnone size-large wp-image-3505" srcset="https://natzir.com/wp-content/uploads/2026/05/Query-rewriting-vector-search-1024x444.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/Query-rewriting-vector-search-350x152.avif 350w, https://natzir.com/wp-content/uploads/2026/05/Query-rewriting-vector-search-768x333.avif 768w, https://natzir.com/wp-content/uploads/2026/05/Query-rewriting-vector-search-1536x665.avif 1536w, https://natzir.com/wp-content/uploads/2026/05/Query-rewriting-vector-search-2048x887.avif 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Pero antes de que el motor pueda buscar algo, tiene que <strong>entender lo que le has pedido</strong>. Y aquí está parte de la magia: tu query, tal y como la escribes, <strong>casi nunca se usa literalmente</strong>. Se reescribe, se expande, se traduce, se generaliza, se especifica. A eso es a lo que se llama <strong>Query Augmentation</strong>.</p>
<p>La razón es porque <strong>el usuario es ambiguo, perezoso e imperfecto</strong>. Escribe mal, usa sinónimos, omite contexto, mezcla idiomas. Y el motor necesita transformar esa caja de Pandora en algo que sus índices puedan responder con precisión.</p>
<blockquote><p>El Query Augmentation es la capa que convierte lo que tú escribes en lo que el motor busca.</p></blockquote>
<p>Esa capa ha pasado por varias generaciones, cada una corrigiendo las limitaciones de la anterior. Vamos a verlas.</p>
<h2>2. La evolución, año a año</h2>
<h3>2000 - Query Expansion: el corrector ortográfico</h3>
<p>Al principio era todo muy literal. Si escribías mal, no encontraba nada. Así que lo primero que metió Google fue corrección ortográfica, <strong>stemming/lematización</strong>, sinónimos básicos con WordNet y co-ocurrencias. El famoso <em>"¿Querías decir…?"</em>.</p>
<p>Hay un ejemplo precioso que Google compartió hace más de una década: una tabla con todas las formas en que la gente escribía mal "Britney Spears". <strong>Más de 600 variaciones</strong>. <em>Brittany spears, britny, briteny, britney, brytney, brritney…</em> Es divertido verlo ahora, pero ese era el estado del arte, tablas literales con misspellings <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/britney-misspellings-1024x523.avif" alt="Britney misspellings" width="1024" height="523" class="alignnone size-large wp-image-3503" srcset="https://natzir.com/wp-content/uploads/2026/05/britney-misspellings-1024x523.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/britney-misspellings-350x179.avif 350w, https://natzir.com/wp-content/uploads/2026/05/britney-misspellings-768x392.avif 768w, https://natzir.com/wp-content/uploads/2026/05/britney-misspellings.avif 1500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Y aquí <a href="https://natzir.com/posicionamiento-buscadores/trucos-para-hacer-un-keyword-research-con-sistrix/">va una curiosidad que sigo usando años después</a>: <strong>el footprint del doble tilde (<code>~~</code>) para desactivar el sistema de sinónimos de Google</strong>. ¡Y todavía funciona! En los 2000, añadir un caret (<code>^</code>) activaba el matching de sinónimos. Después Google lo hizo behavior por defecto. Pero si quieres desactivarlo, todavía puedes escribir <code>~~viajes</code> y verás cómo cambia la SERP. Pruébalo.</p>
<ul>
<li><strong>Impacto</strong>: encontrabas resultados aunque escribieras mal o usaras otra palabra.</li>
<li><strong>Limitación</strong>: no entendía nada de la intención. Solo igualaba tokens.</li>
</ul>
<h3>2013 - Hummingbird: el primer salto semántico</h3>
<p>Hummingbird es cuando Google empieza a jugar en serio con la <strong>semántica</strong>. Aquí entra el <strong>Knowledge Graph</strong> y empieza a usarse contexto conversacional. Ya no solo busca palabras, <strong>entiende entidades e intenciones</strong>.</p>
<p>Si preguntabas <em>"¿quién ganó ayer?"</em>, no te devolvía páginas con esas palabras, te devolvía directamente el resultado del partido del equipo que solías seguir, basado en tu contexto anterior.</p>
<ul>
<li><strong>Impacto</strong>: te entendía aunque no usaras las palabras exactas.</li>
<li><strong>Limitación</strong>: seguía dependiendo de que el concepto estuviera en el Knowledge Graph.</li>
</ul>
<h3>2015 - RankBrain: la entrada del deep learning</h3>
<p>RankBrain fue la entrada real de lo neuronal en el ranking. Usando <strong>embeddings</strong> consigue mapear consultas raras a equivalentes más frecuentes. Si alguien busca <em>"médico del corazón"</em>, RankBrain entiende que lo que quiere es un <strong>cardiólogo</strong>.</p>
<p>Es el momento en que Google empieza a <strong>cubrir la long-tail de verdad</strong>. Y, técnicamente, es cuando Google se convierte en un sistema híbrido donde junta lo mejor de ambos mundos: la búsqueda léxica (BM25) con una capa densa de significado semántico por encima.</p>
<ul>
<li><strong>Impacto</strong>: cobertura real de queries nunca vistas.</li>
<li><strong>Limitación</strong>: traduce queries raras a frecuentes, pero no entiende contexto fino.</li>
</ul>
<h3>2018 - Neural Matching: los super-sinónimos</h3>
<p>Neural Matching, lo que Google llamó "<strong>super-sinónimos</strong>". Aquí el buscador ya puede <strong>conectar conceptos sin compartir ni una palabra</strong>.</p>
<p>Ejemplo: <em>"cómo aliviar el estómago revuelto"</em> lo alinea con documentos que hablan de <strong>"náuseas"</strong>, aunque esa palabra no aparezca en tu query. Esto va más allá de la expansión léxica, es <strong>alineamiento de intención a nivel neuronal</strong>.</p>
<ul>
<li><strong>Impacto</strong>: encuentra contenido relevante sin solapamiento de vocabulario.</li>
<li><strong>Limitación</strong>: no es contextual palabra a palabra. Sigue tratando la query como un blob de intención.</li>
</ul>
<h3>2019 - BERT: contexto palabra a palabra</h3>
<p>Con BERT el salto es aún más potente porque el buscador ya entiende el <strong>contexto palabra a palabra</strong>. Entiende preposiciones, negaciones, el orden de las frases.</p>
<p>Antes Google confundía <em>"viajes a Nueva York desde Madrid"</em> con <em>"viajes desde Nueva York a Madrid"</em>. Con BERT deja de equivocarse en esas cosas. La desambiguación sintáctico-semántica se hace dentro del propio modelo.</p>
<ul>
<li><strong>Impacto</strong>: matices, negaciones, preposiciones. Menos malentendidos.</li>
<li><strong>Limitación</strong>: monolingüe en su mayor parte y solo texto.</li>
</ul>
<h3>2021 - MUM: multitarea, multilingüe, multimodal</h3>
<p>MUM es un BERT con esteroides: multitarea, multilingüe y multimodal.</p>
<p>Puede usar lo que sabe en un idioma para responder en otro, y combinar texto con imágenes o vídeos. Si preguntas <em>"consejos para subir el Fuji"</em>, puede sacar información de <strong>guías en japonés o de fotos</strong>, aunque tú lo hayas preguntado en español.</p>
<p>Google luego matizó que MUM solo lo usa para featured snippets, Google Lens, topics relacionados de YouTube y poco más. Pero conceptualmente abrió la puerta que <strong>el conocimiento ya no esté atado al idioma de la query ni a un documento de texto</strong>.</p>
<ul>
<li><strong>Impacto</strong>: cobertura más allá de idioma y formato.</li>
<li><strong>Limitación</strong>: muy costoso, uso restringido a casos específicos.</li>
</ul>
<h3>2023 - Query Fan-Out: query augmentation en esteroides</h3>
<p>Y en 2023 empieza el <strong>Query Fan-Out</strong>. Aquí el buscador ya no se conforma con tu query tal cual, sino que <strong>genera múltiples sub-queries en paralelo</strong>: equivalentes, especificaciones, generalizaciones, traducciones, clarificaciones.</p>
<p>Es como si lanzara un <strong>abanico de preguntas</strong> para asegurarse de cubrir todos los ángulos, y luego selecciona las mejores. Lo explicaré con más detalle en la siguiente sección porque la base de lo que Google acaba de anunciar.</p>
<h3>2024 - Agentic Search: el siguiente nivel</h3>
<p>Aquí el sistema <strong>genera queries, mira resultados, evalúa si le valen, reescribe, vuelve a buscar</strong>. Es un bucle iterativo, casi como si tuviera un pequeño investigador dentro que sabe cuándo profundizar más o cuándo cambiar de enfoque. Esto le permite resolver preguntas mucho más complejas, <strong>paso a paso</strong>.</p>
<p>Cuando di mi charla en septiembre de 2025, ya estaba claro que esto venía. Lo que no sabía era que Google le iba a poner de nombre oficial "<strong>Search Agents"</strong>.</p>
<h2>3. Query Fan-Out: el retrieval de los chatbots LLM</h2>
<p>En la patente es <a href="https://patents.google.com/patent/US20230281193A1/en"><strong>US20230281193A1</strong></a> de Google: <em>"Generating query variants using a trained generative model" </em>se describe cómo un sistema con un Variant Engine, un Controller Engine y un Generative Model toma tu query y produce un árbol de variantes.</p>
<p>Las variantes son <strong>al menos ocho</strong>:</p>
<div style="overflow-x: auto; -webkit-overflow-scrolling: touch; width: 100%;">
<table style="width: 100%; min-width: 600px; border-collapse: collapse; font-family: inherit;">
<thead>
<tr>
<th style="text-align: left; padding: 10px 12px; border-bottom: 2px solid #333; vertical-align: top;">Tipo de variante</th>
<th style="text-align: left; padding: 10px 12px; border-bottom: 2px solid #333; vertical-align: top;">Qué hace</th>
<th style="text-align: left; padding: 10px 12px; border-bottom: 2px solid #333; vertical-align: top;">Ejemplo sobre <em>"qué es el cortisol"</em></th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><strong>Equivalencia</strong></td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;">Misma intención, otra forma</td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><em>"what is cortisol"</em>, <em>"definición de cortisol"</em></td>
</tr>
<tr>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><strong>Generalización</strong></td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;">Sube de categoría</td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><em>"qué son las hormonas del estrés"</em>, <em>"cómo funciona el sistema endocrino"</em></td>
</tr>
<tr>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><strong>Especificación</strong></td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;">Baja a facetas concretas</td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><em>"cortisol en análisis de sangre"</em>, <em>"efectos del cortisol en el sueño"</em></td>
</tr>
<tr>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><strong>Follow-up</strong></td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;">Expansión exploratoria</td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><em>"cómo bajar el cortisol"</em>, <em>"relación cortisol y estrés"</em></td>
</tr>
<tr>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><strong>Canonicalización</strong></td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;">Normalización de ruido</td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><em>"que es el cortisol"</em> (sin tildes, normalizada)</td>
</tr>
<tr>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><strong>Traducción</strong></td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;">Corpus multi-idioma</td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><em>"what is cortisol"</em>, <em>"cortisol hormone definition"</em></td>
</tr>
<tr>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><strong>Implicación</strong></td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;">Reformulación con hechos</td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><em>"cortisol es una hormona"</em>, <em>"cortisol e inflamación"</em></td>
</tr>
<tr>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><strong>Clarificación</strong></td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;">Desambiguación</td>
<td style="padding: 10px 12px; border-bottom: 1px solid #ddd; vertical-align: top;"><em>"cortisol vs cortisona"</em>, <em>"cortisol en biología o psicología"</em></td>
</tr>
</tbody>
</table>
</div>
<p>Cada una de esas variantes se lanza en paralelo. Cada una tiene su propio retrieval (léxico + vectorial, fusionado con RRF, como expliqué <a href="https://natzir.com/posicionamiento-buscadores/busqueda-hibrida/">aquí</a>). Cada una devuelve sus candidatos. Y luego un <strong>controlador dinámico</strong> (probablemente entrenado con Reinforcement Learning) decide qué variantes han aportado señal útil, cuáles descartar, y si necesita lanzar más.</p>
<p>Es importante entender que el fan-out <strong>no es determinista</strong>. Si haces la misma query dos veces, no obtienes exactamente las mismas variantes. Eso es lo que <strong>rompe</strong> la mayoría de las herramientas de "AI visibility tracking" que se venden por ahí, como ya conté en <a href="https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/">mi artículo sobre prompt trackers</a>.</p>
<p>Y oye, esto es algo que no puedes replicar. La razón es que Google tiene piezas a las que nosotros no tenemos acceso:</p>
<ul>
<li><strong>Señales internas</strong>: scores, clics y answer quality de cada variante. Sin ese feedback el loop se rompe.</li>
<li><strong>Controlador con RL</strong>: una política que decide cuántas variantes lanzar y cuándo parar, entrenada con recompensas invisibles para nosotros.</li>
<li><strong>Multitarea</strong>: ocho tipos de variantes y un modelo que sabe cuándo aplicar cada una. Podemos copiar el patrón, no la decisión.</li>
<li><strong>Histórico masivo</strong>: millones de queries y clics reales etiquetando implícitamente qué funciona. Ese dataset no existe fuera de Google.</li>
<li><strong>Selección dinámica de modelo</strong>: cambia de modelo según intención, dispositivo o cohorte y nosotros no usaríamos el suyo.</li>
<li><strong>Recompensas basadas en answer quality</strong>: el sistema para cuando la respuesta es suficientemente buena, no por número de variantes. No tenemos esa métrica.</li>
<li><strong>Personalización</strong>: historial, ubicación, contexto reciente y, ahora, Gmail/Photos/Calendar vía Personal Intelligence.</li>
</ul>
<p>Vamos, imposible de replicar desde fuera, por mucho Dunning-Kruger que lo intente:</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/query-fan-out-simulator-tool.gif" alt="Query fan out simulator tool" width="800" height="383" class="alignnone size-full wp-image-3522" /></p>
<p>Es como querer montar un F1 con piezas de Lego... puedes imitar la forma, pero nunca la velocidad. <strong>Pero tampoco importa</strong>. Y aquí está el matiz que se les escapa a los GEO Bros porque la respuesta SEO al fan-out no es simularlo o incorporarlo de facto, es darle crear páginas robustas que cubran léxica y semánticamente tanto la query original como sus expansiones. El proceso que los SEOs llevamos haciendo históricamente. <a href="https://natzir.com/posicionamiento-buscadores/trocear-contenido-ia-seo/">Lo expliqué en detalle en el artículo sobre por qué trocear tu contenido es malo para tu SEO y para la IA.</a></p>
<h3>La genealogía del Fan-Out</h3>
<p>El Query Fan-Out no aparece de la nada en 2023. Como comenté en la charla,  es la <strong>culminación de años de investigación</strong> en cómo generar consultas sintéticas:</p>
<ul>
<li><strong>doc2query / Document Expansion (2019-2020)</strong>: generar queries sintéticas desde documentos para entrenar al sistema a recuperarlos.</li>
<li><strong>Adolphs et al. (2022, ETH/Google)</strong>: Latent Space Decoding. Decodificar directamente desde el espacio de embeddings. El puente entre doc2query y fan-out.</li>
<li><strong>HyDE (2022-2023)</strong>: Hypothetical Document Embeddings. Generar documentos hipotéticos desde una query y usar sus embeddings para buscar.</li>
<li><strong>WO2024064249A1 (2024)</strong>: formaliza el Synthetic Query Training, generar queries desde docs para entrenar retrievers offline.</li>
</ul>
<p>Así que el Fan-Out no surge de la nada, es la culminación de años de investigación en cómo generar consultas sintéticas. Lo nuevo es que ahora no se queda en el training y <strong>lo hace en vivo, cada vez que preguntamos</strong>.</p>
<h2>4. Search Agents: lo que Google acaba de anunciar</h2>
<p>Vamos a lo que ha pasado esta semana. Liz Reid lo dijo así en el <a href="https://blog.google/products-and-platforms/products/search/search-io-2026/">post de Search I/O 2026</a>:</p>
<blockquote><p><em>"We're entering the era of Search agents, where you can easily create, customize and manage multiple AI agents for your many tasks, right in Search."</em></p></blockquote>
<ul>
<li><strong>Information agents que operan 24/7 en background.</strong> Le dejas un brief tipo "avísame cuando salga un piso en Majadahonda con 4 habitaciones por menos de X", y un agente escanea continuamente todo... blogs, news sites, social posts y los datos frescos de finance, shopping y deportes de Google para detectar cambios. Cuando encuentra algo, te manda una notificación con una síntesis y la posibilidad de <strong>tomar acción</strong>.</li>
<li>Esto es el bucle iterativo de la búsqueda agentic, pero ahora <strong>persistente en el tiempo</strong>. La query se convierte en una <strong>suscripción a un problema. </strong></li>
<li><strong>Agentic booking en categorías nuevas.</strong> Locales, servicios, experiencias. <em>"Encuéntrame una sala de karaoke privada para seis personas un viernes por la noche que sirva comida tarde". </em>Google trae precios y disponibilidad y te lanza directo a reservar. Y en categorías como reparaciones del hogar, beauty o pet care, Google puede <strong>llamar al negocio en tu nombre</strong>. <a href="https://www.linkedin.com/posts/natzir_ya-tengo-acceso-a-la-nueva-funci%C3%B3n-de-activity-7339266848472850433-mU9u/">Esto último ya lo probé el año pasado cuando tuve acceso al a beta</a>.</li>
<li><strong>Generative UI en la respuesta.</strong> Google trae a Search por fin la capacidad de <strong>Antigravity</strong> y de agentic coding de Gemini 3.5 Flash. <a href="https://www.linkedin.com/posts/natzir_llms-trackers-gonna-hate-google-quiere-activity-7401866547389972480-J_nk/">Digo por fin porque lo anunciaron en noviembre</a>. Ahora la respuesta puede ser una <strong>UI generada al vuelo</strong>, con visualizaciones, simulaciones, tablas, gráficos. Prompt Tracker gonna hate. Y para tareas continuas como planificar una boda, gestionar una mudanza, Search te construye un <strong>dashboard persistente</strong>, como una especie de mini-app que vives volviendo a usar.</li>
<li><strong>Personal Intelligence en 200 países y 98 idiomas.</strong> Conectas Gmail, Photos y pronto Calendar, y AI Mode los usa como contexto y sin suscripción. Las IAs conectadas a tools van a personalizar la respuesta tanto que ningún prompt tracker tendrá sentido.</li>
</ul>
<h2>5. Qué significa esto para tu SEO</h2>
<p>Bien, ya sabemos cómo ha evolucionado el Query Augmentation desde "did you mean…" hasta agentes 24/7. Ahora te preguntarás: <strong>¿y yo qué hago con esto? LO DE SIEMPRE. </strong></p>
<h3>1. Posicionarte en Google</h3>
<p>Este es un estudio que llevo haciendo desde noviembre del 24' y se cumple siempre. <strong>La correlación entre el número de citaciones y estar posicionado en el top-3 de Google es altísima</strong>. No solo hay correlación de Spearman, si no también de Pearson, o lo que es lo mismo, que hay correlación lineal y de magnitud.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-1024x580.avif" alt="Correlacion citas ai overviews google top 3 ranking" width="1024" height="580" class="alignnone size-large wp-image-3512" srcset="https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-1024x580.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-350x198.avif 350w, https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-768x435.avif 768w, https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-1536x869.avif 1536w, https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking.avif 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-2-1024x580.avif" alt="Correlacion citas ai overviews google top 3 ranking 2" width="1024" height="580" class="alignnone size-large wp-image-3510" srcset="https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-2-1024x580.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-2-350x198.avif 350w, https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-2-768x435.avif 768w, https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-2-1536x869.avif 1536w, https://natzir.com/wp-content/uploads/2026/05/correlacion-citas-ai-overviews-google-top-3-ranking-2.avif 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h3>2. Ser accesible</h3>
<p><strong>Estar en Google y ser fuente de grounding no basta si el bot no entra</strong>. Puedes estar en el top 1, formar parte del grounding interno del modelo, ser citado como fuente, y aun así desaparecer en la respuesta visible. Si el bot no puede entrar a evaluar tu contenido, todo lo anterior se cae.</p>
<p>He observado que una de la causas más frecuentes de <strong>ghost citation</strong> es por motivos técnicos. A veces no es un problema de marca o de tu contenido. Es un problema de que la IA no puede leerte cuando va a buscarte.</p>
<p>Dos formas habituales de romper este último eslabón es bloqueos del WAF y cuando tu contenido se renderiza con JavaScript y el bot solo ve el shell.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/accesibilidad-1024x201.avif" alt="Accesibilidad" width="1024" height="201" class="alignnone size-large wp-image-3514" srcset="https://natzir.com/wp-content/uploads/2026/05/accesibilidad-1024x201.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/accesibilidad-350x69.avif 350w, https://natzir.com/wp-content/uploads/2026/05/accesibilidad-768x151.avif 768w, https://natzir.com/wp-content/uploads/2026/05/accesibilidad-1536x302.avif 1536w, https://natzir.com/wp-content/uploads/2026/05/accesibilidad.avif 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h3>3. Trabajar la entidad</h3>
<p>Los LLMs no potencian a las marcas por casualidad. Se entrenan con el corpus del conocimiento humano.<br />
<span></span></p>
<p><span>La razón es que los modelos de IA trabajan en lo que llaman monosemanticidad. Hay “neuronas” que se activan cuando el modelo detecta un concepto muy concreto, por ejemplo, “dirección de correo electrónico” o “nombres de ciudades.” La idea la explica </span><a href="https://transformer-circuits.pub/2024/scaling-monosemanticity/index.html">un estudio reciente de Anthropic</a><span> y se asemeja de nuevo al viejo concepto </span><a href="https://natzir.com/posicionamiento-buscadores/seo-semantico/">SEO semántico</a><span> de </span><a href="https://natzir.com/posicionamiento-buscadores/entidades-seo/">“entidades” y “desambiguación”</a><span>.</span></p>
<p>A su vez, los modelos almacenan “hechos” en sus capas internas. Típico ejemplo: Michael Jordan → Basketball. Esa asociación se graba en la red,  específicamente en los multi-layer perceptrons (MLPs).</p>
<p>El SEO lleva toda la vida trabajando entidades... ¡y menciones! ¿Cómo se construye una entidad? Lo resumo aquí:</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/construir-entidad-1024x580.avif" alt="Construir entidad" width="1024" height="580" class="alignnone size-large wp-image-3508" srcset="https://natzir.com/wp-content/uploads/2026/05/construir-entidad-1024x580.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/construir-entidad-350x198.avif 350w, https://natzir.com/wp-content/uploads/2026/05/construir-entidad-768x435.avif 768w, https://natzir.com/wp-content/uploads/2026/05/construir-entidad-1536x869.avif 1536w, https://natzir.com/wp-content/uploads/2026/05/construir-entidad.avif 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<ul>
<li><strong>Mediante owned content</strong>: tu contenido tiene que ser claro, valioso, con autoría y datos que cubran el árbol de variantes posibles. Y creo que la autoridad temática se vuelve más importante y más decisiva por funcionamiento del RRF.</li>
<li><strong>Mediante earned content</strong>: que terceros te citen en contextos de recomendación. Esto es lo que mueve el prior del modelo.</li>
<li><strong>Mediante una capa técnica</strong>: Explicar claramente lo que haces, ser coherente con las señales y ayudar a nutrir el KG de Google.</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/contruir-entidad-google-marca-1024x580.avif" alt="Contruir entidad google marca" width="1024" height="580" class="alignnone size-large wp-image-3516" srcset="https://natzir.com/wp-content/uploads/2026/05/contruir-entidad-google-marca-1024x580.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/contruir-entidad-google-marca-350x198.avif 350w, https://natzir.com/wp-content/uploads/2026/05/contruir-entidad-google-marca-768x435.avif 768w, https://natzir.com/wp-content/uploads/2026/05/contruir-entidad-google-marca-1536x869.avif 1536w, https://natzir.com/wp-content/uploads/2026/05/contruir-entidad-google-marca.avif 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Siempre digo que <a href="https://natzir.com/conversion/como-vender-internet-modelos-conducta-consumidor/">las marcas son atajos mentales que nos reducen el tiempo y la molestia de buscar</a>. Los LLM han heredado ese sesgo.</p>
<h3> 4. Los Search Agents SOLO cambian el modelo de visita</h3>
<p>Si un agente está monitorizando 24/7 para un usuario entonces ya no estás compitiendo por <strong>que el usuario haga clic ahora</strong>. Estás compitiendo por <strong>que el agente te elija como fuente de monitorización fiable y constante</strong>. Entiendo que esto premiará la <strong>frescura, fiabilidad y machine-readability</strong> de tu contenido a lo largo del tiempo, es lo que decidirá si cambiará de fuente o use la misma. Como decía antes, ahora las personas se "suscribirán" a una query.</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/la-evolucion-del-query-augmentation-del-query-expansion-al-agentic-search/">La evolución del Query Augmentation: Del Query Expansion al Agentic Search</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/posicionamiento-buscadores/la-evolucion-del-query-augmentation-del-query-expansion-al-agentic-search/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI Performance: Cómo exportar el mapping completo de queries y páginas citadas de Bing Webmaster Tools (bookmarklet)</title>
		<link>https://natzir.com/posicionamiento-buscadores/ai-performance-bing-webmaster-tools-export/</link>
					<comments>https://natzir.com/posicionamiento-buscadores/ai-performance-bing-webmaster-tools-export/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Mon, 18 May 2026 19:39:17 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[inteligencia-artificial-seo]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3451</guid>

					<description><![CDATA[<p>Bing añadió en marzo el Grounding Query↔Page Mapping dentro del AI Performance report de su Webmaster Tools, con la idea de poder ver qué queries activan citaciones a qué URLs concretas en las respuestas de Copilot, partners y APIs que sirven a productos de terceros). Para entenderlo bien estos son los 2 conceptos que tienes [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/ai-performance-bing-webmaster-tools-export/">AI Performance: Cómo exportar el mapping completo de queries y páginas citadas de Bing Webmaster Tools (bookmarklet)</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Bing añadió en marzo el <a href="https://about.ads.microsoft.com/en/blog/post/march-2026/the-ai-performance-dashboard-your-view-into-where-your-brand-appears-across-the-ai-web"><strong>Grounding Query<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" />Page Mapping</strong> dentro del AI Performance report de su Webmaster Tools,</a> con la idea de poder ver qué queries activan citaciones a qué URLs concretas en las respuestas de Copilot, partners y APIs que sirven a productos de terceros). Para entenderlo bien estos son los 2 conceptos que tienes que conocer:</p>
<ul>
<li><strong>Citations</strong>: cuántas veces tu contenido es referenciado por AI systems.</li>
<li><strong>Grounding queries</strong>: Son las queries que el AI utilizó internamente para hacer retrieval, no necesariamente lo que el usuario escribió. El AI reescribe, expande y normaliza la consulta antes de buscar.</li>
</ul>
<p>El problema es que si quieres sacar las grounding queries de cada página, o al revés, tienes que ir de una en una y en los exports esta info no está mapeada. Y para sitios con cientos de queries y miles de páginas, eso es inservible.</p>
<p>En su día me construí un workaround haciendo el matching por similitud semántica, pero no es lo mismo.</p>
<p>He construido un <strong>bookmarklet</strong> que extrae todo el mapping y lo descarga como 3 CSVs listos para Excel o Sheets. Se ejecuta en tu navegador con tu sesión, sin enviar datos a ningún servidor externo. Si la cuenta se topa con el rate-limit de Bing, espera y reintenta sola, así que no te preocupes, hay que tener paciencia. Puedes dejar la pestaña abierta y sigue haciendo tus cosas en otra.</p>
<h2 id="instalaci-n">Instalación del bookmarklet</h2>
<p>Arrastra este botón a tu <strong>barra de favoritos</strong>:</p>
<p style="text-align: center; margin: 2em 0;"><a href="javascript:%28async%28%29%3D%3E%7Bconst%20e%3D%22__bingAipExport%22%3Bdocument.getElementById%28e%29%3F.remove%28%29%2Cdocument.getElementById%28e%2B%22Style%22%29%3F.remove%28%29%3Bconst%20t%3D%22%23172224%22%2Cn%3D%22rgba%28255%2C255%2C255%2C0.06%29%22%2Ca%3D%22rgba%28255%2C255%2C255%2C0.11%29%22%2Cr%3D%22%23ffffff%22%2Ci%3D%22rgba%28255%2C255%2C255%2C0.62%29%22%2Co%3D%27-apple-system%2CBlinkMacSystemFont%2C%22Inter%22%2C%22Segoe%20UI%22%2CRoboto%2Csans-serif%27%2Cs%3Ddocument.createElement%28%22style%22%29%3Bs.id%3De%2B%22Style%22%2Cs.textContent%3D%60%5Cn%20%20%20%20%40keyframes%20__bingAipIn%20%7B%20from%7Bopacity%3A0%3Btransform%3AtranslateY%28-4px%29%7D%20to%7Bopacity%3A1%3Btransform%3AtranslateY%280%29%7D%20%7D%5Cn%20%20%20%20%40keyframes%20__bingAipSpin%20%7B%20to%20%7B%20transform%3A%20rotate%28360deg%29%20%7D%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20%7B%20-webkit-font-smoothing%3Aantialiased%3Btext-wrap%3Apretty%3Bfont-variant-numeric%3Atabular-nums%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipSpin%20%7B%20width%3A12px%3Bheight%3A12px%3Bborder%3A2px%20solid%20rgba%28255%2C255%2C255%2C0.22%29%3Bborder-top-color%3A%23fff%3Bborder-radius%3A50%25%3Banimation%3A__bingAipSpin%20.7s%20linear%20infinite%3Bdisplay%3Ainline-block%3Bvertical-align%3A-2px%3Bmargin-right%3A8px%3Bflex%3A0%200%2012px%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipStatus%20%7B%20display%3Aflex%3Balign-items%3Acenter%3Bcolor%3A%24%7Bi%7D%3Bfont-size%3A13px%3Bmargin-bottom%3A14px%3Btext-wrap%3Apretty%3Bmin-height%3A18px%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipStatus.bAipDone%20.bAipSpin%2C%20%23%24%7Be%7D%20.bAipStatus.bAipError%20.bAipSpin%20%7B%20display%3Anone%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipStatus.bAipDone%20%7B%20color%3A%24%7Br%7D%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipStatus.bAipError%20%7B%20color%3A%23ff6b54%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipItem%20%7B%20animation%3A%20__bingAipIn%20.26s%20cubic-bezier%28.2%2C0%2C0%2C1%29%20both%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipBtn%20%7B%20transition%3A%20background-color%20.15s%20ease%2C%20transform%20.12s%20ease%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipBtn%3Ahover%20%7B%20background%3A%20%24%7Ba%7D%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipBtn%3Aactive%20%7B%20transform%3A%20scale%280.96%29%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipPrimary%20%7B%20transition%3A%20transform%20.12s%20ease%2C%20box-shadow%20.15s%20ease%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipPrimary%3Ahover%20%7B%20box-shadow%3A%200%204px%2014px%20rgba%280%2C0%2C0%2C.18%29%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipPrimary%3Aactive%20%7B%20transform%3A%20scale%280.96%29%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipClose%20%7B%20transition%3A%20background-color%20.15s%20ease%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipClose%3Ahover%20%7B%20background%3A%20%24%7Ba%7D%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipDesc%20%7B%20color%3A%20%24%7Bi%7D%3B%20transition%3A%20color%20.15s%20ease%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipBtn%3Ahover%20.bAipDesc%20%7B%20color%3A%20%24%7Br%7D%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipLogo%20%7B%20outline%3A%201px%20solid%20rgba%28255%2C255%2C255%2C0.1%29%3B%20outline-offset%3A%200%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipSubLink%3Ahover%20%7B%20text-decoration%3A%20underline%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipIcon%20%7B%20color%3A%20%24%7Bi%7D%3B%20transition%3A%20color%20.15s%20ease%3B%20%7D%5Cn%20%20%20%20%23%24%7Be%7D%20.bAipBtn%3Ahover%20.bAipIcon%20%7B%20color%3A%20%24%7Br%7D%3B%20%7D%5Cn%20%20%60%2Cdocument.head.appendChild%28s%29%3Bconst%20c%3Ddocument.createElement%28%22div%22%29%3Bc.id%3De%2Cc.style.cssText%3D%60position%3Afixed%3Btop%3A20px%3Bright%3A20px%3Bz-index%3A2147483647%3Bbackground%3A%24%7Bt%7D%3Bcolor%3A%24%7Br%7D%3Bfont%3A13px%2F1.5%20%24%7Bo%7D%3Bpadding%3A16px%3Bborder-radius%3A16px%3Bbox-shadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C.3%29%2C0%2018px%2044px%20-10px%20rgba%280%2C0%2C0%2C.45%29%3Bwidth%3A340px%3Bmax-width%3Acalc%28100vw%20-%2040px%29%3Banimation%3A%20__bingAipIn%20.32s%20cubic-bezier%28.2%2C0%2C0%2C1%29%20both%3B%60%3Bconst%20l%3Ddocument.createElement%28%22div%22%29%3Bl.style.cssText%3D%22display%3Aflex%3Balign-items%3Acenter%3Bgap%3A10px%3Bmargin-bottom%3A14px%22%3Bconst%20p%3Ddocument.createElement%28%22img%22%29%3Bp.className%3D%22bAipLogo%22%2Cp.src%3D%22https%3A%2F%2Fnatzir.com%2Fwp-content%2Fuploads%2F2011%2F08%2Flogo-natzir.png%22%2Cp.alt%3D%22natzir%22%2Cp.style.cssText%3D%22height%3A18px%3Bwidth%3Aauto%3Bdisplay%3Ablock%3Bborder-radius%3A2px%22%2Cp.onerror%3D%28%29%3D%3Ep.remove%28%29%3Bconst%20d%3Ddocument.createElement%28%22div%22%29%3Bd.style.cssText%3D%22flex%3A1%3Bmin-width%3A0%22%3Bconst%20m%3Ddocument.createElement%28%22div%22%29%3Bm.style.cssText%3D%22font-weight%3A600%3Bfont-size%3A14px%3Bline-height%3A1.2%3Btext-wrap%3Abalance%22%2Cm.textContent%3D%22AI%20Performance%20Exporter%22%3Bconst%20u%3Ddocument.createElement%28%22div%22%29%3Bu.style.cssText%3D%60color%3A%24%7Bi%7D%3Bfont-size%3A11px%3Bline-height%3A1.3%3Bmargin-top%3A2px%3Bletter-spacing%3A.02em%60%2Cu.appendChild%28document.createTextNode%28%22by%20%22%29%29%3Bconst%20g%3Ddocument.createElement%28%22a%22%29%3Bg.href%3D%22https%3A%2F%2Fnatzir.com%2F%22%2Cg.target%3D%22_blank%22%2Cg.rel%3D%22noopener%22%2Cg.textContent%3D%22natzir.com%22%2Cg.className%3D%22bAipSubLink%22%2Cg.style.cssText%3D%22color%3Ainherit%3Btext-decoration%3Anone%22%2Cu.appendChild%28g%29%2Cd.appendChild%28m%29%2Cd.appendChild%28u%29%3Bconst%20h%3Ddocument.createElement%28%22button%22%29%3Bh.className%3D%22bAipClose%22%2Ch.setAttribute%28%22aria-label%22%2C%22Close%22%29%2Ch.textContent%3D%22%5Cu00d7%22%2Ch.style.cssText%3D%60position%3Arelative%3Bbackground%3Atransparent%3Bborder%3A0%3Bcolor%3A%24%7Br%7D%3Bfont-size%3A18px%3Bline-height%3A1%3Bcursor%3Apointer%3Bwidth%3A28px%3Bheight%3A28px%3Bborder-radius%3A8px%3Bdisplay%3Ainline-flex%3Balign-items%3Acenter%3Bjustify-content%3Acenter%3Bflex%3A0%200%2028px%3Bmargin%3A-4px%20-4px%20-4px%200%60%3Bconst%20b%3Ddocument.createElement%28%22span%22%29%3Bb.style.cssText%3D%22position%3Aabsolute%3Binset%3A-6px%3Bcontent%3A%27%27%22%2Ch.appendChild%28b%29%2Ch.addEventListener%28%22click%22%2C%28%29%3D%3Ec.remove%28%29%29%2Cl.appendChild%28p%29%2Cl.appendChild%28d%29%2Cl.appendChild%28h%29%3Bconst%20x%3Ddocument.createElement%28%22div%22%29%3Bx.className%3D%22bAipStatus%22%3Bconst%20f%3Ddocument.createElement%28%22span%22%29%3Bf.className%3D%22bAipSpin%22%2Cf.setAttribute%28%22aria-hidden%22%2C%22true%22%29%3Bconst%20y%3Ddocument.createElement%28%22span%22%29%3By.textContent%3D%22Starting%5Cu2026%22%2Cx.appendChild%28f%29%2Cx.appendChild%28y%29%3Bconst%20A%3Ddocument.createElement%28%22div%22%29%3BA.style.cssText%3D%22display%3Aflex%3Bflex-direction%3Acolumn%3Bgap%3A6px%22%2Cc.appendChild%28l%29%2Cc.appendChild%28x%29%2Cc.appendChild%28A%29%2Cdocument.body.appendChild%28c%29%3Bconst%20w%3D%28e%2Ct%29%3D%3E%7By.textContent%3De%2Cx.classList.remove%28%22bAipDone%22%2C%22bAipError%22%29%2C%22done%22%3D%3D%3Dt%3Fx.classList.add%28%22bAipDone%22%29%3A%22error%22%3D%3D%3Dt%26%26x.classList.add%28%22bAipError%22%29%7D%3Btry%7Bconst%20e%3Dnew%20URL%28location.href%29.searchParams.get%28%22siteUrl%22%29%3Bif%28%21e%7C%7C%21%2F%5C%2Fwebmasters%5C%2Faiperformance%2F.test%28location.pathname%29%29%7Bconst%20e%3Dnew%20URL%28location.href%29.searchParams.get%28%22siteUrl%22%29%2Ct%3D%22https%3A%2F%2Fwww.bing.com%2Fwebmasters%2Faiperformance%22%2B%28e%3F%22%3FsiteUrl%3D%22%2BencodeURIComponent%28e%29%3A%22%22%29%3Bx.classList.add%28%22bAipError%22%29%2Cy.textContent%3D%22%22%2Cy.appendChild%28document.createTextNode%28%22Open%20this%20on%20the%20%22%29%29%3Bconst%20n%3Ddocument.createElement%28%22a%22%29%3Breturn%20n.href%3Dt%2Cn.textContent%3D%22AI%20Performance%20page%22%2Cn.style.cssText%3D%22color%3Ainherit%3Btext-decoration%3Aunderline%3Bfont-weight%3A600%22%2Cy.appendChild%28n%29%2Cvoid%20y.appendChild%28document.createTextNode%28%22.%22%29%29%7Dconst%20a%3D%5B...document.querySelectorAll%28%27%5Brole%3D%22tab%22%5D%27%29%5D.find%28e%3D%3E%22true%22%3D%3D%3De.getAttribute%28%22aria-selected%22%29%26%26%2F%5E%287%20D%7C30%20D%7C3%20M%7CCustom%29%24%2F.test%28e.textContent.trim%28%29%29%29%2Cs%3Da%26%26%7B%227%20D%22%3A7%2C%2230%20D%22%3A30%2C%223%20M%22%3A90%7D%5Ba.textContent.trim%28%29%5D%7C%7C90%2Cc%3Dnew%20Date%3Bc.setUTCHours%280%2C0%2C0%2C0%29%3Bconst%20l%3Dnew%20Date%28c%29%3Bl.setUTCDate%28l.getUTCDate%28%29-s%29%3Bconst%20p%3De%3D%3Ee.toUTCString%28%29.replace%28%2F%5Cd%5Cd%3A%5Cd%5Cd%3A%5Cd%5Cd%2F%2C%2200%3A00%3A00%22%29%2Cd%3D%7BBeginTimeStamp%3Ap%28l%29%2CEndTimeStamp%3Ap%28c%29%7D%3Bw%28%60Site%20detected%3A%20%24%7Bnew%20URL%28e%29.hostname%7D%20%28last%20%24%7Bs%7D%20days%29%60%29%3Bconst%20m%3D%28await%20fetch%28%22%2Fwebmasters%2Fauth%2Ftoken%22%2C%7Bcredentials%3A%22include%22%7D%29.then%28e%3D%3Ee.text%28%29%29%29.trim%28%29%3Blet%20u%3D0%2Cg%3D%211%2Ch%3D%211%3Bconst%20b%3D%2Ftoo%20many%20requests%7CWe%27re%20sorry%2Fi%2Cf%3Dasync%28e%2Ct%29%3D%3E%7Bconst%20n%3Dnew%20AbortController%2Ca%3DsetTimeout%28%28%29%3D%3En.abort%28%29%2C45e3%29%3Blet%20r%3Btry%7Br%3Dawait%20fetch%28%22%2Fwebmasters%2Fapi%2Faiperformance%2F%22%2Be%2C%7Bmethod%3A%22POST%22%2Ccredentials%3A%22include%22%2Cheaders%3A%7B%22content-type%22%3A%22application%2Fjson%3Bcharset%3DUTF-8%22%2C%22x-csrf-token%22%3Am%2Caccept%3A%22application%2Fjson%22%7D%2Cbody%3AJSON.stringify%28t%29%2Csignal%3An.signal%7D%29%7Dcatch%28e%29%7Breturn%20clearTimeout%28a%29%2C%7BrateLimited%3A%210%2CretryAfter%3A3e5%7D%7DclearTimeout%28a%29%3Blet%20i%3D%22%22%3Btry%7Bi%3Dawait%20r.text%28%29%7Dcatch%28e%29%7B%7Dif%28b.test%28i%29%29%7Bconst%20e%3D1e3%2AparseInt%28r.headers.get%28%22retry-after%22%29%7C%7C%220%22%2C10%29%3Breturn%7BrateLimited%3A%210%2CretryAfter%3AMath.max%28e%2C3e5%29%7D%7Dif%28r.ok%29try%7Breturn%7Bdata%3AJSON.parse%28i%29%7D%7Dcatch%28e%29%7Breturn%7BrateLimited%3A%210%2CretryAfter%3A3e5%7D%7Dif%28404%3D%3D%3Dr.status%26%26i.includes%28%22NoDataFound%22%29%29return%7Bdata%3Anull%7D%3Bif%28429%3D%3D%3Dr.status%29%7Bconst%20e%3D1e3%2AparseInt%28r.headers.get%28%22retry-after%22%29%7C%7C%220%22%2C10%29%3Breturn%7BrateLimited%3A%210%2CretryAfter%3AMath.max%28e%2C3e5%29%7D%7Dif%28r.status%3E%3D500%29return%7BrateLimited%3A%210%2CretryAfter%3A6e4%7D%3Bthrow%20new%20Error%28%60%24%7Be%7D%20returned%20%24%7Br.status%7D%60%29%7D%2C%24%3Dt%3D%3E%28%7BSiteUrl%3Ae%2CDateRange%3Ad%2CPagination%3A%7BPageNum%3A1%2CPageSize%3A200%7D%2CSortParameters%3A%7BSortField%3A%22Citations%22%2CSortOrder%3A%22Desc%22%7D%2CAIFilterKeyword%3A%22%22%2CQuery%3A%22%22%2CPage%3A%22%22%2C...t%7D%29%2CC%3Dasync%28e%2Ct%2Cn%29%3D%3E%7Bconst%20a%3D%5B%5D%3Blet%20r%3D1%3Bfor%28%3B%3B%29%7Bconst%20i%3Dawait%20f%28e%2C%7B...%24%28n%29%2CPagination%3A%7BPageNum%3Ar%2CPageSize%3A200%7D%7D%29%3Bif%28i.rateLimited%29throw%20u%3DMath.max%28u%2CDate.now%28%29%2Bi.retryAfter%29%2Cg%3D%210%2Cnew%20Error%28%22RATE_LIMITED%22%29%3Bif%28%21i.data%29break%3Bconst%20o%3Di.data%5Bt%5D%7C%7C%5B%5D%3Bif%28a.push%28...o%29%2Ca.length%3E%3D%28i.data.TotalNumOfRecords%7C%7C0%29%7C%7Co.length%3C200%29break%3Br%2B%2B%7Dreturn%20a%7D%2CS%3Dasync%28e%2Ct%2Cn%3D2%2Ca%3D250%29%3D%3E%7Bconst%20r%3Dnew%20Array%28e.length%29%3Blet%20i%3D0%3Breturn%20await%20Promise.all%28Array.from%28%7Blength%3An%7D%2Casync%28%29%3D%3E%7Bfor%28%3Bi%3Ce.length%3B%29%7Bconst%20n%3Di%2B%2B%3Br%5Bn%5D%3Dawait%20t%28e%5Bn%5D%2Cn%29%2Ca%3E0%26%26i%3Ce.length%26%26await%20new%20Promise%28e%3D%3EsetTimeout%28e%2Ca%29%29%7D%7D%29%29%2Cr%7D%2CE%3D%22__bingAipExport_%22%2Be%2B%22_%22%2Bd.BeginTimeStamp.slice%280%2C16%29%3Blet%20v%3D%7B%7D%3Btry%7Bconst%20e%3DlocalStorage.getItem%28E%29%3Bif%28e%29%7Bconst%20t%3DJSON.parse%28e%29%3Bt%26%26Date.now%28%29-%28t.t%7C%7C0%29%3C864e5%26%26%28v%3Dt.m%7C%7C%7B%7D%29%7D%7Dcatch%28e%29%7B%7Dconst%20T%3D%28%29%3D%3E%7Btry%7BlocalStorage.setItem%28E%2CJSON.stringify%28%7Bt%3ADate.now%28%29%2Cm%3Av%7D%29%29%7Dcatch%28e%29%7B%7D%7D%3Blet%20k%3D0%2CL%3D0%2CP%3D0%2CI%3D0%2C_%3D%211%3Bconst%20q%3De%3D%3E%7Bconst%20t%3DMath.max%280%2CMath.ceil%28e%2F1e3%29%29%3Breturn%20t%3C60%3F%60%24%7Bt%7Ds%60%3A%60%24%7BMath.floor%28t%2F60%29%7Dm%20%24%7Bt%2560%7Ds%60%7D%2CN%3Dasync%28%29%3D%3E%21%28await%20f%28%22pages%2Fstats%22%2C%7B...%24%28%7BQuery%3A%22%22%7D%29%2CPagination%3A%7BPageNum%3A1%2CPageSize%3A1%7D%7D%29%29.rateLimited%2CD%3Dasync%28%29%3D%3E%7Blet%20e%3D0%3Bfor%28%3B%21h%3B%29%7Bfor%28%3Bu%3EDate.now%28%29%26%26%21h%3B%29%7Bconst%20e%3Du-Date.now%28%29%2Ct%3DP%3E0%3F%60%20%5Cu00b7%20%24%7Bk%7D%2F%24%7BP%7D%20done%24%7BL%3E0%3F%60%20%5Cu00b7%20%24%7BL%7D%20failed%60%3A%22%22%7D%60%3A%22%22%2Cn%3Dg%3F%60Bing%20throttled.%20Auto-resuming%20in%20%24%7Bq%28e%29%7D.%24%7Bt%7D%20Keep%20this%20tab%20open.%60%3A%60Cooling%20down%3A%20%24%7Bq%28e%29%7D%24%7Bt%7D%60%3Bw%28n%29%2Cawait%20new%20Promise%28t%3D%3EsetTimeout%28t%2CMath.min%281e3%2Ce%29%29%29%7Dif%28h%29return%211%3Bif%28%21g%29return%210%3Bif%28e%2B%2B%2Cw%28%60Probing%20Bing%20API%20%28attempt%20%24%7Be%7D%29%5Cu2026%60%29%2Cawait%20N%28%29%29return%20I%3D0%2Cg%3D%211%2Cw%28P%3E0%3F%60API%20back.%20Resuming%20from%20%24%7Bk.toLocaleString%28%29%7D%2F%24%7BP.toLocaleString%28%29%7D%60%3A%22API%20back.%20Resuming%5Cu2026%22%29%2C%210%3Bif%28I%2B%2B%2Cu%3DDate.now%28%29%2B3e5%2Ce%3E%3D12%29return%20_%3D%210%2CT%28%29%2C%211%7Dreturn%211%7D%2CB%3Dasync%28e%2Ct%2Cn%29%3D%3E%7Bfor%28%3B%21h%26%26%21_%3B%29try%7Breturn%20await%20C%28e%2Ct%2Cn%29%7Dcatch%28e%29%7Bif%28%22RATE_LIMITED%22%3D%3D%3De.message%29%7Bif%28%21await%20D%28%29%29return%5B%5D%3Bcontinue%7Dthrow%20e%7Dreturn%5B%5D%7D%3Bw%28%22Fetching%20queries%20and%20pages%5Cu2026%22%29%3Bconst%20U%3Dawait%20B%28%22searchqueries%2Fstats%22%2C%22Queries%22%29%2CM%3Dawait%20B%28%22pages%2Fstats%22%2C%22Pages%22%29%3BP%3DU.length%3Bconst%20R%3DP%3E500%3F1%3A2%2Cz%3DP%3E500%3F500%3AP%3E100%3F300%3A200%2CO%3Dnew%20Array%28U.length%29%2CQ%3D%5B%5D%3BU.forEach%28%28e%2Ct%29%3D%3E%7Bv%5Be.GroundingQuery%5D%3FO%5Bt%5D%3D%7Bquery%3Ae.GroundingQuery%2Ccitations%3Ae.Citations%2Cpages%3Av%5Be.GroundingQuery%5D.pages%7C%7C%5B%5D%7D%3AQ.push%28%7Bq%3Ae%2Cidx%3At%7D%29%7D%29%3Bconst%20j%3DU.length-Q.length%3Bj%3E0%26%26Q.length%3E0%3Fw%28%60Resumed%20%24%7Bj.toLocaleString%28%29%7D%20from%20cache.%20Fetching%20%24%7BQ.length.toLocaleString%28%29%7D%20remaining%20queries%5Cu2026%60%29%3A0%3D%3D%3DQ.length%3Fw%28%60All%20%24%7BP.toLocaleString%28%29%7D%20queries%20already%20cached.%20Building%20CSVs%5Cu2026%60%29%3Aw%28%60%24%7BP%7D%20queries%20%5Cu00b7%20%24%7BM.length%7D%20pages.%20Building%20mapping%5Cu2026%60%29%2Ck%3Dj%3Bconst%20G%3Ddocument.createElement%28%22button%22%29%3BG.className%3D%22bAipBtn%22%2CG.style.cssText%3D%60background%3A%24%7Bn%7D%3Bcolor%3A%24%7Br%7D%3Bborder%3A0%3Bborder-radius%3A10px%3Bpadding%3A9px%2012px%3Bfont%3A500%2012px%2F1.3%20%24%7Bo%7D%3Bcursor%3Apointer%3Bdisplay%3Aflex%3Balign-items%3Acenter%3Bgap%3A8px%60%3Bconst%20F%3Ddocument.createElement%28%22span%22%29%3BF.textContent%3D%22Stop%20and%20download%20what%20I%20have%22%2CF.style.cssText%3D%22flex%3A1%3Btext-align%3Aleft%22%2CG.appendChild%28F%29%3Bconst%20J%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%2CW%3Ddocument.createElementNS%28J%2C%22svg%22%29%3BW.setAttribute%28%22width%22%2C%2214%22%29%2CW.setAttribute%28%22height%22%2C%2214%22%29%2CW.setAttribute%28%22viewBox%22%2C%220%200%2024%2024%22%29%2CW.setAttribute%28%22fill%22%2C%22none%22%29%2CW.setAttribute%28%22stroke%22%2C%22currentColor%22%29%2CW.setAttribute%28%22stroke-width%22%2C%222%22%29%2CW.setAttribute%28%22stroke-linecap%22%2C%22round%22%29%2CW.setAttribute%28%22stroke-linejoin%22%2C%22round%22%29%2CW.setAttribute%28%22aria-hidden%22%2C%22true%22%29%2CW.style.flex%3D%220%200%20auto%22%3Bconst%20Y%3Ddocument.createElementNS%28J%2C%22circle%22%29%3BY.setAttribute%28%22cx%22%2C%2212%22%29%2CY.setAttribute%28%22cy%22%2C%2212%22%29%2CY.setAttribute%28%22r%22%2C%2210%22%29%3Bconst%20H%3Ddocument.createElementNS%28J%2C%22rect%22%29%3BH.setAttribute%28%22width%22%2C%226%22%29%2CH.setAttribute%28%22height%22%2C%226%22%29%2CH.setAttribute%28%22x%22%2C%229%22%29%2CH.setAttribute%28%22y%22%2C%229%22%29%2CW.appendChild%28Y%29%2CW.appendChild%28H%29%2CG.appendChild%28W%29%2CG.addEventListener%28%22click%22%2C%28%29%3D%3E%7Bh%3D%210%7D%29%2CQ.length%3E0%26%26A.appendChild%28G%29%3Bconst%20K%3D150%2CV%3D45e3%3Bawait%20S%28Q%2Casync%28%7Bq%3Ae%2Cidx%3At%7D%29%3D%3E%7Blet%20n%3D0%3Bfor%28%3B%21%28h%7C%7C_%7C%7C%28await%20D%28%29%2Ch%7C%7C_%29%29%3B%29try%7Bconst%20n%3Dawait%20C%28%22pages%2Fstats%22%2C%22Pages%22%2C%7BQuery%3Ae.GroundingQuery%7D%29%3Bv%5Be.GroundingQuery%5D%3D%7Bpages%3AArray.isArray%28n%29%3Fn%3A%5B%5D%7D%2Ck%2B%2B%2Ck%2520%3D%3D0%26%26T%28%29%3Bconst%20a%3Dk-j%3Ba%3E0%26%26a%25K%3D%3D%3D0%26%26k%3CP%26%26%28u%3DMath.max%28u%2CDate.now%28%29%2BV%29%2Cg%3D%211%29%3Breturn%20w%28%60Mapping%20query%20%5Cu2192%20pages%3A%20%24%7Bk%7D%2F%24%7BP%7D%24%7BL%3E0%3F%60%20%28%24%7BL%7D%20failed%29%60%3A%22%22%7D%60%29%2Cvoid%28O%5Bt%5D%3D%7Bquery%3Ae.GroundingQuery%2Ccitations%3Ae.Citations%2Cpages%3Av%5Be.GroundingQuery%5D.pages%7D%29%7Dcatch%28e%29%7Bif%28%22RATE_LIMITED%22%21%3D%3De.message%29%7BL%2B%2B%2CT%28%29%3Bbreak%7Dif%28n%2B%2B%2Cn%3E%3D3%29%7BL%2B%2B%2CT%28%29%3Bbreak%7D%7DO%5Bt%5D%7C%7C%28O%5Bt%5D%3D%7Bquery%3Ae.GroundingQuery%2Ccitations%3Ae.Citations%2Cpages%3A%5B%5D%7D%29%7D%2CR%2Cz%29%2CG.remove%28%29%3Bconst%20X%3Dh%7C%7C_%3Bif%28X%29T%28%29%3Belse%20try%7BlocalStorage.removeItem%28E%29%7Dcatch%28e%29%7B%7Dconst%20Z%3Dnew%20Map%3Bfor%28const%20e%20of%20O%29for%28const%20t%20of%20e.pages%29%7Bconst%20e%3DZ.get%28t.PageUrl%29%7C%7C%7Bmapped%3A0%2Cqueries%3A0%7D%3Be.mapped%2B%3Dt.Citations%2Ce.queries%2B%3D1%2CZ.set%28t.PageUrl%2Ce%29%7Dw%28%22Building%20CSVs%5Cu2026%22%29%3Bconst%20ee%3De%3D%3E%7Bif%28null%3D%3De%29return%22%22%3Bconst%20t%3DString%28e%29%3Breturn%2F%5B%22%2C%5Cn%5D%2F.test%28t%29%3F%27%22%27%2Bt.replace%28%2F%22%2Fg%2C%27%22%22%27%29%2B%27%22%27%3At%7D%2Cte%3De%3D%3Ee.map%28e%3D%3Ee.map%28ee%29.join%28%22%2C%22%29%29.join%28%22%5Cn%22%29%2Cne%3Dnew%20URL%28e%29.hostname.replace%28%2F%5C.%2Fg%2C%22-%22%29%2Cae%3D%60bing-aip_%24%7Bne%7D_%24%7B%28new%20Date%29.toISOString%28%29.slice%280%2C10%29%7D%60%2Cre%3D%5B%7Bname%3A%60%24%7Bae%7D_mapping.csv%60%2Clabel%3A%22mapping.csv%22%2Cdesc%3A%22The%20full%20query%20%5Cu2194%20page%20mapping.%20Each%20row%3A%20one%20query%2C%20one%20URL%20it%20cited%2C%20and%20citation%20count.%20Pivot%20either%20way%20in%20Excel.%22%2Ccontent%3Ate%28%5B%5B%22query%22%2C%22page%22%2C%22citations%22%5D%2C...O.flatMap%28e%3D%3Ee.pages.length%3Fe.pages.map%28t%3D%3E%5Be.query%2Ct.PageUrl%2Ct.Citations%5D%29%3A%5B%5Be.query%2C%22%22%2C%22%22%5D%5D%29%5D%29%7D%2C%7Bname%3A%60%24%7Bae%7D_queries-summary.csv%60%2Clabel%3A%22queries-summary.csv%22%2Cdesc%3A%22One%20row%20per%20query%3A%20total%20citations%20and%20how%20many%20pages%20Bing%20maps%20it%20to.%22%2Ccontent%3Ate%28%5B%5B%22query%22%2C%22total_citations%22%2C%22mapped_citations%22%2C%22num_pages_mapped%22%5D%2C...O.map%28e%3D%3E%5Be.query%2Ce.citations%2Ce.pages.reduce%28%28e%2Ct%29%3D%3Ee%2Bt.Citations%2C0%29%2Ce.pages.length%5D%29%5D%29%7D%2C%7Bname%3A%60%24%7Bae%7D_pages-summary.csv%60%2Clabel%3A%22pages-summary.csv%22%2Cdesc%3A%22One%20row%20per%20page%3A%20total%20citations%20vs%20mapped%20citations.%20The%20unmapped%20column%20exposes%20Bing%27s%20sample-bias.%22%2Ccontent%3Ate%28%5B%5B%22page%22%2C%22total_citations%22%2C%22mapped_citations%22%2C%22unmapped_citations%22%2C%22num_queries_mapped%22%5D%2C...M.map%28e%3D%3E%7Bconst%20t%3DZ.get%28e.PageUrl%29%7C%7C%7Bmapped%3A0%2Cqueries%3A0%7D%3Breturn%5Be.PageUrl%2Ce.Citations%2Ct.mapped%2Ce.Citations-t.mapped%2Ct.queries%5D%7D%29%5D%29%7D%5D.map%28e%3D%3E%28%7B...e%2Curl%3AURL.createObjectURL%28new%20Blob%28%5B%22%5Cufeff%22%2Be.content%5D%2C%7Btype%3A%22text%2Fcsv%3Bcharset%3Dutf-8%22%7D%29%29%7D%29%29%3Bif%28X%29if%28x.classList.add%28%22bAipError%22%29%2Cy.textContent%3D%22%22%2Ch%26%26%21_%29%7By.appendChild%28document.createTextNode%28%60Stopped%20at%20%24%7Bk.toLocaleString%28%29%7D%2F%24%7BP.toLocaleString%28%29%7D%20queries.%20%60%29%29%3Bconst%20e%3Ddocument.createElement%28%22strong%22%29%3Be.textContent%3D%22Click%20the%20bookmark%20again%20to%20resume.%22%2Cy.appendChild%28e%29%2Cy.appendChild%28document.createTextNode%28%22%20Partial%20data%20below%3A%22%29%29%7Delse%7By.appendChild%28document.createTextNode%28%60Bing%20throttled%20the%20account%20at%20%24%7Bk.toLocaleString%28%29%7D%2F%24%7BP.toLocaleString%28%29%7D%20queries.%20Your%20progress%20is%20saved.%60%29%29%3Bconst%20e%3Ddocument.createElement%28%22div%22%29%3Be.style.cssText%3D%60background%3A%24%7Bn%7D%3Bborder-radius%3A10px%3Bpadding%3A12px%3Bfont-size%3A12px%3Bline-height%3A1.55%3Bcolor%3A%24%7Bi%7D%3Bmargin-top%3A4px%60%3Bconst%20t%3Ddocument.createElement%28%22div%22%29%3Bt.style.cssText%3D%60color%3A%24%7Br%7D%3Bfont-weight%3A500%3Bmargin-bottom%3A6px%60%2Ct.textContent%3D%22What%20to%20do%20%28don%5Cu2019t%20worry%2C%20%27s%20normal%29%3A%22%2Ce.appendChild%28t%29%3Bconst%20a%3Ddocument.createElement%28%22ol%22%29%3Ba.style.cssText%3D%22margin%3A0%3Bpadding-left%3A18px%22%2C%5B%22Refresh%20this%20page%20every%20~10%20min.%20Bing%20may%20show%20a%20JSON%20error%20message%3A%20keep%20refreshing%2C%20that%27s%20the%20rate%20limit%20lifting.%22%2C%22When%20the%20AI%20Performance%20report%20loads%20normally%20again%2C%20click%20the%20bookmark.%22%2C%60It%20will%20resume%20automatically%20from%20query%20%24%7B%28k%2B1%29.toLocaleString%28%29%7D.%20No%20data%20is%20lost.%60%5D.forEach%28e%3D%3E%7Bconst%20t%3Ddocument.createElement%28%22li%22%29%3Bt.style.cssText%3D%22margin%3A3px%200%22%2Ct.textContent%3De%2Ca.appendChild%28t%29%7D%29%2Ce.appendChild%28a%29%2CA.appendChild%28e%29%7Delse%7Bconst%20e%3DL%3E0%3F%60%20%5Cu00b7%20%24%7BL%7D%20queries%20failed%60%3A%22%22%3Bw%28%60%24%7BP.toLocaleString%28%29%7D%20queries%20%5Cu00b7%20%24%7BM.length.toLocaleString%28%29%7D%20pages%20mapped%24%7Be%7D.%20Click%20below%20to%20download.%60%2C%22done%22%29%7Dconst%20ie%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%2Coe%3D%28e%2Ct%29%3D%3E%7Bconst%20n%3Ddocument.createElementNS%28ie%2C%22svg%22%29%3Bn.setAttribute%28%22width%22%2Ce%29%2Cn.setAttribute%28%22height%22%2Ce%29%2Cn.setAttribute%28%22viewBox%22%2C%220%200%2024%2024%22%29%2Cn.setAttribute%28%22fill%22%2C%22none%22%29%2Cn.setAttribute%28%22stroke%22%2Ct%29%2Cn.setAttribute%28%22stroke-width%22%2C%222%22%29%2Cn.setAttribute%28%22stroke-linecap%22%2C%22round%22%29%2Cn.setAttribute%28%22stroke-linejoin%22%2C%22round%22%29%2Cn.setAttribute%28%22aria-hidden%22%2C%22true%22%29%2Cn.style.flex%3D%220%200%20auto%22%3Bconst%20a%3Ddocument.createElementNS%28ie%2C%22path%22%29%3Ba.setAttribute%28%22d%22%2C%22M21%2015v4a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2v-4%22%29%3Bconst%20r%3Ddocument.createElementNS%28ie%2C%22polyline%22%29%3Br.setAttribute%28%22points%22%2C%227%2010%2012%2015%2017%2010%22%29%3Bconst%20i%3Ddocument.createElementNS%28ie%2C%22line%22%29%3Breturn%20i.setAttribute%28%22x1%22%2C%2212%22%29%2Ci.setAttribute%28%22y1%22%2C%2215%22%29%2Ci.setAttribute%28%22x2%22%2C%2212%22%29%2Ci.setAttribute%28%22y2%22%2C%223%22%29%2Cn.appendChild%28a%29%2Cn.appendChild%28r%29%2Cn.appendChild%28i%29%2Cn%7D%2Cse%3Ddocument.createElement%28%22button%22%29%3Bse.className%3D%22bAipPrimary%20bAipItem%22%2Cse.style.cssText%3D%60background%3A%23fff%3Bcolor%3A%24%7Bt%7D%3Bborder%3A0%3Bborder-radius%3A10px%3Bpadding%3A11px%2014px%3Bfont%3A600%2013px%2F1.2%20%24%7Bo%7D%3Bcursor%3Apointer%3Banimation-delay%3A60ms%3Bdisplay%3Aflex%3Balign-items%3Acenter%3Bjustify-content%3Acenter%3Bgap%3A8px%3Bbox-shadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C.12%29%60%3Bconst%20ce%3Ddocument.createElement%28%22span%22%29%3Bce.textContent%3D%60Download%20all%20%28%24%7Bre.length%7D%20files%29%60%2Cse.appendChild%28ce%29%2Cse.appendChild%28oe%2815%2Ct%29%29%2Cse.addEventListener%28%22click%22%2C%28%29%3D%3E%7Bre.forEach%28e%3D%3E%7Bconst%20t%3Ddocument.createElement%28%22a%22%29%3Bt.href%3De.url%2Ct.download%3De.name%2Ct.click%28%29%7D%29%7D%29%2CA.appendChild%28se%29%2Cre.forEach%28%28e%2Ct%29%3D%3E%7Bconst%20a%3Ddocument.createElement%28%22a%22%29%3Ba.className%3D%22bAipBtn%20bAipItem%22%2Ca.href%3De.url%2Ca.download%3De.name%2Ca.title%3De.desc%2Ca.setAttribute%28%22aria-label%22%2C%60%24%7Be.label%7D%3A%20%24%7Be.desc%7D%60%29%2Ca.style.cssText%3D%60background%3A%24%7Bn%7D%3Bcolor%3A%24%7Br%7D%3Bborder%3A0%3Bborder-radius%3A10px%3Bpadding%3A10px%2012px%3Bcursor%3Apointer%3Btext-decoration%3Anone%3Bdisplay%3Aflex%3Balign-items%3Acenter%3Bgap%3A12px%3Banimation-delay%3A%24%7B120%2B60%2At%7Dms%60%3Bconst%20i%3Ddocument.createElement%28%22div%22%29%3Bi.style.cssText%3D%22flex%3A1%3Bmin-width%3A0%22%3Bconst%20o%3Ddocument.createElement%28%22div%22%29%3Bo.style.cssText%3D%22font%3A500%2013px%2F1.3%20inherit%22%2Co.textContent%3De.label%3Bconst%20s%3Ddocument.createElement%28%22div%22%29%3Bs.className%3D%22bAipDesc%22%2Cs.style.cssText%3D%22font%3A400%2012px%2F1.4%20inherit%3Bmargin-top%3A2px%3Btext-wrap%3Apretty%22%2Cs.textContent%3De.desc%2Ci.appendChild%28o%29%2Ci.appendChild%28s%29%2Ca.appendChild%28i%29%3Bconst%20c%3Doe%2816%2C%22currentColor%22%29%3Bc.setAttribute%28%22class%22%2C%22bAipIcon%22%29%2Ca.appendChild%28c%29%2CA.appendChild%28a%29%7D%29%7Dcatch%28e%29%7Bw%28%22Error%3A%20%22%2Be.message%2C%22error%22%29%7D%7D%29%28%29%3B" style="display: inline-block; background: #172224; color: #fff; font-weight: 600; text-decoration: none; padding: 14px 22px; border-radius: 10px; font-size: 16px; box-shadow: 0 4px 14px rgba(23,34,36,.2); cursor: grab;">Bing AI Performance Exporter</a></p>
<p style="text-align: center; font-size: 13px; color: #666; margin-top: -1em;">Arrastra el botón a la barra de favoritos. Si haces click aquí no hace nada (los bookmarklets solo funcionan sobre la página objetivo).</p>
<p>Si tu barra de favoritos no se ve, actívala con <code>Cmd+Shift+B</code> (Mac) o <code>Ctrl+Shift+B</code> (Windows).</p>
<h2 id="c-mo-usarlo">Cómo usarlo</h2>
<ol>
<li>Entra en Bing Webmaster Tools y abre el report de <strong>AI Performance</strong> de la propiedad que quieras analizar.</li>
<li>Elige el rango temporal: 7 días, 30 días, 3 meses o Custom. El bookmarklet detecta automáticamente cuál tienes activo.</li>
<li>Haz click en el bookmark de la barra de favoritos.</li>
<li>Verás un panel con spinner y progreso en vivo. Cuando termine, te ofrece 3 CSVs.</li>
<li>Si Bing te rate-limita en mitad del proceso, el bookmarklet espera 5 min y reintenta solo. No tienes que hacer nada.</li>
</ol>
<p>Tiempos esperados:</p>
<div style="overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5em 0;">
<table style="border-collapse:collapse;width:100%;min-width:600px;font-size:14px;">
<thead>
<tr>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Tamaño del sitio</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Tiempo aproximado</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">5-20 queries / pages</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">~5 segundos</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">~100 queries / ~250 pages</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">~2 minutos</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">~500 queries / 1.000 pages</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">~8-10 minutos</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">~1.000 queries / 2.000 pages</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">~15-20 minutos</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">2.500+ queries (enterprise)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">30-60 min, con autoespera por rate-limit</td>
</tr>
</tbody>
</table>
</div>
<h2 id="que-hace-si-bing-frena">Qué hace si Bing te rate-limita</h2>
<p>Cuando Bing detecta demasiadas peticiones, el bookmarklet:</p>
<ol>
<li>Muestra <em>"Bing throttled. Auto-resuming in 5m 0s. Keep this tab open."</em></li>
<li>Espera exactamente 5 minutos.</li>
<li>Hace un probe ligero al API.</li>
<li>Si el API responde OK, continúa desde donde se quedó.</li>
<li>Si sigue throttled, espera otros 5 minutos y vuelve a probar. Repite hasta 12 ciclos (1 hora máxima de espera).</li>
</ol>
<p>Todo lo que llevas mapeado queda guardado en localStorage del navegador. Si por lo que sea cierras la pestaña o recargas, al volver a clicar el bookmark hace resume automático con lo que llevabas. Nunca pierdes la data <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Lo único que tienes que hacer es <strong>no recargar la pestaña</strong> mientras está esperando. Si recargas y Bing está fuerte con el rate-limit, puede que veas una página con un mensaje JSON de "too many requests": eso es normal... recargas en 10 min y la web vuelve y puedes seguir con el proceso, pero mejor no hacerlo.</p>
<h2 id="qu-obtienes">Qué obtienes</h2>
<p>Tres CSVs con prefijo <code>bing-aip_&lt;dominio&gt;_&lt;fecha&gt;_</code>:</p>
<h3 id="-mapping-csv-"><code>mapping.csv</code></h3>
<p>El mapping completo en formato largo. Una fila por combinación query+URL con sus citations. Sirve tanto para pivot "queries por página" como "páginas por query" en Excel o Sheets sin tener que hacer joins.</p>
<h3 id="-queries-summary-csv-"><code>queries-summary.csv</code></h3>
<p>Una fila por query: total de citations y cuántas páginas tiene mapeadas.</p>
<h3 id="-pages-summary-csv-"><code>pages-summary.csv</code></h3>
<p>Una fila por página con citations totales, mapeadas, sin mapear y número de queries asociadas. <strong>Esta es la tabla más interesante</strong> porque expone el sample-bias de Bing en la columna <code>unmapped_citations</code>: páginas con citations totales pero sin queries identificadas en el mapping (la API no las expone).</p>
<h2 id="la-pega-que-bing-no-destaca">El sampling de Bing</h2>
<p>La propia UI de Bing avisa que no es toda la data, es un sampling de la misma, o lo que es lo mismo, qu <strong>el mapping query<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" />page que Bing expone es parcial</strong>.  Para cada URL puedes ver el total de citations que tiene asociadas (cuántas veces fue referenciada por AI systems en total), pero solo una parte de esas citations Bing puede atribuirlas a una grounding query concreta vía el sample. El resto queda como "citations sin query identificada". A esta porción con query asociada la llamo citations mapeadas.</p>
<p>He probado en 6 sitios con perfiles muy distintos:</p>
<div style="overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5em 0;">
<table style="border-collapse:collapse;width:100%;min-width:700px;font-size:14px;">
<thead>
<tr>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Sitio</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Tipo</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Pages</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Citations totales</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Citations mapeadas</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Coverage</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">A</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Sitio profesional, mono-locale, micro</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">13</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">142</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">35</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>24.6%</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">B</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Tienda online vertical, mono-locale, pequeña</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">263</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">15.224</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">10.974</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>72.1%</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">C</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Plataforma transaccional, multi-locale, mediana</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">2.380</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">77.164</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">31.185</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>40.4%</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">D</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Plataforma servicios B2C, mono-locale, mediana</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">1.219</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">213.841</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">83.492</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>39.0%</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">E</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Tienda online generalista, mono-locale, grande</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">4.912</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">1.820.471</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">845.247</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>46.4%</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">F</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Plataforma transaccional, multi-locale, grande</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">4.751</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">9.628.043</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">9.297.849</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>96.6%</strong></td>
</tr>
</tbody>
</table>
</div>
<p><strong>Conclusiones del cruce de cobertura:</strong></p>
<ul>
<li>El coverage va del <strong>24% al 97%</strong> según el sitio. No hay patrón evidente de "más/menos volumen = mejor coverage": el sitio E (1.8M citations) tiene 46% mientras el sitio F (9.6M) tiene 97%. El comportamiento es parece errático, pero luego comparto algunas hipótesis en hallazgos.</li>
<li>El % de páginas que tienen alguna query mapeada es aún más bajo: típicamente entre 10% y 25% en sitios medianos/grandes. La mayoría de URLs citadas no tienen ninguna query asociada en el sample.</li>
<li>Para sitios pequeños (menos de 200 citations totales) el dato es prácticamente inservible. Solo se mapean las queries top.</li>
</ul>
<p>El CSV <code>pages-summary.csv</code> te da esa información explícita en la columna <code>unmapped_citations</code>. Si una URL tiene 28 citations pero 0 queries mapeadas, esa página tiene tráfico generativo "fantasma" que Bing no te enseña de dónde viene.</p>
<h2 id="grounding-vs-busqueda-real">¿Las grounding queries corresponden a demanda real de búsqueda?</h2>
<p>Una pregunta que siempre he querido responder es si <strong>¿esas queries existen como búsqueda real, o el AI grounding está generando unas queries que un humano no busca?</strong></p>
<p>Para responderlo crucé los datos de grounding con dos fuentes:</p>
<ul>
<li><strong>Bing Webmaster Tools API</strong>: clicks e impressions de búsqueda en Bing por query, mismo rango temporal. La API capa a 6.700 records por llamada agregada, así que para sitios con miles de queries hay que hacer lookup query-por-query con <code>GetQueryPageStats(query)</code>, una llamada por cada grounding query.</li>
<li><strong>Google Search Console</strong>: impressions por query del mismo período, exportado a CSV.</li>
</ul>
<h3 id="cross-distribucion">¿Qué % de queries de grounding puedo encontrar en mi Search Console o Webmaster Tools? ¿Y cuántas son únicas del grounding, invisibles en mis informes habituales?</h3>
<p><span>Para cada query que aparece en el reporte de grounding, miro si esa misma query también recibe impressions en Google Search Console (búsqueda normal de Google) y en Bing Webmaster Tools (búsqueda normal de Bing):</span></p>
<div style="overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5em 0;">
<table style="border-collapse:collapse;width:100%;min-width:800px;font-size:14px;">
<thead>
<tr>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Sitio</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Tipo</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Total Q grounding</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">∩ 3 buscadores</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Solo Bing</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Solo Google</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Solo grounding</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">A</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Sitio profesional, mono-locale, micro</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">3</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">2 (66.7%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>1 (33.3%)</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">B</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Tienda online vertical, mono-locale, pequeña</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">68</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>43 (63.2%)</strong></td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">7 (10.3%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">13 (19.1%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">5 (7.4%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">C</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Plataforma transaccional, multi-locale, mediana</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">569</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">79 (13.9%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">25 (4.4%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">277 (48.7%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>188 (33.0%)</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">D</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Plataforma servicios B2C, mono-locale, mediana</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">1.098</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">325 (29.6%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">38 (3.5%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">462 (42.1%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">273 (24.9%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">E</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Tienda online generalista, mono-locale, grande</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">2.546</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">322 (12.6%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">28 (1.1%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">1.588 (62.4%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>608 (23.9%)</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">F</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">Plataforma transaccional, multi-locale, grande</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">2.473</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">352 (14.2%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">44 (1.8%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">1.631 (66.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">446 (18.0%)</td>
</tr>
</tbody>
</table>
</div>
<p><strong>% de queries recuperables</strong><span> (con presencia en al menos un buscador): A 67%, B 93%, C 67%, D 75%, E 76%, F 82%. </span><strong>Mediana ~76%</strong><span>. Entre el 7% y el 33% de las queries que disparan grounding no se ven ni en Bing ni en Google.</span></p>
<h3 id="cross-citations">Por peso de citations el cuadro cambia</h3>
<p><span>La tabla anterior cuenta queries (cada una vale 1). Si ponderamos por </span><strong>citations</strong><span> (cuánto pesa cada query en el total de referencias de tu URL en respuestas AI), las queries "solo grounding" se reducen porque suelen ser cola larga con pocas citations cada una:</span></p>
<div style="overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5em 0;">
<table style="border-collapse:collapse;width:100%;min-width:700px;font-size:14px;">
<thead>
<tr>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Sitio</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Total citations</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">∩ 3 buscadores</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Solo Bing</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Solo Google</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Solo grounding</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">A</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">35</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">28 (80.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>7 (20.0%)</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">B</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">11.052</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>10.380 (93.9%)</strong></td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">322 (2.9%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">285 (2.6%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">65 (0.6%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">C</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">31.185</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">16.740 (53.7%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">3.676 (11.8%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">6.552 (21.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>4.217 (13.5%)</strong></td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">D</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">83.804</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">59.180 (70.6%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">2.724 (3.3%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">15.443 (18.4%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">6.457 (7.7%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">E</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">851.659</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">644.043 (75.6%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;"><strong>86.383 (10.1%)</strong></td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">95.624 (11.2%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">25.609 (3.0%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">F</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">9.304.615</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">8.521.096 (91.6%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">274.386 (2.9%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">474.232 (5.1%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">34.901 (0.4%)</td>
</tr>
</tbody>
</table>
</div>
<h3 id="cross-hallazgos">Hallazgos observados</h3>
<ol>
<li><strong>La cola larga de grounding es invisible para los analytics normales.</strong><span> Por número de queries, entre el 7% y el 33% de lo que dispara citations AI no aparece en Bing search ni en GSC. Si tu plan era "auditar las queries AI mirando solo Bing Webmaster Tools normal y Search Console", te estás perdiendo entre un séptimo y un tercio del fenómeno.</span></li>
<li><strong>Pero esas queries invisibles pesan poco en citations.</strong> La misma cola larga aglutina muchas queries con pocas citations cada una. Por eso, ponderando por citations, "solo grounding" baja al 1%-26%. Dependiendo de qué quieras medir (descubrir queries nuevas vs entender qué impulsa tu volumen AI), una métrica u otra cuenta.</li>
<li><strong>Google captura más intent de grounding que Bing search.</strong> En todos los sitios medianos/grandes, "solo Google" añade entre 34% y 63% de queries (por count) mientras "solo Bing" se queda en 0.9%-4.4%. Bing search tiene poca cuota en español, <strong>pero Bing AI/Copilot sirve un público global que sí ve sus citations, creo que este puede ser ele motivo principal de discrepancia</strong>.</li>
<li><strong>Google captura más intent de grounding que Bing search.</strong><span> En todos los sitios medianos/grandes, "solo Google" añade entre 42% y 66% de queries (por count) mientras "solo Bing" se queda en 1.1%-4.4%. Bing search tiene poca cuota en España, pero el grounding de Microsoft alimenta a múltiples AI systems globales y captura intent que su buscador propio no. </span></li>
<li><span> </span><strong>Hay dos casos donde "solo Bing" pesa fuerte en citations: sitios E (10.1%) y C (11.8%).</strong><span> No me arriesgo a explicar por qué. Posibles factores: audiencias más afines a Microsoft (Edge users), mercados internacionales que el GSC del usuario no recoge bien, o queries que el AI reescribe internamente y resultan más cerca del índice de Bing que del de Google. En esos sitios sé que son productos con tirón fuera de España y que son buscados en español en mercados del otro lado del charco. Lo dejo como observación, no como conclusión.</span></li>
</ol>
<h3 id="cross-queries-raras">El bucket "solo grounding" tiene queries raras de varias clases</h3>
<p><em>Nota: las queries de los ejemplos son inventadas para no exponer datos de cliente, pero los patrones son fieles a lo que aparece en los logs reales.</em></p>
<p>Cuando filtras las queries que SOLO aparecen en grounding (no en Bing search ni en Google), las clases que veo:</p>
<ul>
<li><strong>Truncadas o fragmentadas.</strong> Bing expone grounding queries cortadas como si fueran completas: <code>zapatillas running mujer talla pequeñ</code>, <code>zapatillas running mujer tal</code>, <code>zapatillas running muje</code>. No se si es que usa las del user que ha dado enter sin completar o ha usado algón autocompeltado.</li>
<li><strong>Brand-augmented por prior del modelo.</strong> El usuario probablemente preguntó "mejor robot aspirador para pelo de mascotas", pero la query que Bing reporta como source es <code>roomba pelo mascotas opiniones</code>, <code>xiaomi robot aspirador mascotas</code>, <code>cecotec conga pelo perro</code>. El modelo añade marcas conocidas del vertical (que él asume) y eso queda en el log como si fuera la query original. Aparecen citaciones a tu sitio aunque el user nunca tecleó la marca competidora.</li>
<li><strong>Multi-idioma cuando el sitio sirve multi-mercado.</strong> En sitios globales aparecen queries en idiomas que el GSC del mercado local no recoge: <code>how to descale a coffee machine</code> en inglés, <code>como limpar máquina de café</code> en portugués, <code>come decalcificare macchina caffè</code> en italiano. Ya se sabe que el grounding lo puede hacer la IA en otro idioma para expandir el corpus.</li>
<li><strong>Variaciones regionales muy específicas.</strong> Por ejemplo en servicios profesionales: <code>abogado herencias internacionales la rioja</code> / <code>melilla</code> / <code>ceuta</code> / <code>teruel</code>. Long-tail informacional pero haciendo una expansión con poco sentido.</li>
</ul>
<p>Esto explicaría el motivo de que no existan en Google, son cosas que ningún usuario buscaría y exclusivo del funcionamiento del fan-out.</p>
<h3 id="urls-grounding-vs-google">¿Y a nivel URL? ¿Hay URLs citadas por AI que Google o Bing orgánico no sirve?</h3>
<p><span>Misma idea pero ponderando por </span><strong>URL citada</strong><span>. Para que el cruce sea correcto hay que crawlear cada URL grounding, seguir redirects 301 y canonicals, status final, y comparar el destino final contra GSC. La URL exacta no vale ya AI memoriza slugs viejos y cita variantes con canonical, noindex, 404...</span></p>
<div style="overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5em 0;">
<table style="border-collapse:collapse;width:100%;min-width:700px;font-size:14px;">
<thead>
<tr>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Sitio</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">URLs grounding</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">Total citations</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">AI-only URLs (% sobre grounding)</th>
<th style="padding:8px 12px;text-align:left;border-bottom:1px solid #e5e5e5;background:#f5f5f5;font-weight:600;white-space:nowrap;">AI-only citations (% sobre total)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">A</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">13</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">142</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">B</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">262</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">15.224</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">C</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">2.378</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">77.164</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">167 (7.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">709 (0.9%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">D</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">1.219</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">213.841</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">15 (1.2%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">172 (0.08%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">E</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">4.836</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">1.820.471</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">12 (0.2%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">169 (0.009%)</td>
</tr>
<tr>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">F</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">4.744</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">9.628.043</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
<td style="padding:8px 12px;border-bottom:1px solid #e5e5e5;white-space:nowrap;">0 (0.0%)</td>
</tr>
</tbody>
</table>
</div>
<p><span>Como vemos quedan algunas urls AI-only pero en mi caso el motivo es puramente técnico. No tengo acceso a la data completa de BigQuery y/o no tengo varias propiedades de Search Console para evitar el sampling. Tampoco tengo acceso de más de 3 meses a los logs.</span></p>
<p><span>Aun así, tras filtrar artefactos técnicos, sampling, equivalencias cross-language y presencia en Bing, el AI-only verdadero (URLs invisibles en Google y</span><span> Bing simultáneamente) queda en </span><strong>0.004%-0.9% de las citations</strong><span>. El gap entre AI y motores de búsqueda es residual y la mayor parte de lo que parecía "descubrimiento" eran legacy URLs, páginas borradas, duplicados con canonical, datos suprimidos por el muestreo y variantes de idioma de páginas que Google sí indexa en otra locale.</span></p>
<h2 id="privacidad">Privacidad</h2>
<ul>
<li>El script se ejecuta en tu navegador, sobre la página de BWT, con tus cookies de sesión.</li>
<li>No envía nada a ningún servidor externo.</li>
<li>No usa analytics.</li>
<li>Los datos parciales se guardan en localStorage del propio Bing, solo para hacer resume tras un rate-limit. Caduca a las 24h.</li>
<li>El código fuente es legible y minificado. Puedes auditarlo antes de instalarlo.</li>
</ul>
<h2 id="c-mo-funciona-por-dentro">Cómo funciona por dentro</h2>
<p>Bing usa internamente dos endpoints REST que ya están autenticados por tu sesión:</p>
<ul>
<li><code>POST /webmasters/api/aiperformance/searchqueries/stats</code> devuelve queries</li>
<li><code>POST /webmasters/api/aiperformance/pages/stats</code> devuelve páginas</li>
</ul>
<p>El bookmarklet:</p>
<ol>
<li>Pide el CSRF token a <code>/webmasters/auth/token</code>.</li>
<li>Lista todas las queries y todas las pages (paginado).</li>
<li>Para cada query, llama a <code>pages/stats</code> con <code>Query: X</code> y guarda las páginas citadas con su número de citations.</li>
<li>Aplica cooldown preemptivo cada 150 queries (45 segundos) para no agotar la cuota de rate-limit.</li>
<li>Si llega un 429 o un body con <em>"too many requests"</em>, pausa 5 minutos, hace probe del API, reintenta. Loop hasta resolver o llegar al límite de 1 hora.</li>
<li>El <code>pages-summary</code> se deriva del mapping anterior: <code>unmapped_citations = total - mapped</code>.</li>
<li>Genera 3 CSVs en memoria y los ofrece como descargas.</li>
</ol>
<p>Cuando Bing devuelve <code>404 NoDataFound</code> significa "esa página/query no tiene mapping en el sample", no es un error.</p>
<p><strong>Nota técnica:</strong> es redundante sacar la data al revés page -&gt; query, es la misma y de esta forma se tarda menos.</p>
<h2 id="soluci-n-de-problemas">Solución de problemas</h2>
<p><strong>"Open this on the AI Performance page" error.</strong> Has ejecutado el bookmarklet desde otra página. El propio mensaje te da un link directo al report del sitio que tenías abierto.</p>
<p><strong>Solo se descarga 1 CSV.</strong> Chrome a veces bloquea descargas múltiples. Permite el aviso que aparece en la barra de direcciones, o usa los botones individuales del panel.</p>
<p><strong>"403 / 401" o errores en <code>auth/token</code>.</strong> Tu sesión de Bing ha expirado. Recarga la página y vuelve a ejecutar el bookmarklet.</p>
<p><strong>Veo "Bing throttled. Auto-resuming in 5m 0s".</strong> Tranquilo, es normal. No recargues. Deja la pestaña abierta y vuelve en 5-10 min. El bookmarklet sigue solo desde donde estaba.</p>
<h2 id="pr-ximos-pasos">Próximos pasos</h2>
<ul>
<li><input type="checkbox" disabled="disabled" /> Cease and Desist de Microsoft</li>
</ul>
<p>Si lo usas y te ayuda, cuéntamelo. Si te explota algo, también.</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/ai-performance-bing-webmaster-tools-export/">AI Performance: Cómo exportar el mapping completo de queries y páginas citadas de Bing Webmaster Tools (bookmarklet)</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/posicionamiento-buscadores/ai-performance-bing-webmaster-tools-export/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Estado de medibilidad del tráfico IA</title>
		<link>https://natzir.com/analitica-web/estado-de-medibilidad-del-trafico-ia/</link>
					<comments>https://natzir.com/analitica-web/estado-de-medibilidad-del-trafico-ia/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Sun, 17 May 2026 11:55:04 +0000</pubDate>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[inteligencia-artificial-seo]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3454</guid>

					<description><![CDATA[<p>La medibilidad del tráfico generado por IA varía mucho según el tipo de tráfico, ya que no es lo mismo un crawler de training que un click humano desde una cita, ni un fetcher on-demand que un agente navegando. Esta tabla resume el estado actual a mayo de 2026, clasificando por servicio, nivel de medibilidad [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/analitica-web/estado-de-medibilidad-del-trafico-ia/">Estado de medibilidad del tráfico IA</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La medibilidad del tráfico generado por IA varía mucho según el tipo de tráfico, ya que no es lo mismo un crawler de training que un click humano desde una cita, ni un fetcher on-demand que un agente navegando. Esta tabla resume el estado actual a mayo de 2026, clasificando por servicio, nivel de medibilidad y huella que verás en logs o analítica.</p>
<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Alto · <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Medio · <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e0.png" alt="🟠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Bajo · <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Nulo</p>
<h2>1. Crawlers de training y search/RAG</h2>
<p>Bots que indexan tu sitio, no ejecutan JS y solo son visibles en server logs. Una nota importante, AIO y AI Mode no hacen fetch en tiempo real tras una consulta, sino que tiran del índice de Google ya cacheado por Googlebot, así que no verás un hit en logs correlacionado con una búsqueda concreta ni puedes forzar un fetch en una conversación con AI Mode.</p>
<div style="overflow-x: auto; margin: 1.5em 0; -webkit-overflow-scrolling: touch;">
<table style="width: 100%; border-collapse: collapse; font-size: 0.95em; min-width: 600px;">
<thead>
<tr>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Servicio</th>
<th style="background: #f4f4f4; text-align: center; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600; width: 60px;">Nivel</th>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Huella</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Google Search / AIO / AI Mode</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Googlebot</code> + JSON oficial + rDNS <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">*.googlebot.com</code>. El mismo crawler alimenta Search e índice para AIO/AI Mode</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Google Gemini training + grounding</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;"><a href="https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers"><code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Google-Extended</code> no es un UA</a>, solo token de robots.txt. El crawling lo hace con UAs Googlebot existentes</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">OpenAI training + search</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UAs <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">GPTBot</code>, <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">OAI-SearchBot</code> + JSON oficial de IPs</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Anthropic training + search</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UAs <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">ClaudeBot</code>, <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Claude-SearchBot</code>. Sin JSON oficial de IPs</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Perplexity (indexación declarada)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">PerplexityBot</code>. Cloudflare lo deslistó de Verified Bots (ago 2025)</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Apple training</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Applebot</code>. Verificación estable</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Amazon training</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Amazonbot</code>. Verificación estable</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Meta training</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Meta-ExternalAgent</code>. Verificación estable</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Common Crawl</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">CCBot</code>. Verificación estable. Dataset abierto usado por múltiples modelos</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">ByteDance training</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Bytespider</code>, pero ignora robots.txt sistemáticamente y hay reportes de spoofing. Volúmenes agresivos (1.4M hits/día reportados). Requiere bloqueo a nivel server/CDN</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Perplexity stealth crawler</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA Chrome 124 falsificado cuando se bloquea el oficial</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">xAI Grok crawler</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA falsificado sistemáticamente, "impossible to block" según Cloudflare</td>
</tr>
</tbody>
</table>
</div>
<h2>2. Fetchers on-demand (disparados por usuario o grounding)</h2>
<p>Se disparan cuando un humano pide algo o cuando un LLM hace grounding/web search en vivo. Aquí sí verás hits en logs correlacionados con consultas concretas, a diferencia de AIO/AI Mode.</p>
<div style="overflow-x: auto; margin: 1.5em 0; -webkit-overflow-scrolling: touch;">
<table style="width: 100%; border-collapse: collapse; font-size: 0.95em; min-width: 600px;">
<thead>
<tr>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Servicio</th>
<th style="background: #f4f4f4; text-align: center; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600; width: 60px;">Nivel</th>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Huella</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">ChatGPT (browsing + agent fetch)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UAs <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">ChatGPT-User</code>, <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">ChatGPT Agent</code> + JSON oficial + Web Bot Auth (HTTP Message Signatures) desde ago 2025</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Vertex AI Agents</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Google-CloudVertexBot</code></td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Gemini grounding / URL Context tool</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e0.png" alt="🟠" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Sin UA específico documentado. El fetch lo hace la infra Google y se observa como UA escueto <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Google</code></td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Claude (fetch para grounding)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Claude-User</code>. Sin JSON oficial</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Perplexity (fetch para grounding)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Perplexity-User</code>. Mismo paquete deslistado por Cloudflare</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Amazon (fetch on-demand)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Amzn-User</code></td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Mistral (fetch on-demand)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">MistralAI-User</code></td>
</tr>
</tbody>
</table>
</div>
<h2>3. Clicks humanos desde citas en chatbots</h2>
<p>Cómo se ve un click humano que llega desde una cita en un chatbot, tanto en server logs como en tu herramienta de analytics.</p>
<div style="overflow-x: auto; margin: 1.5em 0; -webkit-overflow-scrolling: touch;">
<table style="width: 100%; border-collapse: collapse; font-size: 0.95em; min-width: 600px;">
<thead>
<tr>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Origen</th>
<th style="background: #f4f4f4; text-align: center; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600; width: 60px;">Nivel</th>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Huella</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Perplexity web</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;"><code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">perplexity.ai / referral</code>, Referer consistente</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">ChatGPT web, citation links (todos los planes)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;"><code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">utm_source=chatgpt.com</code> desde jun 2025</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">ChatGPT web, inline links (Plus / Pro / Team)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Referer preservado, aparece como <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">chatgpt.com / referral</code></td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Copilot (copilot.microsoft.com)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;"><code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">copilot.microsoft.com / referral</code></td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Gemini web (gemini.google.com)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;"><code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">gemini.google.com / referral</code></td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Claude web</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Path con fecha <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">claude.ai/referral/YYYY-MM-DD</code>, requiere regex para agrupar</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Gemini app iOS</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">GeminiiOS/x.x.x</code> con <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">GoogleWv/1.0 (WKWebView)</code> identificable en logs. Referer stripped, cae en Direct en GA4. <a href="https://ppc.land/gemini-ios-app-traffic-revealed-through-undocumented-user-agent/">Descubierto por mí en logs (oct 2025).</a></td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Gemini, UA <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Google</code> genérico (resto de superficies)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e0.png" alt="🟠" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Gemini usa UA escueto <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Google</code> para gran parte de su tráfico, sin documentación oficial. Imposible distinguir origen (app, web, grounding, etc.)</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Apps móviles ChatGPT, Claude, Perplexity</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Comportamiento no documentado oficialmente por los proveedores. Reportado consistentemente por la industria, los clicks desde apps móviles strippean Referer y la mayoría no llevan UTM. Estimaciones de 20-40% del tráfico IA mal atribuido a Direct por este motivo</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">ChatGPT web, inline links (plan Free)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Referer stripped, cae en Direct</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Gemini app Android</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Sin UA propio documentado. Cae bajo <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">Google</code> genérico o Direct</td>
</tr>
</tbody>
</table>
</div>
<h2>4. Experiencias generativas integradas en SERP</h2>
<p>AIO y AI Mode dentro de google.com, Copilot Search dentro de bing.com. Mezcladas con orgánico clásico en GA4 en ambos casos. Bing es bastante más transparente que Google en su panel para webmasters.</p>
<div style="overflow-x: auto; margin: 1.5em 0; -webkit-overflow-scrolling: touch;">
<table style="width: 100%; border-collapse: collapse; font-size: 0.95em; min-width: 600px;">
<thead>
<tr>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Origen</th>
<th style="background: #f4f4f4; text-align: center; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600; width: 60px;">Nivel</th>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Huella</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">AI Overviews (Google)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Clicks e impresiones incluidos en totales de Search Console, pero sin filtro para aislarlos (<code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">google / organic</code> en GA4)</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">AI Mode (Google)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Clicks e impresiones agregados al "Web" search type de Search Console desde 17 jun 2025, sin filtro dedicado</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Copilot Search + Bing AI summaries</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Mezclado con <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">bing / organic</code> en GA4, pero el AI Performance report de Bing Webmaster Tools (feb 2026) sí muestra citations, grounding queries, páginas citadas y mapping query<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" />página. Solo visibilidad de citation, no clicks al sitio. Pero, en Microsoft Clarity tenemos además share of authority y AI referral traffic.</td>
</tr>
</tbody>
</table>
</div>
<h2>5. Navegadores agénticos</h2>
<p>Browsers Chromium pilotados por LLM. Visibles en GA4 como humanos. UA Chrome estándar, ninguno tiene UA propio dedicado salvo Google-Agent. La única señal fiable cuando ejecutan tareas agénticas es Web Bot Auth, si la firman.</p>
<div style="overflow-x: auto; margin: 1.5em 0; -webkit-overflow-scrolling: touch;">
<table style="width: 100%; border-collapse: collapse; font-size: 0.95em; min-width: 600px;">
<thead>
<tr>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Browser / Agent</th>
<th style="background: #f4f4f4; text-align: center; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600; width: 60px;">Nivel</th>
<th style="background: #f4f4f4; text-align: left; padding: 10px 12px; border-bottom: 2px solid #ddd; font-weight: 600;">Huella</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Google-Agent (Gemini Agent + Chrome Auto-Browse)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA propio con string <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">compatible; Google-Agent</code> + JSON oficial (<code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">user-triggered-agents.json</code>) + Web Bot Auth (identidad <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">agent.bot.goog</code>) desde mar 2026. Heredó de Project Mariner (cerrado 4 may 2026). Único agente con UA propio</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">ChatGPT Atlas (modo agent)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Sin UA propio, pero firma con Web Bot Auth cuando opera en modo agent (registrado como signed agent <code style="background: #f4f4f4; padding: 1px 5px; border-radius: 3px; font-size: 0.9em;">chatgpt-agent</code> en Cloudflare). Navegación humana normal indistinguible</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Perplexity Comet</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e0.png" alt="🟠" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Sin UA propio. Algunas peticiones del asistente incluyen "Perplexity" en UA. Sin Web Bot Auth documentado</td>
</tr>
<tr style="background: #fafafa;">
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Claude for Chrome (extensión)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA Chrome del usuario, indistinguible. Sin Web Bot Auth</td>
</tr>
<tr>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">Dia (The Browser Company)</td>
<td style="padding: 10px 12px; vertical-align: top; text-align: center; white-space: nowrap;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="padding: 10px 12px; vertical-align: top; line-height: 1.5;">UA Chromium estándar, indistinguible. Sin Web Bot Auth</td>
</tr>
</tbody>
</table>
</div>
<h2>Conclusiones</h2>
<h3>Citas con clicks en chatbots desde desktop</h3>
<p>Es el tramo más limpio. Perplexity pasa Referer consistente, ChatGPT incluye <code>utm_source=chatgpt.com</code> en las citation links de <a href="https://clickport.io/blog/chatgpt-direct-traffic-ga4">todos los planes desde junio 2025</a>, Copilot y Gemini web pasan Referer estándar, y Claude requiere agrupar paths por fecha con regex pero se hace. Adobe Analytics lanzó la dimensión <a href="https://www.devrun.com/en/digital-analytics-blog/post/unlock-actionability-insights-with-adobe-analytics-august-enhancements">"Conversational AI tools" en agosto de 2025</a>, <a href="https://amplitude.com/docs/amplitude-ai/ai-visibility/faq">Amplitude</a> también identifica LLMs en sus default channel rules, y GA4 sacó su <a href="https://support.google.com/analytics/answer/9164320?hl=en">canal nativo "AI Assistant" el 13 de mayo de 2026</a>. En Plausible, Matomo o cualquier sistema con reglas de canal personalizadas puedes montártelo manualmente.</p>
<h3>Citas con clicks en chatbots desde móvil</h3>
<p>Android cae en Direct casi sin excepciones e iOS solo deja huella en logs vía <code>GeminiiOS</code> (<a href="https://www.seroundtable.com/geminiios-google-user-agent-40333.html">UA descubierto por mi</a>). Las apps de ChatGPT, Claude y Perplexity strippean Referer y no llevan UTM, con estimaciones de industria del 20-40% del tráfico IA misatribuido a Direct por este motivo, y los canales nativos de las herramientas de analytics no resuelven esto.</p>
<p>Cubren los grandes proveedores con referrer detectable (ChatGPT, Gemini, Claude, en algunos casos Perplexity y Copilot) pero no lo que llega sin referrer ni UTM, que es exactamente donde está el agujero del móvil. Si solo miras a estos canales, el tráfico de las apps móviles te queda fuera.</p>
<h3>Citas sin clicks</h3>
<p>El último problema, y el más difícil de resolver, son las citaciones sin click, esto es, la marca mencionada en respuestas IA sin que el usuario clique. Más allá del impacto en CTR orgánico, suficientemente documentado, el dato relevante es el click dentro del propio AIO. <a href="https://www.pewresearch.org/short-reads/2025/07/22/google-users-are-less-likely-to-click-on-links-when-an-ai-summary-appears-in-the-results/">Pew Research midió un 1%</a> en julio de 2025, lo que significa que aunque tu marca aparezca citada en el AIO, solo un usuario de cada cien clica la fuente y el resto se queda en Google o cierra la pestaña.</p>
<p>Search Console agrega clicks e impresiones de AIO y AI Mode al total sin filtro para aislarlos, y <a href="https://www.searchenginejournal.com/google-confirms-search-console-impression-bug-affecting-ai-overviews-and-search/527034/">las impresiones entre mayo 2025 y abril 2026 estuvieron infladas por un bug que Google reconoció oficialmente</a>.</p>
<p>Bing va por delante de Google en transparencia ya que el <a href="https://blogs.bing.com/webmaster/February-2026/Introducing-AI-Performance-in-Bing-Webmaster-Tools-Public-Preview">AI Performance report en Bing Webmaster Tools</a>, lanzado en febrero 2026, muestra citations, grounding queries, páginas citadas y desde marzo el mapping query<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" />página. Lo único que no da son clicks al sitio, solo visibilidad de citation. Fuera de la SERP el problema se repite en los chatbots.</p>
<p><a href="https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/">Los prompt trackers</a> rotan unos pocos prompts predefinidos sobre LLMs no deterministas que cambian de respuesta hora a hora. Dan la punta, de la punta, del iceberg. Los de escala masiva como Sistrix o Ahrefs, dan un poquito más. El volumen de menciones que recibe una marca en las conversaciones de millones de usuarios no se puede observar, y no parece que vaya a cambiar a corto plazo porque las APIs de los LLMs no exponen esos datos.</p>
<h3>Agentes navegando</h3>
<p>Los agentic browsers tipo Atlas, Comet, Claude for Chrome o Dia se ven en GA4 como humanos normales porque, técnicamente, lo son, con UA Chrome estándar, cookies y navegación humana. <a href="https://youtu.be/j7-Axn7yg9U?si=dlNIT8h6vgTW2OYX&amp;t=634">Aquí demostré que no eran identificados como bots y ejecutaban Google Analytics</a>.</p>
<p>Ninguno tiene un UA dedicado propio, lo cual es un problema para el <a href="https://natzir.com/posicionamiento-buscadores/trafico-agentico/">tráfico agéntico</a>. La excepción es Google, que con <a href="https://searchengineland.com/google-agent-user-agent-472674">Google-Agent</a>, el UA lanzado el 20 de marzo de 2026 para Project Mariner y heredado por Gemini Agent y Chrome Auto-Browse tras el <a href="https://www.digitaltrends.com/computing/google-pulls-the-plug-on-project-mariner-the-ai-agent-that-browsed-the-web-like-a-human/">cierre de Mariner el 4 de mayo de 2026</a>, es el único agente navegacional mainstream que se identifica explícitamente en logs. Tiene su propio fichero de IPs (<code>user-triggered-agents.json</code>) y está experimentando con <a href="https://blog.cloudflare.com/signed-agents/">Web Bot Auth</a>, el estándar IETF de firma criptográfica. ChatGPT Atlas también firma con Web Bot Auth cuando entra en modo agent pero sin UA propio, mientras que Comet, Claude for Chrome y Dia son indistinguibles.</p>
<p>Web Bot Auth es hoy la única señal fiable para distinguir un agente legítimo de un spoofer, dado que el UA es trivial de falsificar y la firma criptográfica requiere acceso a la clave privada del agente.</p>
<h2>Qué fuente sirve para qué</h2>
<p>La medición de visibilidad en LLMs sale de combinar varias fuentes parciales ya que cada fuente cubre una parte distinta del problema:</p>
<ul>
<li><strong>Server logs (cruzados con datos de CDN o WAF):</strong> identificación de crawlers, fetchers y agentes con UA propio. Te dice quién entra a leer y con qué frecuencia (bots o users).</li>
<li><strong>Herramientas de analytics (Adobe Analytics, GA4, Amplitude, Plausible, Matomo, Piwik PRO o la que uses):</strong> clicks humanos desde citas en chatbot web, con sus canales nativos o personalizados. Con esto mides sesiones, conversiones y revenue generado por tráfico IA. Asume que aquí no está todo, un porcentaje considerable es Direct.</li>
<li><strong>Search Console:</strong> agrega AIO y AI Mode al total pero no los separa. Puedes inferir algún prompt mediante RegEx, no es fiable.</li>
<li><strong>Bing Webmaster Tools (AI Performance report):</strong> única fuente que muestra citations dentro de Copilot y Bing AI summaries, con grounding queries y páginas citadas. Te da visibilidad de citation, no de los clicks. <a href="https://natzir.com/posicionamiento-buscadores/ai-performance-bing-webmaster-tools-export/">Aquí te enseño a descargarte toda la data sin ir página a página</a>.</li>
<li><strong>Microsoft Clarity (Citations dashboard):</strong> grounding queries, cited pages y share of authority dentro de Copilot y experiencias AI de partners de Microsoft, más AI referral traffic medido desde el propio script de Clarity. Como lo que hay en BWT en la parte de citations pero añade la sesión y el share of authority como KPI</li>
<li><strong>Prompt trackers:</strong> aproximación ínfima de las citations en LLMs. <a href="https://natzir.com/posicionamiento-buscadores/el-negocio-de-la-certidumbre-prefabricada/">Para mi son el negocio de la certidumbre prefabricada</a>.</li>
</ul>
<p>&nbsp;</p>
<p>La entrada <a href="https://natzir.com/analitica-web/estado-de-medibilidad-del-trafico-ia/">Estado de medibilidad del tráfico IA</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/analitica-web/estado-de-medibilidad-del-trafico-ia/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>El negocio de la certidumbre prefabricada</title>
		<link>https://natzir.com/posicionamiento-buscadores/el-negocio-de-la-certidumbre-prefabricada/</link>
					<comments>https://natzir.com/posicionamiento-buscadores/el-negocio-de-la-certidumbre-prefabricada/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Tue, 12 May 2026 16:09:36 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3468</guid>

					<description><![CDATA[<p>Para entender por qué existe el mercado de los prompt trackers hay que mirar tres capas distintas que creo que se mezclan en el debate. Primero, la psicología del comprador. Segundo, los incentivos de las organizaciones donde ese comprador trabaja. Y tercero, el modelo formativo que produce profesionales del marketing y del SEO con un [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/el-negocio-de-la-certidumbre-prefabricada/">El negocio de la certidumbre prefabricada</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Para entender por qué existe el mercado de los <strong>prompt trackers</strong> hay que mirar tres capas distintas que creo que se mezclan en el debate. Primero, la <strong>psicología del comprador</strong>. Segundo, los <strong>incentivos de las organizaciones</strong> donde ese comprador trabaja. Y tercero, el <strong>modelo formativo</strong> que produce profesionales del marketing y del SEO con un lenguaje heredado de un mundo que ya no funciona como funcionaba. Las tres se refuerzan entre sí.</p>
<p>Por eso un mercado donde la señal técnica es débil, como <a href="https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/">ya documenté con detalle aquí</a>, factura cientos de millones al año con márgenes brutos del 85 al 95% según los datos que recogí en aquel análisis a partir de los pricings públicos de las tools y estimaciones de costes operativos.</p>
<h2>El cerebro humano y la incertidumbre</h2>
<p>La aversión a la ambigüedad lleva estudiándose en economía y psicología desde la paradoja que formuló <strong>Daniel Ellsberg</strong> en 1961. Su experimento, basado en apuestas sobre urnas con distinto grado de información sobre su contenido, mostraba que <strong>la gente prefiere apostar por opciones cuya probabilidad conoce frente a opciones cuya probabilidad es desconocida</strong>, aunque matemáticamente sean equivalentes. Una cosa es la aversión al riesgo (saber que hay un 30% de probabilidades de algo) y otra distinta es la aversión a la ambigüedad (no saber siquiera cuáles son esas probabilidades). El cerebro trata ambas situaciones de manera distinta y prefiere sistemáticamente la primera, según recoge la revisión de <strong>Marciano Siniscalchi</strong> sobre <a href="https://faculty.wcas.northwestern.edu/msi661/Ambiguity-Palgrave-Complete.pdf">ambigüedad y aversión a la ambigüedad</a>.</p>
<p>Eso sí, con matices. <a href="https://link.springer.com/article/10.1007/BF00057884">Heath y Tversky propusieron en 1991 la hipótesis de competencia</a>, que muestra que cuando una persona se siente experta en un dominio, el patrón se invierte y empieza a buscar ambigüedad en lugar de evitarla. Esto importa porque el comprador de martech no se ve como un sujeto neutral metido en una urna abstracta, se ve como experto en lo suyo. La aversión a la ambigüedad actúa en él de forma menos directa de lo que sugeriría Ellsberg. Aun así, en el momento de comprar una tool cuya metodología no entiende del todo, vuelve a estar fuera de su zona de competencia, y el sesgo reaparece.</p>
<p>Un estudio publicado en PMC en 2020 sobre <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC7055742/">intervenciones para reducir la aversión a la ambigüedad</a> encontró que después de enseñarle a la gente la paradoja y mostrarle por qué su elección era subóptima, la aversión bajaba pero no desaparecía (y además producía un efecto colateral de reducir la aversión al riesgo en otros contextos no relacionados).</p>
<p>Junto a esto opera la <strong>ilusión de control</strong> que describió <a href="https://natzir.com/conversion/como-hacer-que-un-usuario-convierta/"><strong>Ellen Langer</strong></a> en los años 70, que es esa tendencia a creer que controlamos cosas que en realidad están dominadas por el azar. Una revisión publicada en Analytical Chemistry sobre <a href="https://pubs.acs.org/doi/10.1021/acs.analchem.0c00704">sesgos en el juicio experto</a> añade que cuando los expertos creen que pueden superar sus sesgos por fuerza de voluntad, el intento puede acabar haciéndolos más fuertes. <strong>Lo único que sí parece reducir la ilusión de control es tener perfiles distintos en el equipo que decide</strong>, según <a href="https://ideas.repec.org/a/eee/eurman/v35y2017i4p430-439.html">un estudio experimental de Meissner y Wulf publicado en European Management Journal en 2017</a>.</p>
<h2>El efecto farola y la falacia de McNamara</h2>
<p>Seguro que conoces esta historia del <strong>efecto farola</strong>. Un policía encuentra a un borracho buscando algo bajo una farola por la noche. Le pregunta qué busca. Sus llaves. ¿Las perdió ahí? No, las perdí allí, en aquel parque oscuro. ¿Y por qué busca aquí entonces? <strong>Porque aquí hay luz</strong>.</p>
<p>Columbia Business School publicó un análisis del profesor <strong>Oded Netzer</strong> sobre por qué, a pesar de inversiones crecientes en marketing analytics, <a href="https://business.columbia.edu/insights/business-society/beware-streetlight-effect">la contribución medida de esa analítica al rendimiento corporativo seguía siendo baja</a>. La explicación que ofrecen los autores es que <strong>las empresas miden lo que es fácil de medir </strong>y lo que de verdad cuenta suele quedar fuera del foco.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/efecto-farola-1024x430.png" alt="Efecto farola" width="1024" height="430" class="alignnone size-large wp-image-3475" srcset="https://natzir.com/wp-content/uploads/2026/05/efecto-farola-1024x430.png 1024w, https://natzir.com/wp-content/uploads/2026/05/efecto-farola-350x147.png 350w, https://natzir.com/wp-content/uploads/2026/05/efecto-farola-768x322.png 768w, https://natzir.com/wp-content/uploads/2026/05/efecto-farola-1536x645.png 1536w, https://natzir.com/wp-content/uploads/2026/05/efecto-farola.png 1935w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Esto ha evolucionado en nuestro sector como la <strong>falacia de McNamara</strong>, formalizada por el sociólogo <strong>Daniel Yankelovich</strong>. Tiene cuatro pasos según <a href="https://sketchplanations.com/the-mcnamara-fallacy">el resumen de Sketchplanations</a>.</p>
<ol>
<li>Medir lo que es fácil de medir.</li>
<li>Descartar lo que no se puede medir.</li>
<li>Asumir que lo que no se puede medir no es importante.</li>
<li>Concluir que lo que no se puede medir no existe.</li>
</ol>
<p>McNamara aplicó esa lógica en Vietnam usando el <em>body count</em> como métrica principal. Big Think tiene un artículo divulgativo sobre <a href="https://bigthink.com/business/the-mcnamara-fallacy-when-data-leads-to-the-worst-decision/">cómo este patrón aparece hoy en decisiones cotidianas</a>.</p>
<h2>Goodhart y los KPIs que dejan de medir</h2>
<p>A esto creo que hay que sumarle un tercer mecanismo, la <strong>ley de Goodhart</strong>, formulada por el economista británico <strong>Charles Goodhart</strong> en 1975 y popularizada por la antropóloga <strong>Marilyn Strathern. </strong>Dice que cuando una medida se convierte en objetivo, deja de ser una buena medida. <a href="https://en.wikipedia.org/wiki/Goodhart%27s_law">La entrada de Wikipedia sobre la ley</a> recoge la cita exacta de Goodhart, <em>"any observed statistical regularity will tend to collapse once pressure is placed upon it for control purposes"</em>.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/ley-de-godhart-1024x991.webp" alt="Ley de godhart" width="1024" height="991" class="alignnone size-large wp-image-3473" srcset="https://natzir.com/wp-content/uploads/2026/05/ley-de-godhart-1024x991.webp 1024w, https://natzir.com/wp-content/uploads/2026/05/ley-de-godhart-350x339.webp 350w, https://natzir.com/wp-content/uploads/2026/05/ley-de-godhart-768x743.webp 768w, https://natzir.com/wp-content/uploads/2026/05/ley-de-godhart.webp 1080w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Existe una anécdota que se cita en muchos libros como ejemplo, la del programa colonial británico en Delhi que ofreció una <strong>recompensa por cobras muertas y acabó incentivando que la gente criara cobras para cobrarla</strong>. Posiblemente es una anécdota es inventada, nunca lo sabremos.</p>
<p>En marketing pasa lo mismo. Si el equipo se evalúa por número de leads, se generan leads que no convierten. Si el SEO se evalúa por keywords en top 10, se persiguen keywords sin volumen ni intención comercial. Si el email marketing se evalúa por open rate, las líneas de asunto se vuelven clickbait.</p>
<p>KPI Tree tiene una guía sobre <a href="https://kpitree.co/guides/frameworks/goodharts-law">Goodhart y el diseño de métricas</a> donde argumenta que <strong>el problema se agrava cuando las métricas se aíslan</strong>. Una métrica conectada a sus parents y childs en un árbol crea una red de relaciones donde manipular un nodo produce distorsiones visibles en los nodos vecinos. Una métrica aislada no tiene esa protección. La industria de prompt tracking lo sabe, por eso casi todas las tools venden un score único en una gráfica que sube y baja en vez de un sistema con guardrails.</p>
<h2>El argumento más fuerte a favor de los prompt trackers</h2>
<p>Para ser justos, toca hacer el ejercicio inverso, porque el caso a favor de medir visibilidad en LLMs no es trivial y descartarlo no sería honesto por mi parte. El argumento más sólido tiene tres componentes.</p>
<ol>
<li>El primero es la diferencia entre valor direccional y valor absoluto. Aunque un <em>visibility score</em> de 42 no signifique nada en términos absolutos, una caída del 40% mes a mes puede señalar un cambio real en cómo el modelo está representando la marca, sobre todo si la metodología de la herramienta se mantiene constante. Hay un montón de sistemas con mucho azar que se miden todo el rato (meteorología, mercados financieros, encuestas). <strong>Que los LLMs no sean deterministas no significa que no se puedan medir</strong>. Significa que hay que hacer <strong>muchas más repeticiones de las que la mayoría de tools hacen</strong> y no confundir señal con ruido en muestras pequeñas. Pero esto a tu prompt tracker favorito no lo sabe o si lo sabe no lo hace bien porque perdería sus márgenes. <strong>Felipe Concha</strong>, fundador de Bison, ingeniero civil y PhD en IA me dijo lo siguiente a través de LinkedIn (he pedido permiso para hacerlo público), después de leerse mi artículos sobre el <a href="https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/"><strong>prompt tracking</strong></a>:<img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/promtp-tracking-sample-1024x577.avif" alt="Promtp tracking sample" width="1024" height="577" class="alignnone wp-image-3546 size-large" srcset="https://natzir.com/wp-content/uploads/2026/05/promtp-tracking-sample-1024x577.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/promtp-tracking-sample-350x197.avif 350w, https://natzir.com/wp-content/uploads/2026/05/promtp-tracking-sample-768x432.avif 768w, https://natzir.com/wp-content/uploads/2026/05/promtp-tracking-sample-1536x865.avif 1536w, https://natzir.com/wp-content/uploads/2026/05/promtp-tracking-sample.avif 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></li>
<li>El segundo es el uso como sistema de alarma. Hay clientes y consultores que compran trackers sabiendo sus limitaciones, y los usan como <em>tripwire</em> para detectar cambios bruscos. Una tool que detecta que tu marca ha desaparecido del 80% de los prompts donde antes aparecía tiene valor diagnóstico aunque el score absoluto sea ruidoso. Pero hay que hacerlo bien <a href="https://www.linkedin.com/posts/natzir_y-esta-es-jamigas-y-jamigos-la-raz%C3%B3n-ugcPost-7460697959538810880-Wwsf?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAWweUABAQwHCc1HpALFMH56jszgmwd3cqI">porque si no es muy fácil de manipular</a>.<img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/prompt-tracking-manipulation-1024x538.webp" alt="Prompt tracking manipulation" width="1024" height="538" class="alignnone size-large wp-image-3471" srcset="https://natzir.com/wp-content/uploads/2026/05/prompt-tracking-manipulation-1024x538.webp 1024w, https://natzir.com/wp-content/uploads/2026/05/prompt-tracking-manipulation-350x184.webp 350w, https://natzir.com/wp-content/uploads/2026/05/prompt-tracking-manipulation-768x403.webp 768w, https://natzir.com/wp-content/uploads/2026/05/prompt-tracking-manipulation-1536x806.webp 1536w, https://natzir.com/wp-content/uploads/2026/05/prompt-tracking-manipulation.webp 1800w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></li>
<li>El tercero es la <em>mental availability</em>. Si lo que cuenta para el crecimiento de marca es estar presente en la mente del consumidor en el momento de compra, y los LLMs están sustituyendo cada vez más a la búsqueda, entonces estar presente en las respuestas de los LLMs sí afecta a esa disponibilidad mental.</li>
</ol>
<p>Pero ¿dónde se rompe? Yo lo veo en otros tres puntos.</p>
<ol>
<li>El valor direccional solo se sostiene si la metodología se mantiene constante, y las tools cambian modelos, prompts y APIs constantemente. Eso rompe la base sobre la que estás comparando. Yo he trakeado los mismos prompts en 3 tools distintas y los trends no eran consistentes.</li>
<li>El uso como sistema de alarma solo funciona si el comprador sabe ignorar los scores absolutos y mirar solo cambios bruscos. Pero la mayoría del mercado no compra así, porque estas tools se venden prometiendo justo lo contrario, medición precisa de tu visibilidad y el que puedas hacer algo accionable con esa información.</li>
<li>¿Las herramientas actuales miden <em>mental availability</em> o miden algo mucho más estrecho, como presencia en <em>N</em> prompts sintéticos sin contexto de usuario real? Que la <em>mental availability</em> cuenta nadie lo discute. La crítica es a cómo se está midiendo y a cómo se vende lo medido.</li>
</ol>
<h2>El SaaS martech está diseñado para vender certidumbre</h2>
<p>MarTech publicó en febrero de 2026 <a href="https://martech.org/the-2-million-martech-procurement-mistake-hiding-in-plain-sight/">un análisis de por qué las empresas malgastan 2 millones de dólares en herramientas mal compradas</a>. Las causas que identificaron son: c<strong>ompras impulsadas por FOMO, decisiones siladas, y demos diseñadas para que la urgencia supere a la claridad operacional</strong>. <a href="https://tips.mattwolach.com/the-psychology-of-selling-understanding-buyer-behavior-in-saas/">Una guía sobre la psicología de venta de SaaS</a> describe cómo se usan promociones limitadas, accesos beta y mensajes de "los líderes ya están ahí" para activar el FOMO en compradores corporativos.</p>
<p>Quiero pensar que estos mercados no se sostienen porque el comprador sea irracional. <strong>Se sostienen porque el comprador saca algo real de la compra (defensa ante el <em>board</em>, narrativa para el cliente, menos ansiedad) aunque la señal técnica sea débil</strong>. Funciona así porque el mercado opera dentro de sus límites. La crítica es que esa utilidad subjetiva tiene un gasto escondido, que es el de la mala asignación de presupuesto.</p>
<p>A esto se suma un incentivo que oigo mucho internamente. <strong>En muchas empresas el bonus anual depende de haber lanzado iniciativas de IA</strong>, incluida la contratación de tools, para mejorar eficiencia y procesos. El comprador también está presionado desde arriba, y una tool de prompt tracking marca esa casilla rápido.</p>
<h2>El funnel como historia que nos contamos</h2>
<p>El funnel lineal <em>awareness-consideration-decision</em> tampoco existe en la realidad. <strong>McKinsey</strong> publicó hace más de una década su <em>consumer decision journey</em> mostrando que el viaje real funciona como un bucle. Los consumidores entran, salen, vuelven, comparan, abandonan y reanudan.</p>
<p><a href="https://www.aidigital.com/blog/the-funnel-is-a-maze-rethinking-strategy-in-2025">Un análisis reciente de AI Digital</a> recoge las posiciones de <strong>BCG</strong> y <strong>Edelman</strong>, que describen <strong>el comportamiento de compra como demasiado dinámico para un modelo lineal y la compra como el inicio de una relación</strong>, no su final. <strong>Salesforce</strong> reporta que el 73% de los compradores B2B esperan que el vendedor entienda sus necesidades antes de la primera conversación.</p>
<p><strong>El funnel sobrevive en las organizaciones porque cumple una función política</strong>. Es un lenguaje compartido entre departamentos. Es una forma de repartir presupuesto y es una manera de dividir KPIs entre equipos. Cuando desmontas el funnel, desmontas la estructura organizativa que se monta encima, y eso cuesta más que mantener la historia.</p>
<h2>La paradoja de la abundancia de datos</h2>
<p><strong>Más datos no implica mejores decisiones</strong>, y está documentado en la literatura: parálisis por análisis.</p>
<p><a href="https://www.logarithmic.com/perspectives/the-measurement-paralysis-crisis-why-perfect-attribution-kills-growth">Logarithmic Perspectives publicó en febrero de 2026 un análisis</a> donde argumenta que la era de la abundancia de medición ha producido decisiones más lentas y más debate. Una investigación citada por <a href="https://moosend.com/blog/analysis-paralysis/">Moosend sobre analysis paralysis</a> muestra que el 78% de las personas se sienten abrumadas por la cantidad de fuentes de datos.</p>
<p>El estudio que llevo citando 14 años en mis clases de CRO es de la mermelada de <strong>Iyengar</strong> y <strong>Lepper</strong>, citado en <a href="https://www.cmswire.com/digital-marketing/data-overload-the-silent-saboteur-in-your-customer-data-strategy/">un análisis de CMSWire sobre saturación de datos</a>, que mostró que cuando se ofrecían 24 sabores de mermelada solo el 3% compraba, pero cuando se ofrecían 6 sabores el 30% compraba.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/experimento-mermelada-paradoja-eleccion-1024x576.png" alt="Experimento mermelada paradoja eleccion" width="1024" height="576" class="alignnone size-large wp-image-3477" srcset="https://natzir.com/wp-content/uploads/2026/05/experimento-mermelada-paradoja-eleccion-1024x576.png 1024w, https://natzir.com/wp-content/uploads/2026/05/experimento-mermelada-paradoja-eleccion-350x197.png 350w, https://natzir.com/wp-content/uploads/2026/05/experimento-mermelada-paradoja-eleccion-768x432.png 768w, https://natzir.com/wp-content/uploads/2026/05/experimento-mermelada-paradoja-eleccion-1536x864.png 1536w, https://natzir.com/wp-content/uploads/2026/05/experimento-mermelada-paradoja-eleccion.png 1672w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h2>La formación como reproductor del problema</h2>
<p>El problema empieza antes del marketing. <strong>La educación general sigue funcionando con un modelo bastante taylorista</strong>, que nos programa para entornos predecibles donde hay una respuesta correcta. Es otro melón que no voy a abrir aquí. Pero la formación reglada en marketing y comunicación viene del mismo sitio y sigue enseñando ese mismo modelo de mundo predecible. <strong>Y a esto se suma que en marketing falta conocimiento técnico de base</strong>, lo que deja al profesional sin herramientas para auditar la metodología de las tools que compra.</p>
<p><strong>Mark Ritson</strong> lleva años hablando de "tactification" como problema de la disciplina. En <a href="https://www.marketingweek.com/ritson-sharp/">una entrevista con Marketing Week junto a Byron Sharp</a> describe la obsesión con la ejecución sin entender lo estratégico. En su <a href="https://www.thecmoshow.impactinstitute.com.au/episodes/cmo-show-mark-ritson-on-marketing-metrics">aparición en The CMO Show</a> dijo: <em>"you can actually have too much measurement and not enough insight"</em>.</p>
<p><strong>Sharp</strong> ataca directamente a las métricas pequeñas que no tienen impacto demostrable. En <a href="https://www.mi-3.com.au/19-08-2025/marketers-are-obsessed-measuring-all-these-little-things-have-little-no-impact">su intervención de 2025 al recoger el Sir Charles McGrath Award</a> dijo que <strong>los marketers están obsesionados con medir cosas pequeñas que no tienen casi ningún impacto</strong>.</p>
<p>Además, Sharp y Ritson critican el <em>performance marketing</em> en favor de <em>reach</em> y <em>mental availability</em>, y el prompt tracking no es exactamente lo que tienen en el punto de mira, pero estas tools podrían aprender mucho de esto.</p>
<p>El sector SEO viene de 20 años donde el rank tracker era la métrica reina para muchos. <a href="https://www.searchenginejournal.com/repositioning-what-seo-success-looks-like/561311/">Search Engine Journal publicó en noviembre de 2025 un análisis sobre repositioning del SEO</a> donde argumenta que las definiciones tradicionales ya no son suficientes. La inercia aquí es enorme y la razón es que <strong>rehacer el reporting es rehacer la formación, los contratos y la identidad profesional. No basta con cambiar un dashboard.</strong></p>
<h2>Cómo encajan los prompt trackers en este contexto</h2>
<p>Si juntas las piezas, el modelo de negocio del prompt tracker se entiende bastante bien. Una herramienta puede venderse incluso cuando su validez técnica es débil, siempre que cumpla tres condiciones. Que el número sea lo suficientemente estable para que parezca señal. Que la metodología sea lo suficientemente técnica para que el comprador no pueda cuestionarla. Y que la narrativa de venta active el FOMO suficiente para que decir que no parezca arriesgado profesionalmente.</p>
<p>Hay aproximaciones más sofisticadas, que son las que yo hago con mis propios pipelines. <strong>El problema es que o falta el conocimiento técnico para construirlas, o las tools que podrían aplicarlas no lo hacen porque les rompería el margen</strong>. El resultado es que la mayoría del dinero se mueve en la zona donde la promesa de medición está más alejada de la realidad técnica.</p>
<h2>¿Qué cambiaría esta dinámica?</h2>
<p><strong>¿Qué pasará con prompt trackers cuando los datos de primera parte se generalicen?</strong> Cuando Google extienda Search Console a AI Overviews y AI Mode, el visibility score modelado va a tener que dar otra cosa, ORM, sentimiento de marca, panel de brand marketing. Algo más cercano a un dashboard de gestión de reputación que a un indicador de visibilidad irreal.</p>
<p>Cuando llegó Google Search Console en 2015, las herramientas de tercera parte no desaparecieron, pasaron a tener que justificarse contra el dato real y aportar valor más allá del mismo.</p>
<p>Pero si bien es cierto que estas tools daban datos que correlacionaban con los ingresos. Si estas tools se compran tal cual es, en parte, porque NO hay perfiles técnicos en el proceso de decisión.</p>
<p>Para mejorar la decisión individual de una compra influye la diversidad cognitiva en la sala donde se decide. El <a href="https://ideas.repec.org/a/eee/eurman/v35y2017i4p430-439.html">estudio de Meissner y Wulf en European Management Journal en 2017</a> muestra que <strong>tener perfiles distintos en el equipo de decisión sí reduce la ilusión de control. Si en la mesa hay alguien que entiende estadística, alguien que entiende el negocio, y alguien que entiende cómo funcionan los LLMs por dentro, la conversación cambia.</strong></p>
<p>El CFO se cita a menudo como el mecanismo de corrección. Posiblemente no va a fulminar el prompt tracking, pero con los presupuestos más apretados desde 2023, va a empezar a pedirle lo mismo que le pide al resto de tools del <em>stack</em>.</p>
<h2>Lo que queda</h2>
<p>La tool en sí no es el problema. <strong>Lo que ha hecho la IA es subir la incertidumbre, y la industria que vive de ofrecer reducción de incertidumbre se ha frotado las manos</strong>. Las tools de prompt tracking son la respuesta perfecta a un problema que ya existía antes. El ecosistema está en una fase temprana donde la promesa de medición va por delante de la metodología real, y el dinero fluye hacia donde la promesa es más pomposa. Y ver el muro de LinkedIn plagado de publicaciones pagadas a influencers que cuentan mentiras no ayuda. Si pagas a un influencer, lo callas. Es por ello que yo no tengo contratos con ninguna herramienta. <strong>Hasta 8 prompt tackers me han ofrecido dinero por hablar bien de ellos, los he rechazado a todos</strong>.</p>
<p>No sólo eso, herramientas como Profound parece ser que pagan hasta 250€ por una review positiva en G2:</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/05/airops-influencers-try-profound-g2-paid-reviews-1024x750.avif" alt="Airops influencers try profound g2 paid reviews" width="1024" height="750" class="alignnone wp-image-3540 size-large" srcset="https://natzir.com/wp-content/uploads/2026/05/airops-influencers-try-profound-g2-paid-reviews-1024x750.avif 1024w, https://natzir.com/wp-content/uploads/2026/05/airops-influencers-try-profound-g2-paid-reviews-350x256.avif 350w, https://natzir.com/wp-content/uploads/2026/05/airops-influencers-try-profound-g2-paid-reviews-768x563.avif 768w, https://natzir.com/wp-content/uploads/2026/05/airops-influencers-try-profound-g2-paid-reviews.avif 1500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Mientras tanto, el trabajo del consultor honesto consiste en no fingir certezas que no tiene, en <a href="https://natzir.com/analitica-web/estado-de-medibilidad-del-trafico-ia/">distinguir entre lo que se puede medir y lo que se está midiendo</a>, y en preguntarse, antes de comprar o recomendar una tool, qué decisión concreta de negocio va a cambiar con ese dato. Si la respuesta es "ninguna", la tool es humo. Si la respuesta es algo concreto, conviene comprobar si el dato que entrega tiene la calidad necesaria para sostener esa decisión. Es analítica básica aplicada a una industria que se está construyendo más rápido de lo que se está entendiendo.</p>
<p><iframe width="476" height="400" src="https://www.slideshare.net/slideshow/embed_code/key/zLgmXzaYbSL9CM?hostedIn=slideshare&amp;page=upload" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/el-negocio-de-la-certidumbre-prefabricada/">El negocio de la certidumbre prefabricada</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/posicionamiento-buscadores/el-negocio-de-la-certidumbre-prefabricada/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sistrix Led Ticker - Montaje de Raspberry Pi + LED Matrix Panel [Tutorial]</title>
		<link>https://natzir.com/posicionamiento-buscadores/sistrix-led-ticker-montaje-de-raspberry-pi-led-matrix-panel/</link>
					<comments>https://natzir.com/posicionamiento-buscadores/sistrix-led-ticker-montaje-de-raspberry-pi-led-matrix-panel/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Mon, 30 Mar 2026 11:18:49 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[seo-tecnico]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3404</guid>

					<description><![CDATA[<p>Llevo desde 2014 trabajando con SISTRIX como consultor SEO. Es la herramienta que abro cada mañana para ver cómo van los proyectos de mis clientes. Y un día, buscando un regalo para un amigo nerd en Etsy, vi paneles LED con los stock de bolsa y de cripto, y pensé: ¿y si tuviera un panel [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/sistrix-led-ticker-montaje-de-raspberry-pi-led-matrix-panel/">Sistrix Led Ticker - Montaje de Raspberry Pi + LED Matrix Panel [Tutorial]</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Llevo desde 2014 trabajando con <a href="https://www.sistrix.es">SISTRIX</a> como consultor SEO. Es la herramienta que abro cada mañana para ver cómo van los proyectos de mis clientes. Y un día, buscando un regalo para un amigo nerd en Etsy, vi paneles LED con los stock de bolsa y de cripto, y pensé: ¿y si tuviera un panel LED en mi escritorio que me mostrara la visibilidad de mis clientes rotando automáticamente?</p>
<p>Era técnicamente posible, pero también sabía que me iba a meter en un marrón, hace años ya hice proyectos con la Raspberry, con ESP32 e incluso me he hecho mods para el Flipper, pero eran un dolor de cabeza. Así que la idea se quedó en el cajón durante años, cogiendo polvo junto con esos juguetitos.</p>
<p>Hasta que empecé a trabajar con Claude Code en noviembre.</p>
<p>En este <strong>tutorial</strong>, os cuento el proceso de desarrollo y montaje del <strong>panel LED Waveshare con la Raspberry Pi</strong>. El proyecto lo he hecho open source y el <a href="https://github.com/natzir/sistrix-led-ticker">código lo tenéis aquí</a>.<br />
<span id="more-3404"></span></p>
<h2>Qué hace el panel</h2>
<p>Un panel LED RGB de 64x32 píxeles controlado por una Raspberry Pi 4, que se conecta a la API de SISTRIX y va rotando dominios mostrando: label, valor de visibilidad, cambio porcentual, país, modo (weekly/daily) y una sparkline con la evolución. Además de una brand card personalizable con logo en pixel art y mensaje con scroll animado.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/03/sistrix-led-ticker-matrix-led-raspberry-pi-1024x768.webp" alt="Sistrix led ticker matrix led raspberry pi" width="1024" height="768" class="alignnone size-large wp-image-3435" srcset="https://natzir.com/wp-content/uploads/2026/03/sistrix-led-ticker-matrix-led-raspberry-pi-1024x768.webp 1024w, https://natzir.com/wp-content/uploads/2026/03/sistrix-led-ticker-matrix-led-raspberry-pi-350x263.webp 350w, https://natzir.com/wp-content/uploads/2026/03/sistrix-led-ticker-matrix-led-raspberry-pi-768x576.webp 768w, https://natzir.com/wp-content/uploads/2026/03/sistrix-led-ticker-matrix-led-raspberry-pi.webp 1500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Todo se gestiona desde un panel web accesible en tu red local. El panel incluye un simulador LED que replica exactamente lo que se ve en la pantalla física, así que puedes probarlo todo sin hardware.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; margin-bottom: 1.5em;"><iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" loading="lazy" src="https://www.youtube-nocookie.com/embed/_o9EX-hECi4?si=H1nclc-SmquILYOh&amp;controls=1&amp;rel=0&amp;modestbranding=1&amp;iv_load_policy=3&amp;fs=0&amp;playsinline=1" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="allowfullscreen"><br />
</iframe><br />
<!-- Bloquea el logo de YouTube en la esquina superior derecha --></p>
<div style="position: absolute; top: 0; right: 0; width: 80px; height: 40px; z-index: 10;"></div>
<p><!-- Bloquea "Ver en YouTube" en la barra inferior --></p>
<div style="position: absolute; bottom: 0; right: 0; width: 150px; height: 40px; z-index: 10;"></div>
</div>
<p>Algunas cosas que me gustan:</p>
<ul>
<li><strong>Editor visual de layout</strong>: arrastra y redimensiona cada elemento directamente sobre el simulador</li>
<li><strong>Caché inteligente</strong>: minimiza créditos API consultando solo cuando hay datos nuevos (daily tras medianoche, weekly tras el lunes)</li>
<li><strong>Sincronización web &lt;-&gt; LED</strong>: slide actual y estado on/off sincronizados en tiempo real</li>
<li><strong>Botón físico</strong> para encender/apagar sin sacar el móvil</li>
<li><strong>6 idiomas</strong>, responsive, accesible (WCAG 2.1 AA)</li>
<li><strong>Colores</strong>: hex, rainbow y degradados de dos colores — todo configurable</li>
</ul>
<p>Todo el código va en dos archivos Python: <code>display.py</code> (driver LED, ~1.000 líneas) y <code>web_panel.py</code> (panel web con simulador, ~3.700 líneas). Sin frameworks, sin npm, es vanilla JS puro. El frontend va inline dentro del Flask. Si el proyecto fuera más grande ya me lo replantearía por mantenimiento.</p>
<h2>El hardware: Raspberry Pi + LED Matrix Panel</h2>
<p>Llevan enlaces son de afiliado de Amazon, si compras a través de ellos me llevo una pequeña comisión, que me lo he currado <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/03/materiales-panel-led-matrix-waveshare-raspberry-pi.webp" alt="Materiales panel led matrix waveshare raspberry pi" width="646" height="484" class="alignnone size-full wp-image-3408" srcset="https://natzir.com/wp-content/uploads/2026/03/materiales-panel-led-matrix-waveshare-raspberry-pi.webp 646w, https://natzir.com/wp-content/uploads/2026/03/materiales-panel-led-matrix-waveshare-raspberry-pi-350x262.webp 350w" sizes="auto, (max-width: 646px) 100vw, 646px" /></p>
<h3>Imprescindible</h3>
<ul>
<li><a href="https://amzn.to/4s3yoKr" target="_blank" rel="nofollow noopener">Raspberry Pi 4 4GB Starter Kit</a> - Importante: la Pi 5 <strong>no es compatible</strong> con el Adafruit Bonnet. Tiene que ser Pi 4 o anterior (quizás habría que tocar <code>--led-slowdown-gpio</code> por temas de rendimiento).</li>
<li><a href="https://amzn.to/4bDSEgK" target="_blank" rel="nofollow noopener">Panel LED Waveshare 64x32 P3</a> - 192x96mm, pitch 3mm (P3 = 3mm entre cada LED).</li>
<li><a href="https://amzn.to/4bUhBDx" target="_blank" rel="nofollow noopener">Adafruit RGB Matrix Bonnet</a> - HAT que conecta la Pi al panel LED vía GPIO. Se enchufa directamente, sin soldar.</li>
</ul>
<h3>Opcional (pero recomendado)</h3>
<ul>
<li><a href="https://amzn.to/4dR8sOB" target="_blank" rel="nofollow noopener">Botón pulsador Gebildet 12mm</a> - Acero inoxidable con LED azul. Encender/apagar sin tocar el móvil.</li>
<li><a href="https://amzn.to/47zmeSe" target="_blank" rel="noopener">Kit de soldador 60W</a>- Para soldar los cables del botón a los pines GPIO.</li>
<li><a href="https://amzn.to/4dPPqrS" target="_blank" rel="nofollow noopener">Broca escalonada Flintronic</a> - Para agujeros limpios en la carcasa sin partir el plástico.</li>
<li><strong>Carcasa impresa en 3D</strong> - Pedí a un amigo que me imprimiera una a medida (192x96mm, profundidad 13-15mm). Si no tienes impresora, busca en Etsy "64x32 P3 LED panel case".</li>
<li><a href="https://amzn.to/4uYcMlb" target="_blank" rel="nofollow noopener">Juego de tornillos M3 (560 piezas)</a> - Viene de todo: varios largos, tuercas y arandelas. Así que da igual la profundidad de tu caja, seguro que hay alguno que encaja.</li>
<li><a href="https://amzn.to/4rZKp3y" target="_blank" rel="nofollow noopener">Fuente de alimentación 5V 3A</a> - Con conector barrel jack 5.5x2.1mm. Es opcional si usas brillo bajo (&lt;50%), pero recomendada. Sin ella, el panel se alimenta por los GPIO de la Pi, que aguantan hasta ~1.2A. A brillo alto o pantallas muy claras puede causar reinicios. En esta configuración he probado que no es necesario.</li>
</ul>
<h2>Montaje paso a paso</h2>
<p><strong>1. Prepara la carcasa:</strong> usa la broca escalonada para los agujeros. Yo hice uno de 12mm para el botón y otro más pequeño para el cable flat y la alimentación. La escalonada para mí es clave porque una broca normal parte el plástico, esta va ajustando el diámetro poco a poco. También se podría hacer con un hierro caliente o un soldador, pero no es lo mismo.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/03/taladrar-carcasa-matriz-led-broca-escalonada.webp" alt="Taladrar carcasa matriz led broca escalonada" width="1008" height="756" class="alignnone size-full wp-image-3410" srcset="https://natzir.com/wp-content/uploads/2026/03/taladrar-carcasa-matriz-led-broca-escalonada.webp 1008w, https://natzir.com/wp-content/uploads/2026/03/taladrar-carcasa-matriz-led-broca-escalonada-350x263.webp 350w, https://natzir.com/wp-content/uploads/2026/03/taladrar-carcasa-matriz-led-broca-escalonada-768x576.webp 768w" sizes="auto, (max-width: 1008px) 100vw, 1008px" /></p>
<p><strong>2. Encaja el Bonnet en la Pi:</strong> presiona hasta que encaje en los pines GPIO.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/03/matrix-bonnet-to-raspberry-pi.webp" alt="Adafruit RGB Matrix Bonnet to raspberry pi" width="756" height="1008" class="alignnone size-full wp-image-3413" srcset="https://natzir.com/wp-content/uploads/2026/03/matrix-bonnet-to-raspberry-pi.webp 756w, https://natzir.com/wp-content/uploads/2026/03/matrix-bonnet-to-raspberry-pi-263x350.webp 263w" sizes="auto, (max-width: 756px) 100vw, 756px" /></p>
<p><strong>3. Cablea el botón (opcional):</strong> un terminal a GPIO 19 (pin 35), el otro a cualquier GND. No importa la polaridad. Yo lo puse en el pin 39 después de 2 fallos como se puede observar (resulta que la matrix tiene ocupados casi todos los pins).</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/03/soldar-boton-pulsador-gebildet-12mm-GPIO-19-pin-35-GND-pin-39.webp" alt="Soldar boton pulsador gebildet 12mm gpio 19 pin 35 gnd pin 39" width="1008" height="756" class="alignnone size-full wp-image-3417" srcset="https://natzir.com/wp-content/uploads/2026/03/soldar-boton-pulsador-gebildet-12mm-GPIO-19-pin-35-GND-pin-39.webp 1008w, https://natzir.com/wp-content/uploads/2026/03/soldar-boton-pulsador-gebildet-12mm-GPIO-19-pin-35-GND-pin-39-350x263.webp 350w, https://natzir.com/wp-content/uploads/2026/03/soldar-boton-pulsador-gebildet-12mm-GPIO-19-pin-35-GND-pin-39-768x576.webp 768w" sizes="auto, (max-width: 1008px) 100vw, 1008px" /></p>
<p><strong>4. Conecta el cable flat:</strong> del panel al conector HUB75 del Bonnet. Solo hay una orientación (tiene muesca).</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/03/conecta-cable-flat-waveshare-to-matrix-bonnet.webp" alt="Conecta cable flat waveshare to matrix bonnet" width="1007" height="755" class="alignnone size-full wp-image-3419" srcset="https://natzir.com/wp-content/uploads/2026/03/conecta-cable-flat-waveshare-to-matrix-bonnet.webp 1007w, https://natzir.com/wp-content/uploads/2026/03/conecta-cable-flat-waveshare-to-matrix-bonnet-350x262.webp 350w, https://natzir.com/wp-content/uploads/2026/03/conecta-cable-flat-waveshare-to-matrix-bonnet-768x576.webp 768w" sizes="auto, (max-width: 1007px) 100vw, 1007px" /></p>
<p><strong>5. Conecta la alimentación del panel (opcional):</strong> fuente 5V al barrel jack del Bonnet. Yo no tenía adaptador barrel jack de la potencia que necesita el panel, así que me monté uno con un cargador USB de un Meizu antiguo de 5V 3A, un cable barrel jack 5.5x2.1mm que corté de otra fuente de 12V que no usaba, y un cable USB &lt;-&gt; micro USB que también corté y soldé. Funciona perfecto y me ahorré el dinero y esperar al envío. Si no te va hacer el MacGyver, compra la fuente directamente. <strong>UPDATE</strong>: He visto que funciona sin peligro y sin necesidad de esta fuente extra, así que mejor, un cable menos.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/03/alimentacion-5v-3a-barrel-jack-55m-1024x768.webp" alt="Alimentacion 5v 3a barrel jack 5,5m" width="1024" height="768" class="alignnone size-large wp-image-3423" srcset="https://natzir.com/wp-content/uploads/2026/03/alimentacion-5v-3a-barrel-jack-55m-1024x768.webp 1024w, https://natzir.com/wp-content/uploads/2026/03/alimentacion-5v-3a-barrel-jack-55m-350x263.webp 350w, https://natzir.com/wp-content/uploads/2026/03/alimentacion-5v-3a-barrel-jack-55m-768x576.webp 768w, https://natzir.com/wp-content/uploads/2026/03/alimentacion-5v-3a-barrel-jack-55m.webp 1428w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>6. Enciende la Pi:</strong> USB-C. Si todo está bien, el panel se enciende en segundos.</p>
<p><img decoding="async" loading="lazy" src="https://natzir.com/wp-content/uploads/2026/03/conecta-fuente-alimentacion-5V-al-barrel-jack-del-bonnet-787x1024.webp" alt="Conecta fuente alimentacion 5v al barrel jack del bonnet" width="787" height="1024" class="alignnone size-large wp-image-3421" srcset="https://natzir.com/wp-content/uploads/2026/03/conecta-fuente-alimentacion-5V-al-barrel-jack-del-bonnet-787x1024.webp 787w, https://natzir.com/wp-content/uploads/2026/03/conecta-fuente-alimentacion-5V-al-barrel-jack-del-bonnet-269x350.webp 269w, https://natzir.com/wp-content/uploads/2026/03/conecta-fuente-alimentacion-5V-al-barrel-jack-del-bonnet-768x999.webp 768w, https://natzir.com/wp-content/uploads/2026/03/conecta-fuente-alimentacion-5V-al-barrel-jack-del-bonnet.webp 900w" sizes="auto, (max-width: 787px) 100vw, 787px" /></p>
<p><strong>7. Fija el panel a la caja:</strong> una vez todo funciona desconecta los cables y pásalos por los agujeros. Atornilla con tornillos M3 por las esquinas.</p>
<h2>Cómo instalarlo</h2>
<p><span>El proyecto lo he hecho open source y está en </span><a href="https://github.com/natzir/sistrix-led-ticker" target="_blank" rel="noopener">GitHub</a><span>. Si quieres montarlo:</span></p>
<ol>
<li>Instala Raspberry Pi OS Lite 64-bit en tu Pi 4</li>
<li>Clona el repositorio y ejecuta <code>bash setup.sh</code></li>
<li>Instala el driver LED desde <a href="https://github.com/hzeller/rpi-rgb-led-matrix" target="_blank" rel="noopener">hzeller/rpi-rgb-led-matrix</a></li>
<li>Abre <code>http://raspberrypi.local:5001</code> desde cualquier dispositivo en tu red</li>
<li>Configura tu API key de SISTRIX, añade dominios, y ya está</li>
</ol>
<p>Sin hardware, puedes probar solo el simulador:</p>
<pre><code>pip install flask pillow requests
python3 web_panel.py</code></pre>
<p>Abre <code>http://localhost:5001</code> y listo.</p>
<h2>Problemas que me encontré</h2>
<h3>El drama del botón y los GPIO</h3>
<p>Conecté el botón al GPIO 26. Sin el panel LED funcionaba perfecto. Pero en cuanto arranqué el driver del panel... dejó de funcionar. El Bonnet usa casi todos los GPIO, y el 26 es una línea del multiplexor. Probé el 25 y mismo problema.</p>
<p>Al final, el <strong>GPIO 19</strong> (pin 35) estaba libre. Pero no acabó ahí... el botón apagaba y encendía inmediatamente, o solo funcionaba una vez. El problema era la detección por nivel y la solución fue <strong>detección por flanco de subida</strong> (transición LOW-&gt;HIGH al soltar), que genera exactamente un evento por pulsación.</p>
<h3>El blanco que salía naranja</h3>
<p>En el simulador web los textos se veían blancos puros. En el LED, anaranjados. Los LEDs rojos y verdes de estos paneles tienen más brillo que los azules. La solución que apliqué fue la <strong>corrección de color selectiva</strong> solo para blancos y grises (reduce R un 10%, G un 8%). Mientras que los colores saturados no se tocan.</p>
<h3>El brillo y los PWM</h3>
<p>Con brillo a 60, muchos píxeles del mismo número se veían más brillantes y un shimmer visible en dígitos grandes. El punto ideal que he encontrado es <strong>brillo 42, PWM bits 8</strong> (pwm_lsb_nanoseconds 300). Degradados suaves, sin shimmer, y suficiente brillo de día sin deslumbrar de noche. Quizás con un panel más profesional habría que cambiar estos ajustes.</p>
<h3>El SSH que se rompió solo</h3>
<p>Un día el SSH se colgaba al conectar y el <code>.bashrc</code> imprimía texto en sesiones no interactivas, rompiendo SCP/SFTP. Tuve que conectar monitor y teclado a la Pi para ver que ocurría. Así que lo mejor es envolver los echos de tu .bashrc en <code>if [[ $- == *i* ]]</code>.</p>
<h3>La sincronización</h3>
<p>Esto parece trivial pero fue lo más difícil de resolver. Hay dos procesos independientes: el<span> </span><code>display.py</code><span> </span>que controla el panel LED (corre como root para acceder a GPIO) y el<span> </span><code>web_panel.py</code><span> </span>que sirve el simulador en el browser. Cada uno tiene su propio loop de rotación, su propio estado, su propia idea de qué slide está mostrando. Los problemas fueron apareciendo uno a uno:</p>
<ul>
<li><strong>Cambios que tardaban 60 minutos:</strong><span> </span>quitabas un dominio en la web y el LED no se enteraba hasta el siguiente refresco API. Ahora detecta cambios en la lista de dominios en cada ciclo y recarga desde caché al instante.</li>
<li><strong>Fetch bloqueante:</strong><span> </span>cuando el display hacía una llamada API a SISTRIX, el panel se congelaba durante varios segundos en el último frame (normalmente la brand card). Lo movimos a un thread en background.</li>
<li><strong>Rotación desincronizada:</strong><span> </span>el panel web tenía su propio timer de rotación independiente del LED. Ahora el web es "esclavo" del LED cuando el servicio está activo y sigue su slide en tiempo real (3 secs de delay) via un fichero de estado compartido.</li>
<li><strong>Edición interrumpida:</strong><span> </span>estabas editando la brand card en el web y de repente el slide cambiaba porque el LED seguía rotando. Ahora el modo edición pausa toda la sincronización.</li>
<li><strong>Encendido desincronizado:</strong><span> </span>le dabas a ON y cada uno empezaba por un slide diferente. Ahora ambos arrancan desde el slide 0.</li>
<li><strong>Botón muerto en brand card:</strong><span> </span>el botón físico GPIO no respondía mientras se mostraba la brand card, porque el loop de scroll no lo estaba comprobando.</li>
</ul>
<p>Cada uno de estos bugs parecía simple, pero requería entender el flujo completo entre dos procesos, un fichero de config compartido, un state file, timers de JavaScript, un loop de Python, y un botón físico. La IA resolvía cada bug individualmente, pero no veía el sistema y era como jugar al Whac-A-Mole. Yo tenía que detectar los problemas probando en el hardware real y explicarle qué estaba pasando.</p>
<h3>Los bugs de seguridad</h3>
<p>Esto me preocupó especialmente porque el código generado por la IA tenía MUCHOS agujeros:</p>
<ul>
<li><strong>API key expuesta:</strong> el endpoint <code>/api/config</code> devolvía la clave de SISTRIX al frontend en texto plano.</li>
<li><strong>XSS:</strong> los nombres de dominio se insertaban sin escapar. Un <code>&lt;script&gt;</code> en el label se ejecutaba.</li>
<li><strong>Sin cabeceras de seguridad:</strong> ni <code>X-Content-Type-Options</code>, ni <code>X-Frame-Options</code>, ni CSP.</li>
<li><strong>Sin validación de entrada:</strong> un label podía ser cualquier cosa sin sanitización.</li>
</ul>
<p>La IA genera código funcional rápido, pero <strong>la seguridad NO está en sus prioridades por defecto</strong>. ¡Hay que auditarlo todo!</p>
<h3>Los caracteres que faltaban (y mi hija)</h3>
<p>El panel usa fuentes bitmap propias donde cada carácter es una rejilla de píxeles definida a mano. Claude generó el alfabeto y los números. Todo bien hasta que mi hija mayor (7) quiso poner el nombre de su hermana y ella en la tarjeta personalizada tal que así: <em>"Chloe &amp; Lía"</em>.</p>
<p>Con eso vimos que faltaban acentos y <code>$</code>, <code>%</code>,<code>&amp;</code>, <code>(</code>, <code>)</code>, <code>=</code>, <code>#</code>, <code>@</code>... Nos pusimos los dos con papel cuadriculado a diseñar los caracteres de 3x5 y 5x7 píxeles. Ella rellenaba cuadraditos, yo los traducía a bits y al final acabó haciéndolo ella también. Además, corregimos letras como la S, la <code>X</code> y la <code>W</code> que en 5x7 le quedaban horribles a Claude y los corregimos a mano sobre papel. Esta parte la podría haber delegado a Claude, pero entonces habría perdido una oportunidad de enseñarle a mi peque cómo funciona una pantalla.</p>
<p>También fue idea suya lo del <strong>color rainbow </strong>y de ahí salieron también los <strong>degradados de dos colores</strong> configurables.</p>
<h2>Desarrollar con IA: lo que he aprendido</h2>
<p><a href="https://www.youtube.com/watch?v=dw1Jfkt8ACs&amp;t=240s">Llevo usando IA generativa desde que tuve acceso a la beta de GPT-3 en 2020</a>. Este panel lo he desarrollado íntegramente con Claude Code. Es decir, esto no es un experimento ni mi primera vez, es mi forma de trabajar desde hace años. Pero lo que hizo Anthropic con Opus en noviembre del año pasado es un antes y un después. Así que no me habría embarcado este proyecto sin ese salto.</p>
<p>En febrero de 2025, Andrej Karpathy acuñó el término "vibe coding" que significa "aceptar todo lo que genera el modelo sin leer los diffs y olvidarte de que el código existe". Un año después él mismo se desdijo y ahora prefiere "agentic engineering". Normal... porque lo de dejarte llevar por las vibes funciona para proyectos de usar y tirar de fin de semana, no para producción.</p>
<p>A mí el término nunca me gustó. Lo que hago se parece más a lo que Kent Beck llama "augmented coding". En vibe coding te da igual el código, solo quieres que funcione; en augmented coding te importa el código, los tests, la cobertura. La IA amplifica tu visión y tu capacidad de descomponer problemas, <a href="https://www.linkedin.com/pulse/la-ia-rompe-asimetr%C3%ADa-de-informaci%C3%B3n-y-eso-tiene-consecuencias-t--pyfef/">pero no reemplaza tu criterio</a>.</p>
<p>Simon Willison, cocreador de Django, lo clava cuando dice que revisar código generado por IA muchas veces es más difícil que escribirlo tú. Tienes que reconstruir la intención y pillar lo que el modelo ha ignorado. Pasas de escritor a supervisor y eso exige de mucho más criterio. Y es justamente lo que ha pasado con este proyecto.</p>
<h3>Lo que funciona bien</h3>
<p>Claude Code maneja todo el flujo desde la terminal en lenguaje natural. "Sube display.py a la Pi y reinicia el servicio" -&gt; SCP, SSH, systemctl restart. "Haz commit" -&gt;  analiza el diff, escribe un mensaje coherente, ejecuta. "El botón no funciona, mira el log" -&gt; se conecta a la Pi por SSH, lee los logs, identifica el problema, propone solución.</p>
<p>Así resolvimos el GPIO, el debounce, la detección por flancos... Yo no sabía qué pines del Bonnet estaban ocupados y él analizó el pinout y los encontró. Sin IA esto habría sido un verdadero infierno.</p>
<h3>Lo que falla</h3>
<p><strong>CSS y diseño responsive:</strong> cada cambio en la interfaz rompía algo. Movía un padding y se descuadraba el mobile. Cambiaba un color y dejaba ilegible un botón. No tenía manera de <em>ver</em> lo que hacía.</p>
<p>La solución que se me ocurrió hace unos meses para no gastar tokens de Computer Use fue meterle un <strong>Puppeteer</strong> a Claude Code. Un script para hacer capturas en desktop (1280x900) y mobile (390x844), y que Claude hacía con cada subida y que revisaba a cada cambio visual antes de subirlo. Las intervenciones por mi parte se redujeron un 80%.</p>
<p><strong>Design system:</strong> el panel tiene tokens CSS (espaciado, colores, bordes) y Claude por defecto metía valores mágicos en línea como <code>margin-top: 13px</code>, <code>color: #3a7fc2</code> ... en vez de usar las variables y cada botón era de su padre y de su madre. Tenía que estar encima constantemente aunque se lo guardara en memoria o un skill.</p>
<p><strong>Cambios no pedidos:</strong> le dices "cambia el color del texto" y de paso te mueve los números, te cambia un layout que funcionaba, o te "optimiza" algo que no estaba roto.</p>
<p><strong>Usabilidad:</strong><span> </span>la IA desarrolla funcionalidades, pero no piensa en la persona que las va a usar. Control de estados, mensajes de confirmación, flujos lógicos... nada de eso le sale solo. Si un botón debería deshabilitarse mientras se carga, no lo hace. Si una acción destructiva necesita confirmación, no la pone. Si el orden de los pasos no tiene sentido para un usuario, no lo detecta. Touch targets de 24px, modales que no caben en pantalla, formularios que se<br />
tapan con el teclado virtual... Todo eso lo pillé probando desde el móvil. <strong>Tienes que ser tú quien piense en la experiencia.</strong></p>
<p><strong>El desastre del francés:</strong> el i18n va en un objeto JavaScript enorme con las cadenas de 6 idiomas que pusimos al final. Al añadir las traducciones francesas, <strong>un acento mal escapado reventó las 3.700 líneas del archivo</strong>. Pantalla en blanco, sin errores claros y a Claude no se le ocurre otra que tabular todo el código con una RegEx inutilizando todo proyecto. Suerte que teníamos git y vuelta al estado anterior.</p>
<h3>Cuánto habría costado este proyecto sin IA asistida</h3>
<p>Usé la <a href="https://strs.grc.nasa.gov/repository/forms/cocomo-calculation/" target="_blank" rel="noopener">calculadora COCOMO de la NASA,</a> el modelo estándar de estimación de esfuerzo en ingeniería de software, para medirlo:</p>
<ul>
<li><strong>4.883 líneas de código</strong> (driver de hardware, renderizado bitmap, caché, GPIO, panel web completo con simulador, editor visual, 6 idiomas, WCAG 2.1 AA)</li>
<li><strong>Esfuerzo:</strong> 12,3 persona-mes</li>
<li><strong>Solo a tiempo completo:</strong> ~12 meses</li>
<li><strong>Coste equivalente:</strong> €100.000–140.000 a tarifa de mercado europeo</li>
</ul>
<p>Pero COCOMO en realidad está pensado para otra cosa. Sirve para equipos, documentación formal, fases de diseño, QA, gestión de proyecto. Asume que hay coordinación entre personas, reuniones, especificaciones... Nada de eso aplica aquí. Además, buena parte de las líneas son HTML/CSS/JS inline del panel web y no es lo mismo que código de sistemas. Para un proyecto personal de un solo dev, COCOMO lo sobreestima salvajemente.</p>
<p>Una estimación más realista de un desarrollador full-stack con experiencia en hardware, LEDs y Flask <strong>tardaría quizás 2-3 meses a tiempo completo sin apoyo de la IA</strong>. Yo solo soy un consultor SEO, <a href="https://gist.github.com/natzir">sé algo de código</a> pero no me dedico a ello, sin experiencia con paneles LED ni GPIO, así que probablemente 4-6 meses si pudiera dedicarme 100% a ello. Al 20-30% de dedicación, más de un año. Así que en la práctica, nunca lo habría terminado. Por eso nunca lo empecé <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Con Claude Code lo he hecho en 3 jornadas</strong>. Con bugs, con idas y venidas, con cosas que ha roto y que hemos tenido que arreglar. Pero funciona y creo que es bastante robusto. Pero quizás salte alguna movida que no me ha dado tiempo a ver cuando más gente lo use.</p>
<p>No es que la IA haga el trabajo por ti, es que proyectos que antes no merecían la pena por la relación esfuerzo/resultado, ahora sí la merecen. El umbral de lo que puedes permitirte construir ha bajado drásticamente. Pero tienes que ser tú el control de calidad, revisando cada cambio, tener git al día, auditar la seguridad, y no confiar a ciegas. Para mi esto no es vibe coding. Es ingeniería con un copiloto muy rápido al que no puedes soltar el volante, por lo menos por ahora.</p>
<p><a href="https://github.com/natzir/sistrix-led-ticker">El proyecto es open source</a>. Si lo montas, ¡cuéntamelo! me haría ilusión ver más paneles LED de SISTRIX por ahí.</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/sistrix-led-ticker-montaje-de-raspberry-pi-led-matrix-panel/">Sistrix Led Ticker - Montaje de Raspberry Pi + LED Matrix Panel [Tutorial]</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/posicionamiento-buscadores/sistrix-led-ticker-montaje-de-raspberry-pi-led-matrix-panel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Herramientas para medir visibilidad en IA: Lo que no te cuentan los Prompt Trackers</title>
		<link>https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/</link>
					<comments>https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Thu, 29 Jan 2026 17:13:49 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[inteligencia-artificial-seo]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3282</guid>

					<description><![CDATA[<p>Las herramientas para medir visibilidad en la IA (prompt trackers) prometen medir algo que es imposible medir con precisión. Para mi son el negocio de la certidumbre prefabricada. Este informe técnico examina por qué medir la visibilidad en IA es técnicamente problemático, qué dice la evidencia disponible y cómo evaluar las herramientas del mercado. Mi [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/">Herramientas para medir visibilidad en IA: Lo que no te cuentan los Prompt Trackers</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Las <strong>herramientas para medir visibilidad en la IA</strong> (prompt trackers) prometen medir algo que es imposible medir con precisión. Para mi son el <a href="https://natzir.com/posicionamiento-buscadores/el-negocio-de-la-certidumbre-prefabricada/">negocio de la certidumbre prefabricada</a>.</p>
<p>Este informe técnico examina por qué medir la visibilidad en IA es técnicamente problemático, qué dice la evidencia disponible y cómo evaluar las herramientas del mercado.</p>
<p>Mi objetivo es tratar <a href="https://es.wikipedia.org/wiki/Informaci%C3%B3n_asim%C3%A9trica">reducir la asimetría de información</a>, es decir, equilibrar la balanza y que sepas lo mismo que saben (o deberían saber) quienes te venden estas herramientas y agencias que ofrecen "GEO/AEO".</p>
<p><strong>Índice del artículo</strong></p>
<ul>
<li><a href="#que-es-visibilidad-ia">1. Qué es la visibilidad en IA y qué miden los prompt trackers</a></li>
<li><a href="#evidencia-cientifica">2. La evidencia científica</a></li>
<li><a href="#como-deciden-llms">3. Cómo deciden los LLMs qué información mostrar</a></li>
<li><a href="#no-puedes-replicar-experiencia">4. Por qué no puedes replicar la experiencia del usuario</a></li>
<li><a href="#herramientas-mercado">5. Prompt Trackers: Herramientas para medir visibilidad en IA</a></li>
<li><a href="#metricas-no-funcionan">6. Por qué las métricas de visibilidad en la IA actuales no funcionan</a></li>
<li><a href="#tracking-prompts-masivo">7. Mi apuesta: El tracking de prompts masivo</a></li>
<li><a href="#conclusion">8. Conclusión</a></li>
</ul>
<h2 id="que-es-visibilidad-ia" style="scroll-margin-top: 100px;">Qué es la visibilidad en IA y qué miden los prompt trackers</h2>
<p>La <strong>visibilidad en IA</strong> es la frecuencia y prominencia con la que una marca aparece en las respuestas de modelos de lenguaje (ChatGPT, Perplexity, DeepSeek, AI Overviews de Google, Grok, Copilot...) cuando los usuarios hacen preguntas relacionadas con su sector.</p>
<p>Los <strong>prompt trackers</strong> son herramientas que ejecutan prompts predefinidos contra estos modelos y miden si tu marca aparece, en qué posición, y con qué frecuencia comparada con competidores. Prometen responder preguntas como: ¿Me recomienda ChatGPT cuando alguien pregunta por "mejores herramientas de email marketing"? ¿Con qué frecuencia? ¿Por encima o por debajo de mi competencia?</p>
<p>El problema es que estas preguntas asumen un nivel de consistencia y replicabilidad que los LLMs, por diseño, no tienen.</p>
<p>Algo que el propio Jesse Dwyer, CCO de Perplexity, <a href="https://www.wsj.com/tech/ai/google-search-seo-ai-tactics-5efb9f99">confirma en el WSJ</a>: la búsqueda IA personaliza los resultados según el usuario que pregunta, lo que los hace difíciles de predecir y de medir.</p>
<h2 id="evidencia-cientifica" style="scroll-margin-top: 100px;">La evidencia científica</h2>
<h3>Los LLMs son inconsistentes por diseño</h3>
<p>La investigación académica ha demostrado que los modelos de lenguaje son intrínsecamente no determinísticos, incluso con configuraciones supuestamente "determinísticas":</p>
<ul>
<li>Un <a href="https://arxiv.org/pdf/2308.02828">paper de enero 2025 en ACM Transactions</a> encontró que en el 75,76% de tareas de CodeContests, ChatGPT no produjo dos outputs idénticos con temperature=0, que muchos creen erróneamente que garantiza determinismo. <a href="https://www.youtube.com/live/eKMgoof0otg?t=2902s">Algo que demostré en esta charla el año pasado</a>.</li>
<li>El <a href="https://arxiv.org/abs/2503.16974">estudio de Wang y Wang (septiembre 2025)</a> analizó 3.4 millones de outputs a través de 50 ejecuciones independientes por tarea. Los modelos más avanzados no son más consistentes: GPT-4o produjo respuestas exactamente iguales solo el 3% del tiempo, mientras que GPT-3.5 Turbo alcanzó el 97%. La recomendación de los autores es ejecutar 3-5 ejecuciones para mejorar la consistencia estadística. Ninguna herramienta del mercado habla de esto.</li>
<li>El <a href="https://www.anthropic.com/research/statistical-approach-to-model-evals">paper de Anthropic (noviembre 2024)</a> reveló un problema estadístico que afecta directamente a las herramientas de AI visibility: cuando ejecutas muchos prompts sobre temas relacionados los errores no son independientes. Si el modelo tiene un sesgo hacia o contra tu marca en el tema "software CRM", fallará sistemáticamente en todos los prompts sobre CRM de forma no aleatoria. Anthropic encontró correlaciones de 0.3 a 0.7 entre preguntas relacionadas, lo que significa que 30 prompts sobre temas similares no equivalen a 30 datos independientes, sino quizás a 5-10. Hay muy poca transparencia en el método/proceso exacto que usan los llm trackers para obtener las respuestas, por lo que no sabemos si esto podría ser un problema o no.</li>
<li>La variabilidad no solo viene de la aleatoriedad inherente del modelo, sino también del formato del prompt. <a href="https://natzir.com/posicionamiento-buscadores/prompts-json-yalm-toon-rendimiento-llms/">En la revisión que hice recientemente de la literatura científica</a> documenté diferencias de hasta 76 puntos de precisión por cambios menores como espacios, puntuación o mayúsculas (FormatSpread, Sclar et al.).</li>
</ul>
<h3>Volatilidad medida: 40-60% de cambio mensual</h3>
<p>El <a href="https://www.tryprofound.com/blog/ai-search-volatility">estudio de Profound (julio 2025)</a> analizó ~80.000 prompts por plataforma comparando junio con julio:</p>
<ul>
<li>Google AI Overviews: 59,3% de los dominios citados cambiaron</li>
<li>ChatGPT: 54,1%</li>
<li>Microsoft Copilot: 53,4%</li>
<li>Perplexity: 40,5%</li>
</ul>
<p>En periodos de 6 meses, la volatilidad se dispara al 70-90%.</p>
<p><img decoding="async" src="https://natzir.com/wp-content/uploads/2026/01/profound-ai-search-volatility-1024x1024.webp" alt="Profound ai search volatility" width="1024" height="1024" class="alignnone size-large wp-image-3283" srcset="https://natzir.com/wp-content/uploads/2026/01/profound-ai-search-volatility-1024x1024.webp 1024w, https://natzir.com/wp-content/uploads/2026/01/profound-ai-search-volatility-350x350.webp 350w, https://natzir.com/wp-content/uploads/2026/01/profound-ai-search-volatility-150x150.webp 150w, https://natzir.com/wp-content/uploads/2026/01/profound-ai-search-volatility-768x768.webp 768w, https://natzir.com/wp-content/uploads/2026/01/profound-ai-search-volatility.webp 1500w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<h3>Estudios sobre consistencia de marcas</h3>
<p>El <a href="https://sparktoro.com/blog/new-research-ais-are-highly-inconsistent-when-recommending-brands-or-products-marketers-should-take-care-when-tracking-ai-visibility/">estudio de SparkToro (enero 2026)</a> ejecutó 2.961 prompts a través de 600 voluntarios usando ChatGPT, Claude y Google AI en 12 categorías. Resultados:</p>
<ul>
<li>Menos de 1 en 100 probabilidades de obtener la misma lista de marcas dos veces</li>
<li>Menos de 1 en 1.000 probabilidades de obtener la misma lista en el mismo orden</li>
</ul>
<p><img loading="lazy" decoding="async" src="https://natzir.com/wp-content/uploads/2026/01/investigacion_inconsistencia_ia_recomendaciones_productos_marcas-1024x576.webp" alt="Investigacion inconsistencia ia recomendaciones productos marcas" width="1024" height="576" class="alignnone size-large wp-image-3285" srcset="https://natzir.com/wp-content/uploads/2026/01/investigacion_inconsistencia_ia_recomendaciones_productos_marcas-1024x576.webp 1024w, https://natzir.com/wp-content/uploads/2026/01/investigacion_inconsistencia_ia_recomendaciones_productos_marcas-350x197.webp 350w, https://natzir.com/wp-content/uploads/2026/01/investigacion_inconsistencia_ia_recomendaciones_productos_marcas-768x432.webp 768w, https://natzir.com/wp-content/uploads/2026/01/investigacion_inconsistencia_ia_recomendaciones_productos_marcas.webp 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>La variabilidad depende del tamaño del espacio de consideración. Para queries con pocas opciones (concesionarios Volvo en Los Ángeles), la correlación es alta. Para espacios amplios (novelas de ciencia ficción), la variabilidad es extrema.</p>
<p>Rand Fishkin dice que que aunque las listas y rankings son aleatorios, el porcentaje de visibilidad (cuántas veces aparece una marca en múltiples ejecuciones) puede ser una métrica válida. "City of Hope hospital" apareció en el 97% de las respuestas sobre hospitales oncológicos en la costa oeste, aunque su posición variaba constantemente.</p>
<p>Mi opinión es <strong>que una métrica sea "menos aleatoria" no la convierte en útil</strong>. El porcentaje de visibilidad te da una foto borrosa de algo que no puedes controlar, porque está basada en prompts que no son los que hacen tus usuarios reales, ejecutados en condiciones que no reflejan su experiencia. Es el menos malo de los indicadores, pero sigue siendo un indicador de valor limitado.</p>
<p>Hay otro problema y es que la <strong>visiblidad tiene un sesgo estructural hacia las marcas ya establecidas</strong>. Las marcas conocidas (Booking, Amazon, MediaMarkt) muestran métricas más estables porque están sobrerrepresentadas en los datos de entrenamiento porque aparecen en miles de contextos diferentes, creando asociaciones robustas en los pesos del modelo. Para marcas emergentes o de nicho, el mismo % de visibility fluctúa tanto entre ejecuciones que es prácticamente ruido estadístico. Esto es una paradoja <strong>porque las herramientas son más "fiables" precisamente para quienes menos las necesitan</strong> (las marcas que ya saben que son visibles), y menos fiables para quienes más las necesitarían (marcas intentando ganar visibilidad).</p>
<p>Para tener una visibilidad "fiable" necesitas ejecutar cientos o miles de prompts múltiples veces. El coste computacional (y económico) de eso para conseguir un dato direccional que no correlaciona con tráfico ni conversiones es difícil de justificar.</p>
<p>El <a href="https://visible.beehiiv.com/p/most-ai-visibility-tracking-is-misleading-here-s-my-new-data">estudio de Mike Sonders (febrero 2026)</a> analizó 1.200 interacciones con ChatGPT (12 prompts × 100 ejecuciones cada uno, con IP diferente por sesión) centrado en recomendaciones de software B2B y encontró lo siguiente:</p>
<ul>
<li>Cuanto más de nicho es una categoría, más fácil es aparecer de forma consistente en las respuestas de IA.</li>
<li>Solo el ~11% de las marcas que un LLM menciona en una categoría aparecen de forma consistente. El resto rota de forma casi aleatoria entre respuestas.</li>
<li>Cuanto más específico es el prompt (con rol, contexto o caso de uso), más difícil es entrar en el grupo de marcas dominantes, porque el modelo se compromete más con menos opciones. Esto genera más ruido en las mediciones, y es un problema para los trackers porque los usuarios reales hacen prompts complejos y contextuales, no las preguntas genéricas tipo "best X software" que usan la mayoría de herramientas. Una única ejecución por prompt es casi inútil dada la variabilidad. Sonders recomienda un mínimo de ~5 ejecuciones por prompt en la sesión, algo que las herramientas de tracking no hacen, por desconocimiento y, de saberlo, no lo harán porque se les multiplicaría por x5 el coste.</li>
</ul>
<p><img decoding="async" src="https://natzir.com/wp-content/uploads/2026/01/niche-vs-competitive.avif" alt="Niche vs competitive" class="alignnone size-full wp-image-3364" /></p>
<h2 id="como-deciden-llms" style="scroll-margin-top: 100px;">Cómo deciden los LLMs qué información mostrar</h2>
<h3>El sistema QDF de los modelos</h3>
<p>La <a href="https://natzir.com/posicionamiento-buscadores/lo-que-los-leaks-de-gpt-5-nos-ensenan-sobre-seo-para-la-ia/">filtración del system prompt de GPT-5</a> revela que ChatGPT usa un sistema QDF (Query Deserves Freshness) con escala de 0 a 5:</p>
<ul>
<li>0: Histórico, no importa que esté actualizado</li>
<li>1: Relevante si es de los últimos 18 meses</li>
<li>2: Relevante si es de los últimos 6 meses</li>
<li>3: Relevante si es de los últimos 90 días</li>
<li>4: Relevante si es de los últimos 60 días</li>
<li>5: Lo más reciente de este mes</li>
</ul>
<p>No todas las queries activan búsqueda web. En ChatGPT Existe un parámetro <code>use_freshness_scoring_profile</code> evalúa para cada query si necesita información externa. Además, descubrí que <a href="https://natzir.com/posicionamiento-buscadores/lo-que-los-leaks-de-gpt-5-nos-ensenan-sobre-seo-para-la-ia/">ChatGPT ejecuta un clasificador probabilístico llamado <strong>Sonic</strong></a> que calcula una <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">search_prob</code> (la probabilidad de que la query necesite datos frescos) y la compara contra un umbral (<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">force_search_threshold</code>), actualmente en torno al 65%.</p>
<p>Los leaks de <a href="https://www.linkedin.com/posts/natzir_seoai-nerd-alert-claude-sonnet-45-system-activity-7384819205684047872-Fdzo/">Claude Sonnet 4.5 muestran un patrón similar</a> donde el modelo categoriza consultas en "nunca buscar" (hechos estables, definiciones), "single search" (términos desconocidos), y "research" (2-20 llamadas con contraste multi-fuente).</p>
<h3>Reranking y señales de contexto</h3>
<p>El sistema de reranking de ChatGPT (<code>ret-rr-skysight-v3</code>) aplica señales adicionales de detección de intención, terminología de dominio, filtrado por tipo de fuente. Si hay herramientas internas disponibles (Google Drive, Slack, CRM), los modelos las priorizan sobre búsqueda web. Todo esto depende del contexto de tu conversación.</p>
<h3>Las patentes de Google: por qué los prompts sintéticos no funcionan</h3>
<p>Estas dos patentes demuestran por qué las herramientas externas no pueden replicar cómo Google genera <strong>query fan-out</strong> y organiza resultados.</p>
<ul>
<li><strong><a href="https://patents.google.com/patent/US20230281193A1/en">Query Fan-Out (US20230281193A1)</a></strong>: Cuando alguien busca algo Google no se limita a esa query literal, lo que hace es generar variantes usando modelos entrenados con el comportamiento real de millones de usuarios (qué buscaron, en qué hicieron clic, qué reformulaciones hicieron después). Además, tiene en cuenta cosas que una herramienta externa simplemente no puede saber como dónde está el usuario, qué estaba haciendo antes o su historial de sesión. Todo esto se procesa en tiempo real, adaptándose al contexto de cada búsqueda individual.</li>
<li><strong><a href="https://patents.google.com/patent/US12158907B1/en">Thematic Search (US12158907B1)</a></strong>: Google analiza los documentos que considera relevantes para una búsqueda, genera resúmenes internos de cada uno, los agrupa en clusters temáticos y luego los ordena según criterios como calidad, autoridad o popularidad. El problema es que esas señales de ranking son completamente opacas desde fuera, es decir, no sabemos exactamente cómo pondera cada factor ni qué documentos considera relevantes antes de mostrarnos nada.</li>
<li><strong><a href="https://arxiv.org/pdf/2601.18202">SAGE de Google (enero 2026)</a></strong>: los agentes de Google de deep search están siendo entrenados para ejecutar entre 2 y 10 hops de razonamiento por query, usando estrategias como resolución de conflictos entre fuentes, generación de hipótesis y razonamiento temporal. Todo esto ocurre internamente antes de que veas la respuesta. <strong>Los prompts sintéticos de las herramientas externas ni siquiera se aproximan a esta complejidad.</strong></li>
</ul>
<p>Los datos empíricos confirman esto. El <a href="https://ahrefs.com/blog/ai-overview-citations-top-10/">estudio de Ahrefs (marzo 2026)</a> analizó 863.000 SERPs y 4 millones de URLs citadas en AI Overviews y encontró que <strong>solo el 38% de las páginas citadas en AI Overviews también aparecen en el top 10 orgánico</strong> para esa misma query. El 62% restante proviene de páginas que rankean más abajo o directamente no aparecen en los resultados orgánicos de la query original. En julio de 2025, esa cifra era del ~76%. Es decir, con Gemini 3, Google está tirando cada vez más del fan-out interno para seleccionar fuentes, no de los resultados directos. Si ni siquiera rankeando en el top 10 tienes garantía de ser citado, imagina lo que puede capturar un prompt tracker lanzando queries desde fuera sin acceso a las sub-queries internas.</p>
<p>El propio artículo de Ahrefs reconoce que los AI Overviews son probabilísticos, y su contenido, citaciones, entidades y fan-outs cambian con cada consulta.</p>
<h2 id="no-puedes-replicar-experiencia" style="scroll-margin-top: 100px;">Por qué no puedes replicar la experiencia del usuario</h2>
<h3>Memoria del modelo vs búsqueda web</h3>
<p>Hay un problema que creo que ninguna herramienta de prompt tracking resuelve y es que <strong>no te dicen si el LLM buscó en la web o respondió desde su conocimiento interno</strong>.</p>
<p><em>*Update 01/02/2026: He encontrado que Wikay.io sí que lo hace.</em><br />
<em>*Update 02/2026: <a href="https://www.bing.com/webmasters/help/ai-performance-in-bing-webmaster-tools-c287c4ac">Bing Webmaster Tools ha lanzado AI Performance</a>, que resuelve parcialmente este problema al reportar solo citaciones visibles en respuestas de Copilot y Bing AI. Si tu URL aparece ahí, sabes que fue retrieval, no conocimiento paramétrico. Es el primer dato de primera parte que confirma esta distinción.</em></p>
<p>Esta decisión depende de la configuración del modelo (versión, temperatura, system prompts, si tiene search habilitado), de la volatilidad del tema y cómo se formula el prompt (para precios o noticias busca siempre, para definiciones o conceptos estables responde de memoria), del umbral de confianza interno (si el modelo "cree" que sabe la respuesta, no busca), y del método de acceso, porque API e interfaz web tienen comportamientos de búsqueda distintos.</p>
<p>Y cuando sí busca, hay otra capa de opacidad porque el modelo no ejecuta tu prompt literal. Como vimos antes, genera múltiples subqueries internas (fan-out), busca en paralelo, y sintetiza. Tu marca puede aparecer en el resultado final, pero no sabes qué subquery fue responsable. No puedes optimizar para algo que desconoces.</p>
<p><strong>Esto cambia completamente la accionabilidad:</strong></p>
<ul>
<li>Si la respuesta viene de <strong>búsqueda web</strong>: puedes crear y optimizar contenido, digital PR... pero sin saber para qué subquery exacta.</li>
<li>Si la respuesta viene del <strong>conocimiento paramétrico</strong>: no hay nada que hacer a corto plazo. Dependes del próximo ciclo de entrenamiento y de cambiar la narrativa del corpus general sobre tu marca.</li>
</ul>
<p>Es como saber que tu cartera subió un 5% sin saber qué activo lo causó...</p>
<p>Y no solo desconoces la subquery porque <strong>ni siquiera sabes en qué idioma se hizo</strong>. Un <a class="underline underline underline-offset-2 decoration-1 decoration-current/40 hover:decoration-current focus:decoration-current" href="https://peec.ai/blog/chatgpt-searches-in-english-even-when-you-don-t">estudio de Peec AI (febrero 2026)</a> analizó más de 10 millones de prompts y 20 millones de query fan-outs y encontró que el 43% de las subqueries internas de ChatGPT para prompts no-inglés se ejecutan en inglés. En el 78% de sesiones no-inglés, ChatGPT complementa con búsquedas en inglés. Un usuario español preguntando en español desde España recibe resultados influenciados por fuentes anglófonas. Los prompt trackers que lanzan prompts en español no capturan esta capa de opacidad adicional.</p>
<h3>Personalización por contexto</h3>
<p>ChatGPT implementa dos sistemas de memoria (Saved Memories y Chat History) que influyen en cada respuesta. <a href="https://aeoagency.team/geographic-location-affects-chatgpt-responses.html">Experimentos del AEO Agency Team</a> demostraron que incluso bajo "condiciones de testing absolutamente idénticas, las respuestas a veces difirieron".</p>
<p>Para queries <a href="https://natzir.com/posicionamiento-buscadores/seo-local-para-chatgpt/">geo-dependientes, ChatGPT convierte internamente los prompts</a>. Un usuario en Nueva York que pregunta "mejores tiendas de electrónica" recibe una consulta procesada como "trusted electronics brands NYC store". Usuarios de pago reciben además respuestas "significativamente mejores" que los gratuitos.</p>
<p><a href="https://searchengineland.com/google-ai-overviews-follow-up-questions-jump-you-directly-to-ai-mode-468016">Google ahora lleva las preguntas de seguimiento de AI Overviews directamente a AI Mode</a>, manteniendo el contexto de la conversación. La búsqueda ya no es una query aislada, es una conversación donde cada pregunta influye en la siguiente.</p>
<h3>Integración con datos privados</h3>
<p><a href="https://www.youtube.com/watch?t=2559&amp;v=2SwNPqsOXkk">Robby Stein (VP de Producto en Google)</a> anunció que usarán datos de Gmail, Drive y Calendar para personalizar respuestas. Una búsqueda de "mejores hoteles en Londres" tendrá en cuenta reuniones en Calendar, vuelos en Gmail, presupuestos en Sheets.</p>
<p><a href="https://blog.google/innovation-and-ai/products/gemini-app/personal-intelligence/">Google lanzó Personal Intelligence</a> (enero 2026), que conecta Gemini con Gmail, Photos, YouTube y Search history. La función usa "context packing" para analizar repositorios de usuarios que superan el millón de tokens. Un ejemplo de Google: preguntar por neumáticos para tu coche y Gemini extrae la matrícula de una foto en Google Photos, busca especificaciones en emails de Gmail, y sugiere opciones basándose en fotos de viajes anteriores.</p>
<h3>MCPs y herramientas instaladas</h3>
<p>Claude, ChatGPT y otros LLMs permiten conectar herramientas externas (MCPs) que modifican el comportamiento del modelo. Un usuario con MCP de su CRM instalado recibirá respuestas completamente diferentes. Las herramientas de visibility no pueden saber qué MCPs ni qué contexto tiene cada usuario.</p>
<p>Esto, sumado a AI Mode generando interfaces al vuelo, los chats grupales en ChatGPT, y las memorias en todas las IAs... Si ya no tenían sentido los LLM trackers de 50 prompts, ahora menos.</p>
<p>Un pequeño cambio en system prompt, memorias o herramientas cambia completamente el resultado. <strong>No hay forma confiable de trackear la experiencia real de usuarios de LLM.</strong></p>
<h2 id="herramientas-mercado" style="scroll-margin-top: 100px;">Prompt Trackers: Herramientas para medir visibilidad en IA</h2>
<p>Las herramientas del mercado difieren en cuatro dimensiones: <strong>escala</strong> (cuántos prompts ejecutan), <strong>fuente de prompts</strong> (demanda real vs sintéticos), <strong>método de acceso</strong> (API vs scraping), y modelo de negocio.</p>
<h3>Escala de datos</h3>
<p><strong>Escala masiva (millones de prompts):</strong></p>
<ul>
<li><a href="https://www.sistrix.com/support/handbook/sistrix-ai-chatbot-research-tool/">SISTRIX</a>: 10 millones de prompts por idioma × 5 idiomas = 50M prompts totales. Google AI (AI Overviews &amp; AI Mode), Perplexity, ChatGPT, DeepSeek.</li>
<li><a href="https://ahrefs.com/blog/brand-radar-methodology/">Ahrefs Brand Radar</a>: ~190 millones de prompts/mes. ChatGPT (10,6M), Perplexity (13,1M), Gemini (7,2M), Copilot (13,3M), AI Overviews (134M), AI Mode (13,5M).</li>
<li><a href="https://www.semrush.com/kb/1493-ai-visibility-toolkit">Semrush AI Visibility</a>: 100+ millones de prompts globales, incluyendo 90M+ en EEUU y 29M+ específicos de ChatGPT. ChatGPT, Perplexity, Gemini, Google AI Overviews/AI Mode.</li>
</ul>
<p><strong>Escala pequeña (decenas a cientos de prompts):</strong></p>
<ul>
<li><a href="https://www.otterly.ai/">Otterly AI</a>: 10-100 prompts según plan</li>
<li><a href="https://www.peec.ai/">Peec AI</a>: 25 prompts en plan básico</li>
<li><a href="https://promptwatch.com/">Promptwatch</a>: 50-350 prompts según plan</li>
<li><a href="https://www.tryprofound.com/">Profound</a>: 50+ prompts según plan</li>
<li><a href="https://waikay.io/">Waikay</a>: 120+ prompts según plan</li>
</ul>
<h3>Fuente de los prompts</h3>
<p><strong>Demanda real (derivados de búsquedas web):</strong></p>
<ul>
<li>SISTRIX: sugerencias de prompts de ChatGPT + "People Also Ask"</li>
<li>Ahrefs: base de 28,7 mil millones de keywords + "People Also Ask"</li>
<li>Semrush: compra clickstream data de paneles de terceros (quizás mediante <a href="https://arstechnica.com/security/2025/12/browser-extensions-with-8-million-users-collect-extended-ai-conversations/">data de prompts substraida de extensiones de Google o Microsoft</a>), agrupa los prompts en topics, anonimiza y simplifica, así que técnicamente es sintético porque no son los prompts exactos</li>
</ul>
<p><strong>Sintéticos (inventados por el cliente o la herramienta):</strong></p>
<ul>
<li>Conductor, Gumshoe, Otterly, Peec, Promptwatch, Profound, Wikay: el cliente define sus propios prompts (por ejemplo, usan queries long tail de Search Console) o la herramienta los genera algorítmicamente (prompts sintéticos, simulaciones de query fan-out)</li>
</ul>
<p>Aunque Ahrefs llama a todo sintético: "Todas las herramientas usan prompts sintéticos ya que los datos de queries reales de usuarios no están disponibles." La diferencia es si esos prompts sintéticos derivan de señales de demanda real (PAA, keywords con volumen) o son completamente inventados.</p>
<p><strong>Configuración de sesiones:</strong> La mayoría de herramientas ejecutan prompts en sesiones "limpias" (sin cookies, historial ni memoria). Gumshoe documenta explícitamente: "cada conversación empieza fresca, sin cookies ni historial, para asegurar resultados libres de sesgo". Esto es bueno para consistencia y replicabilidad, pero no refleja la realidad de usuarios con historial acumulado, memorias guardadas y contexto personalizado.</p>
<p><strong>Personas/perfiles:</strong> Gumshoe usa un "enfoque persona-first", modelando cómo distintos segmentos de usuarios (roles, objetivos, pain points) formularían los prompts. El resto de herramientas trata todos los queries igual, ignorando que un CTO pregunta diferente que un marketing manager. Sin embargo, añadir personas introduce otra variable: o bien no cambian significativamente los resultados (según el estudio de Surfer que probó con system prompts filtrados), o bien añaden otra capa de variabilidad que hace los datos menos comparables entre herramientas.</p>
<h3>Método de acceso: API vs Scraping</h3>
<p>El <a href="https://surferseo.com/blog/llm-scraped-ai-answers-vs-api-results/">estudio de Surfer SEO (diciembre 2025)</a> comparó ambos métodos con 1.000 prompts:</p>
<ul>
<li>ChatGPT vía API: promedio de 7 fuentes citadas</li>
<li>ChatGPT vía scraping: promedio de 16 fuentes citadas</li>
<li>Perplexity: coincidencia de fuentes entre métodos del 8%</li>
<li>8% de llamadas API fallan en detectar menciones que sí aparecen en la interfaz</li>
</ul>
<p>Conclusión de Wojciech Korczyński: "Monitorear respuestas desde API como proxy de tu AI visibility es totalmente erróneo."</p>
<p><img decoding="async" src="https://natzir.com/wp-content/uploads/2026/01/estudio_busqueda_ia_respuestas_scraped_vs_resultados_api_diferencias.avif" alt="Estudio busqueda ia respuestas scraped vs resultados api diferencias" class="alignnone size-full wp-image-3287" /></p>
<p><strong>Herramientas que documentan usar interfaces web (scraping):</strong></p>
<ul>
<li><a href="https://ahrefs.com/blog/brand-radar-methodology/">Ahrefs</a>: documentan que todas las solicitudes se ejecutan a través de las interfaces web gratuitas y disponibles públicamente de ChatGPT, Gemini, Perplexity y Copilot.</li>
<li><a href="https://otterly.ai/security">Otterly</a>: usa Firecrawl.dev y SerpApi como subprocesadores de scraping</li>
<li><a href="https://www.sistrix.com/ai/">SISTRIX</a>: usa exclusivamente web scraping via interfaces reales de navegador, no APIs. Confirmado con su CEO, Johannes Beus</li>
</ul>
<p><strong>Herramientas que priorizan API:</strong> <a href="https://www.conductor.com/">Conductor</a>, <a href="https://gumshoe.ai/">Gumshoe</a> , <a href="https://waikay.io">Wikay.</a></p>
<p><strong>Metodología no especificada (o encontrada por mi) públicamente:</strong> Semrush, Peec, Promptwatch, Profound. Entiendo también que se oculte por incumplimento de ToS, así que es probable que usen scraping.</p>
<h3>El problema del desfase de versiones</h3>
<p>Las herramientas testean versiones de modelos que difieren de las que usan los usuarios (la última disponible), mientras muchas herramientas siguen usando GPT-4o, cuando la realidad es que <a href="https://openai.com/index/retiring-gpt-4o-and-older-models/">actualmente solo el 0,1% de usuarios lo elige a diario</a>. Y los los estudios de Wang y Wang demostraron también que modelos más recientes son más variables.</p>
<p><a href="https://www.sistrix.com/support/handbook/sistrix-ai-chatbot-research-tool/">SISTRIX documenta exactamente qué modelos testea</a>: gpt-4o-mini, gpt-4.1-mini para ChatGPT; gemini-2.0-flash-lite, gemini-2.0-flash, gemini-2.5-flash para Gemini; v3 para DeepSeek. Actualizan sus datos cuando se lanza un nuevo foundation model, reconociendo que "consultar los modelos más frecuentemente no añade valor, ya que la información en estos foundation models es estática."</p>
<p>La mayoría de herramientas no documentan qué versión del modelo testean ni con qué frecuencia actualizan.</p>
<h3>Umbrales de significancia: ¿cuántos prompts necesitas?</h3>
<p>El estudio de Wang y Wang mencionado antes recomienda 3-5 ejecuciones por prompt para obtener consistencia estadística, pero esas ejecuciones deben ser simultáneas o en la misma sesión. Ejecutar un prompt una vez al día durante un mes no cumple este requisito: son 30 mediciones de 30 estados diferentes del sistema (modelo actualizado o estado del backend, contenidos diferentes recuperados en la inferencia, contexto temporal distinto), no 30 mediciones del mismo estado.</p>
<p>Si hay menos de 1 en 100 probabilidades de obtener la misma lista dos veces, una herramienta con 25 prompts no puede darte una imagen representativa de tu visibilidad real, independientemente de cuántas veces ejecute esos 25 prompts.</p>
<p>Aún así, el problema real no es tanto la frecuencia de ejecución, sino la escala y representatividad:</p>
<ul>
<li><strong>25 prompts ejecutados 30 veces cada uno siguen siendo 25 prompts</strong>. No representan el universo de queries que los usuarios reales hacen sobre tu sector.</li>
<li><strong>Los prompts sintéticos inventados por el cliente</strong><span> </span>reflejan lo que el cliente cree que preguntan los usuarios, no lo que realmente preguntan.</li>
</ul>
<p>SparkToro usó 2.961 prompts con 600 voluntarios para su estudio. Profound usó ~80.000 prompts por plataforma. SISTRIX usa 10 millones por idioma. La diferencia de escala determina si puedes detectar patrones reales o solo ruido estadístico.</p>
<h3>Modelo de negocio y estructura de precios</h3>
<p>La diferencia más relevante es si el tracking de IA es un producto independiente o una funcionalidad dentro de una suite más amplia.</p>
<p><strong>Herramientas especializadas (tracking como producto principal):</strong></p>
<ul>
<li><a href="https://www.otterly.ai/pricing">Otterly</a>: desde $29/mes (15 prompts) hasta $489/mes (400 prompts)</li>
<li><a href="https://www.peec.ai/">Peec AI</a>: €89/mes por 25 prompts hasta $217/mes (100 prompts)</li>
<li><a href="https://promptwatch.com/pricing">Promptwatch</a>: $89/mes (50 prompts), $199/mes (150 prompts), $499/mes (350 prompts)</li>
<li><a href="https://waikay.io/">Waikay</a>: desde $19,95/mes (120 prompts) hasta $444/mes (4.000 prompts)</li>
<li><a href="https://www.tryprofound.com/pricing">Profound</a>: desde $99/mes</li>
<li><a href="https://visible.seranking.com/">SE Visible</a>: desde $99/mes (150 prompts) hasta $355/mes (1.000 prompts)</li>
<li><a href="https://gumshoe.ai/">Gumshoe</a>: $0,10 por conversación (pago por uso)</li>
</ul>
<p><strong>Suites con tracking incluido o como add-on:</strong></p>
<ul>
<li><a href="https://www.sistrix.com/pricing/">SISTRIX</a>: desde $140/mes con AI Research incluido (50M prompts, 5 idiomas, 3 chatbots). Acceso a base de datos compartida y tracking de prompts personalizados.</li>
<li><a href="https://ahrefs.com/brand-radar">Ahrefs Brand Radar</a>: <span>desde $199/mes por plataforma individual o $699/mes por todas las plataformas (Google AI, ChatGPT, Perplexity, Copilot, Gemini). Incluye 271M queries/mes del dataset de Ahrefs + 2.500 custom prompts/mes (por un extra de $50).</span></li>
<li><a href="https://www.semrush.com/kb/1493-ai-visibility-toolkit">Semrush AI Visibility</a>: $99/mes por dominio como add-on, o incluido en Semrush One desde $199/mes. Base de datos de 239M+ prompts; tracking personalizado de 25-50 prompts según plan.</li>
<li><a href="https://www.conductor.com/">Conductor</a>: estimado $10.000-50.000 anuales (orientado a Fortune 500)</li>
</ul>
<p>El coste de ejecutar 100 prompts diarios con GPT-4o-mini es ~$2,04/mes. Los márgenes de las herramientas especializadas oscilan entre 85-95%.</p>
<p>Como dice <a href="https://www.growth-memo.com/p/the-alpha-is-not-llm-monitoring">Kevin Indig</a>: "Tracking is a feature, not a company." Y su argumento no es que medir sea inútil, es que el tracking no es defendible como negocio porque se comoditiza. Amplitude ofrece monitoring en LLM gratis, Semrush lo añadió como checkbox, Sistrix lo incluye por defecto... Las plataformas establecidas absorben el tracking como feature y matan a los standalone. Eso es exactamente lo que está pasando.</p>
<p>Dirás: "pero Ahrefs también empezó como rank tracker." Sí, con dos diferencias. Primera: el rank tracking tradicional tenía un moat real y una correlación demostrada con tráfico orgánico y conversiones. Segunda: precisamente porque el rank tracking se commoditizó, esas empresas sobrevivieron convirtiéndose en suites completas.</p>
<p>Las herramientas que dependen únicamente del tracking de IA como producto tienen incentivos para exagerar su valor y para abusar del desconocimiento del cliente. Como <a href="https://natzir.com/posicionamiento-buscadores/lo-que-los-leaks-de-gpt-5-nos-ensenan-sobre-seo-para-la-ia/">he escrito antes</a>, lanzar 50 prompts para "medir tu visibilidad en IA" es como hacer una encuesta electoral preguntando a tus amigos. Aunque estén bien escogidos y sean 50 prompts especializados en tu industria equivaldrían a 2-15 datos independientes según Anthropic. Necesitas millones de prompts para extraer patrones significativos. Eso solo pueden hacerlo herramientas como <a href="https://www.sistrix.com/">SISTRIX</a>, <a href="https://ahrefs.com/">Ahrefs</a> o <a href="https://www.semrush.com/">Semrush</a> que operan a escala masiva.</p>
<p>Es más, Rand Fishkin calificó las respuestas de IA como "loterías estadísticas" y este mercado alcanzará los $200 millones en 2026, con "casi cero ROI".</p>
<p>En conversaciones privadas con varios founders de prompt trackers que me han pedido ayuda para desarrollar su tool y que no he citado aquí (algunos ya con inversiones millonarias), he encontrado un patrón preocupante y es que muchos desconocían problemas metodológicos básicos como la diferencia entre prompts sintéticos y derivados de demanda real, api vs interfaz, la posibilidad de comprar datos de prompts, o las limitaciones estadísticas que he documentado aquí, entre otras cosas. Algunos me reconocieron que "por algo hay que empezar". Otros ya han pivotado con su tool al darse cuenta de la magnitud del problema. Es decir, el mercado se está construyendo más rápido de lo que se está entendiendo.</p>
<p>Y, a día de hoy, cualquiera puede montar una herramienta de tracking en un fin de semana. Hasta puedes hacerte la tuya propia en un momento con <a href="https://github.com/firecrawl/firegeo">FireGEO open-source</a>. Creo que muchas tools de seguimiento de IA buscan aprovecharse del desconocimiento técnico, el FOMO y el hype para ganar dinero en este momento de incertidumbre.</p>
<h3 id="first-party-tools" style="scroll-margin-top: 100px;">First-party tools: Bing AI Performance</h3>
<p>Todas las herramientas anteriores son third-party, es decir, ejecutan prompts desde fuera e intentan inferir lo que pasa dentro. <a href="https://www.bing.com/webmasters/help/9f8e7d6c">Bing Webmaster Tools ha lanzado AI Performance</a>, el Search Console de la IA, donde es el propio Microsoft diciéndote qué contenido citó Copilot y Bing AI en respuestas generadas para usuarios reales. Ofrece:</p>
<ul>
<li><strong>Pages Cited</strong>: qué URLs de tu sitio fueron citadas en respuestas de IA, con frecuencia por página.</li>
<li><strong>Grounding Queries</strong>: las frases que el sistema usó al recuperar tu contenido. No son los prompts exactos del usuario, sino agrupaciones temáticas, pero son la primera aproximación real a saber para qué consultas te citan.</li>
</ul>
<p>Esto elimina de golpe varios problemas que afectan a las herramientas externas: no hay desfase de versiones (mide el modelo que usan los usuarios reales), no hay problema de API vs scraping (son datos internos del sistema), no hay prompts sintéticos (refleja actividad real), y distingue citaciones visibles de grounding interno (solo reporta lo que el usuario ve). Datos reales, del sistema real, sobre usuarios reales.</p>
<p><strong>Limitaciones importantes:</strong></p>
<ul>
<li>Solo cubre <strong>Microsoft Copilot y Bing AI</strong>.</li>
<li>Los datos son <strong>agregados y muestreados</strong>, no un log completo de cada citación, por lo que actividad muy baja puede no aparecer.</li>
<li>Los grounding queries son <strong>frases generalizadas</strong>, no los prompts exactos que escribieron los usuarios.</li>
<li><strong>No mide tráfico, clicks ni conversiones</strong>. Una citación no implica que el usuario hiciera nada con tu enlace.</li>
<li>No calcula rankings, authority ni visibility scores. Solo cuenta citaciones y ni tan mal.</li>
</ul>
<p>La dirección lógica es que el resto de proveedores siga este camino. Google ya tiene infraestructura similar con Search Console y sería natural que extienda el informe de rendimiento a AI Overviews y AI Mode. OpenAI podría hacer lo mismo para ChatGPT para search ads. Hasta que eso ocurra, Bing AI Performance es el único dato de primera parte disponible para visibilidad en IA.</p>
<h2 id="metricas-no-funcionan" style="scroll-margin-top: 100px;">Por qué las métricas de visibilidad en la IA actuales no funcionan</h2>
<h3>Visibility score</h3>
<p><a href="https://franco.com/blog/marketing/youre-measuring-ai-visibility-wrong-heres-what-really-matters/">Franco advierte que</a> "no hay herramienta en el mercado con insight 100% preciso sobre lo que los usuarios escriben en herramientas de IA. Cualquier visibility score reportado es modelado, no medido."</p>
<p>El problema fundamental es que cada herramienta usa una fórmula diferente.</p>
<ul>
<li><a href="https://geneo.app/blog/ai-search-visibility-score-calculation/">Geneo calcula</a>: presencia × 0,5 + prominencia × 0,3 + clicks esperados × 0,2</li>
<li><a href="https://www.advancedwebranking.com/help/ai-brand-visibility-insights-see-how-llms-talk-about-your-brand">Advanced Web Ranking</a> asigna: posición 1 = 100%, posición 2 = 90%... posición 10 = 10%.</li>
<li><a href="https://surferseo.com/blog/visibility-score/">Surfer</a> usa menciones de marca ÷ respuestas IA analizadas.</li>
<li><a href="https://www.rankforllm.com/llm-visibility-score-guide/">RankForLLM</a> evalúa 7 categorías de 0-5 sobre un total de 35 puntos.</li>
</ul>
<p>Cuatro fórmulas completamente diferentes. Un visibility score de 45 en una herramienta no significa nada comparado con un 45 en otra. Y ninguna te dice si ese número es "bueno" o "malo" porque no hay benchmark universal contra el que comparar. Dirás: "bueno, lo que importa es el trend y quedarte con una tool". He trabajado con varias herramientas y he obtenido trends distintos tanto para mi cliente como para los competidores. No hay correlación entre ellas.</p>
<h3>Share of Voice</h3>
<p><a href="https://cassieclarkmarketing.com/ai-share-of-voice/">Cassie Clark documenta</a> que esta métrica no asigna peso por posición o prominencia, no correlaciona con clicks o conversiones (las respuestas de IA satisfacen la intención sin requerir click), no combina múltiples prompts en un score compuesto. Es decir, mide presencia, no impacto.</p>
<p>Incluso LinkedIn, con acceso a datos propietarios de tráfico LLM hacia sus propias webs, reconoce que el reto está en el dark funnel y que <a href="https://www.linkedin.com/business/marketing/blog/content-marketing/how-linkedin-marketing-is-adapting-to-ai-led-discovery">no pueden cuantificar cómo la visibilidad dentro de respuestas LLM impacta el bottom line</a>.</p>
<p>Pero hay un problema más básico y es que el cálculo depende de quién defines como competidor. La fórmula típica es: menciones de tu marca ÷ menciones totales (tu marca + competidores). Si añades un competidor nuevo a tu lista, tu Share of Voice baja automáticamente sin que haya cambiado nada real en el mercado. Si quitas uno, sube. El denominador es completamente arbitrario.</p>
<p>Además, el SoV varía significativamente entre plataformas porque una marca puede tener 20% en ChatGPT pero solo 10% en Copilot. ¿Cuál es tu "verdadero" Share of Voice? No hay respuesta.</p>
<p>En publicidad tradicional, el Share of Voice tiene una relación demostrada con cuota de mercado. En LLMs, esa correlación no se ha demostrado y menos la conexión con outcomes de negocio</p>
<h3>Ranking position</h3>
<p>El concepto de "posición" en una respuesta de IA carece de sentido. En una respuesta de 500 palabras que menciona 5 fuentes, ¿quién es "posición 1"? ¿La primera fuente mencionada? ¿La más citada? ¿La que aparece en el primer párrafo? <a href="https://seotesting.com/blog/how-to-rank-in-ai-search/">SEO Testing confirma</a> que "como los outputs de LLMs varían por sesión, modelo y formulación exacta del prompt, no hay un 'Posición 1' universal como había con el tracking de keywords."</p>
<p>Como vimos en el estudio de SparkToro, hay menos de 1 en 1.000 probabilidades de obtener la misma lista de marcas en el mismo orden. La posición es esencialmente aleatoria. Sin embargo, el porcentaje de aparición (cuántas veces aparece una marca en múltiples ejecuciones) puede ser más estable y potencialmente útil como métrica.</p>
<h3>Prompt volume</h3>
<p>Varias herramientas muestran métricas de "AI Search Volume" o "Prompt Volume" que dan apariencia de demanda real, pero esto es completamente modelado.</p>
<p><a href="https://www.semrush.com/kb/1597-prompt-research-report">Semrush</a> muestra "Related Topics AI Volume" que define como "estimated monthly AI search activity", es decir, una estimación, no datos reales. <a href="https://ahrefs.com/blog/brand-radar-methodology/">Ahrefs</a> es más honesto: "No existen datos reales de demanda. Ninguna compañía tiene acceso a datos de volumen de búsqueda reales para ChatGPT."</p>
<p>Este problema del volumen de búsqueda es peor que en SEO tradicional porque:</p>
<ul>
<li>En Google, el volumen de búsqueda se basa en datos reales de queries (aunque agregados)</li>
<li>En LLMs, nadie fuera de OpenAI, Google o Anthropic sabe qué preguntan los usuarios</li>
<li>Los prompts trackeados suelen ser más específicos y de cola larga que las búsquedas tradicionales, así que incluso si hubiera datos, los volúmenes serían menores</li>
<li><strong>La propia monitorización cambia drásticamente el resultado</strong>: ejecutar el mismo prompt desde una cuenta de herramienta infla el volumen de forma desproporcionada.</li>
</ul>
<h3>Citations</h3>
<p><strong>Desambiguación</strong></p>
<p>Hay un problema técnico que afecta a todas las métricas anteriores y es <strong>la detección de marca</strong>. "Stradivarius" puede ser la marca de ropa o el violín (o su creador). "Apple" la tecnológica o la fruta. "Corona" la cerveza, el virus, dental, solar, monárquica... ¿ves mi punto?</p>
<p>La <strong>mayoría de herramientas no hacen desambiguación de entidades</strong>, hacen simple string matching, es decir, buscan si aparece "Stradivarius" en la respuesta sin analizar el contexto. Esto genera falsos positivos que inflan artificialmente las métricas de visibilidad. Si tu marca comparte nombre con algo popular en otro dominio, tu visibility score puede incluir menciones que no tienen nada que ver contigo.<br />
SISTRIX trabaja activamente en detección de marca contextual para resolver este problema, pero es una limitación que la mayoría de herramientas ni siquiera mencionan.</p>
<p><strong>Hidden links<br />
</strong><br />
Existe otro problema técnico que afecta directamente a la fiabilidad de las métricas de citations. <a href="https://think.resoneo.com/chatgpt/">RESONEO</a> identificó en el código de ChatGPT tres tipos distintos de URLs:</p>
<ul class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2"><strong>Citations</strong>: enlaces visibles al final de las frases + panel de fuentes. Máxima visibilidad para el usuario.</li>
<li class="whitespace-normal break-words pl-2"><strong>Other Sources</strong>: sección "Más" debajo de las citations. Visibilidad media.</li>
<li class="whitespace-normal break-words pl-2"><strong>Hidden Links</strong>: URLs que ChatGPT usa internamente para grounding pero que <strong>nunca se muestran al usuario</strong>. Visibilidad cero.</li>
</ul>
<p>Como comenta Olivier: "Los estudios que muestran Arxiv o YouTube como 'dominios más citados' probablemente no distinguieron entre citaciones reales y URLs de grounding interno invisibles."</p>
<h2 id="tracking-prompts-masivo" style="scroll-margin-top: 100px;">Mi apuesta: El tracking de prompts masivo</h2>
<p>Antes de nada quiero aclarar que incluso las herramientas con millones de prompts tienen un problema fundamental porque cada una usa un corpus diferente. SISTRIX trackea 10 millones de prompts por idioma, Ahrefs ~190 millones globales, Semrush 239 millones. Pero no son los mismos prompts.</p>
<p>Esto significa que la "visibilidad" de tu marca en SISTRIX no es comparable con la de Ahrefs o Semrush. Cada herramienta te dará un número diferente porque están midiendo universos distintos. No hay forma de saber cuál está "más cerca de la realidad" porque ninguna tiene acceso a los prompts reales de los usuarios.</p>
<p>Otro problema que tiene es que para <strong>clientes de nicho o marcas poco conocidas es muy probable que no encuentres nada en ellas</strong>.</p>
<h3>GAPs por topics</h3>
<p>Eso sí, estas herramientas de escala masiva para mi sí son útiles para algo concreto: <strong>detectar posibles gaps de visibilidad por topics</strong>. Si Ahrefs te muestra que tu competidor aparece en en un cluster de prompts sobre "software de contabilidad para autónomos" y tú no, eso es una señal que merece la pena investigar, independientemente del número exacto de visibilidad. La clusterización por temas permite identificar áreas donde tu contenido no está siendo citado, aunque el "score" absoluto sea arbitrario. En ocasiones he encontrado que el cluster realmente no estaba cubierto o, si lo estaba, tenía problemas accesibilidad o estructura. Puedes leer más sobre esto aquí:</p>
<ol>
<li><a href="https://natzir.com/posicionamiento-buscadores/trocear-contenido-ia-seo/">Trocear contenido para IA y SEO</a></li>
<li><a href="https://natzir.com/posicionamiento-buscadores/agentes-web-y-la-importancia-del-html-semantico-y-accesible/">Agentes web y la importancia del HTML semántico y accesible</a></li>
<li><a href="https://natzir.com/posicionamiento-buscadores/experimento-analisis-de-extraccion-de-contenido-html-en-claude/">Extracción de contenido HTML en LLMs con search tool</a></li>
<li><a href="https://natzir.com/posicionamiento-buscadores/trafico-agentico/">Tráfico agéntico: así navegan los agentes de IA y qué tienes que saber tú</a></li>
<li><a href="https://natzir.com/posicionamiento-buscadores/guia-de-seo-para-ia-manual-para-pymes/">SEO para IA: Guía práctica para que tu PYME sea citada en los LLM</a></li>
<li><a href="https://natzir.com/posicionamiento-buscadores/llmo-geo-leo-gaio-lso-seo-como-hacer-seo-chatgpt/">No es GEO ni AEO es sólo SEO: cómo hacer SEO para la IA</a></li>
</ol>
<p>Pero <strong>también es cierto que, si ese topic no estaba cubierto, lo podrías habrías detectado haciendo un keyword GAP de toda la vida</strong>. Ahora bien, hay un caso donde <strong>estas herramientas sí aportan algo que el keyword gap tradicional no puede</strong> y es cuando la cita no proviene de tu dominio, sino de un tercero que te menciona.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Mira este ejemplo: para la query "mba abroad" desde India, IESE aparece mencionado en el AI Overview. Pero si revisas las 9 fuentes citadas, ninguna es iese.edu, son sitios de terceros que mencionan a IESE en sus rankings o comparativas.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><img loading="lazy" decoding="async" src="https://natzir.com/wp-content/uploads/2026/01/Brand-radar-ahrefs-1-1024x578.webp" alt="Brand radar ahrefs" width="1024" height="578" class="alignnone size-large wp-image-3328" srcset="https://natzir.com/wp-content/uploads/2026/01/Brand-radar-ahrefs-1-1024x578.webp 1024w, https://natzir.com/wp-content/uploads/2026/01/Brand-radar-ahrefs-1-350x198.webp 350w, https://natzir.com/wp-content/uploads/2026/01/Brand-radar-ahrefs-1-768x434.webp 768w, https://natzir.com/wp-content/uploads/2026/01/Brand-radar-ahrefs-1.webp 1351w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Esto significa que la visibilidad de IESE en este contexto depende de su reputación en el ecosistema, no de su propio contenido. Un gap de keywords comparando iese.edu contra esade.edu nunca te mostraría esto, porque estás comparando URLs propias, no menciones externas.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">En ese sentido, estas herramientas funcionan más como un <strong>monitoreo de menciones contextualizado por intent</strong> que como un análisis SEO clásico. Te permiten ver dónde tu marca aparece (o no) en el "grafo de conocimiento" que el LLM ha construido a partir de múltiples fuentes y no solo de tu sitio.</p>
<p>Herramientas como Sistrix o Ahrefs <strong>también permiten monitorizar tus propios prompts personalizados</strong>. A mí personalmente no me resulta útil por las razones que he explicado, pero seamos realistas: siempre hay clientes a los que el jefe del jefe les pide "el informe de visibilidad de X prompts". Aunque sepas que las métricas absolutas no son fiables, al menos con estas herramientas tienes esa necesidad cubierta sin tener que montar algo desde cero.</p>
<p>Además me gusta su honestidad:</p>
<ul>
<li><a href="https://www.sistrix.com/">SISTRIX</a> reconoce que "la situación de datos para análisis LLM/IA son actualmente incluso más desafiantes que en Google o Amazon." Comparan el momento con los "primeros días del análisis de Google". Ofrecen su módulo de IA en beta gratuita sin prometer resultados de optimización. De hecho, el CEO de SISTRIX me confirma que están alejándose del concepto de "single prompt rankings" por carecer de validez estadística por la alta volatilidad y que están trabajando en Prompt Clustering como enfoque estratégico</li>
<li><a href="https://ahrefs.com/brand-radar">Ahrefs Brand Radar</a> documenta sus limitaciones: "No existen datos reales de demanda. Ninguna compañía tiene acceso a datos de volumen de búsqueda reales para ChatGPT." Admiten que "la atribución sigue siendo desafiante, trackear conversiones directas desde menciones de IA es casi imposible."</li>
</ul>
<h3>Datos de primera parte</h3>
<p>Antes de Google Search Console, el mercado también dependía de herramientas externas que estimaban rankings y tráfico. La aparición de datos de primera parte no eliminó las herramientas externas, pero sí redefinió su rol porque pasaron de ser la fuente principal a ser complementos para análisis competitivo.</p>
<p>Si Google extiende Search Console a AI Overviews y AI Mode, y OpenAI ofrece algo similar para ChatGPT con search, el valor de las herramientas third-party de tracking se reducirá aún más a lo que ya he defendido, que es al análisis competitivo de gaps por topics a escala masiva, no medición de "tu" visibilidad con prompts sintéticos.</p>
<h2 id="conclusion" style="scroll-margin-top: 100px;">Conclusión</h2>
<p>El mercado de herramientas de AI visibility tracking es una industria construida sobre fundamentos cuestionables. Las respuestas de LLMs son, por diseño, probabilísticas y personalizadas (lo opuesto de lo que se necesitaría para una medición precisa).</p>
<p><a href="https://natzir.com/analitica-web/estado-de-medibilidad-del-trafico-ia/">No argumento que no haya que medir</a>. Argumento que hay que entender qué estás midiendo, con qué limitaciones y a qué escala tiene sentido.</p>
<p>Los rankings son esencialmente aleatorios. El porcentaje de visibilidad agregado puede tener cierta validez si ejecutas suficientes repeticiones, pero las APIs dan resultados diferentes a las interfaces reales, la personalización hace imposible replicar la experiencia del usuario, y ninguna herramienta tiene acceso a las búsquedas reales que hacen los usuarios en chatbots LLM. Los procesos internos de chatbots IA como el de Google (query fan-out, reranking, SAGE) son técnicamente imposibles de replicar desde fuera, la mayoría de herramientas no distinguen entre conocimiento interno y retrieval  (algo que determina si puedes actuar o no), y el % de visibility es paradójicamente más estable para las marcas que ya son conocidas y menos lo necesitan.</p>
<p>Con márgenes brutos del 85-95%, el valor que capturan los vendors supera con creces el que entregan a los clientes. Este mercado vende certidumbre donde solo existe incertidumbre. Quien compre estas herramientas debe saber que está adquiriendo indicadores débiles y para nada verdades absolutas.</p>
<p><iframe loading="lazy" src="https://www.slideshare.net/slideshow/embed_code/key/zLgmXzaYbSL9CM?hostedIn=slideshare&page=upload" width="476" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/">Herramientas para medir visibilidad en IA: Lo que no te cuentan los Prompt Trackers</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/posicionamiento-buscadores/herramientas-medir-visibilidad-ia-prompt-trackers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>¿Influye el formato del prompt (JSON, YALM, TOON, Markdown, XML) en el rendimiento de los LLMs?</title>
		<link>https://natzir.com/posicionamiento-buscadores/prompts-json-yalm-toon-rendimiento-llms/</link>
					<comments>https://natzir.com/posicionamiento-buscadores/prompts-json-yalm-toon-rendimiento-llms/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Wed, 07 Jan 2026 13:58:34 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[inteligencia-artificial-seo]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3251</guid>

					<description><![CDATA[<p>Desde que hago automatizaciones con LLMs siempre he tratado de estructurar los prompts. Lo expliqué hace tiempo esta charla (minuto 48:30 y aquí el Google Colab usado), donde comenté los modelos no es que "hablen" en JSON, Markdown, YAML o XML, pero estos formatos estructurados pueden ayudar a conseguir salidas más consistentes. En concreto, expliqué [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/prompts-json-yalm-toon-rendimiento-llms/">¿Influye el formato del prompt (JSON, YALM, TOON, Markdown, XML) en el rendimiento de los LLMs?</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Desde que hago automatizaciones con LLMs siempre he tratado de estructurar los prompts. Lo expliqué hace tiempo esta charla (<a href="https://www.youtube.com/live/eKMgoof0otg?t=2912">minuto 48:30</a> y aquí el <a href="https://colab.research.google.com/drive/1HmKOzOUScrbz4WoMnXvib807dLUoP6kS">Google Colab usado</a>), donde comenté los modelos no es que "hablen" en JSON, Markdown, YAML o XML, pero estos formatos estructurados pueden ayudar a conseguir salidas más consistentes. <span id="more-3251"></span></p>
<p>En concreto, expliqué que <strong>usar prompts en formatos estructurados como JSON o YAML ayudan a guiar al modelo con mayor precisión</strong>, porque en lugar de texto plano, se presentan claves y valores que establecen parámetros claros.</p>
<ul>
<li><strong>Ventajas:</strong> Claridad (reduce ambigüedad), flexibilidad (múltiples parámetros), consistencia (formato uniforme) y escalabilidad (fácil integración en flujos automáticos o APIs).</li>
<li><strong>Limitaciones:</strong> Curva de aprendizaje y posible rigidez que reduce la creatividad del modelo en tareas abiertas.</li>
</ul>
<p>Pero con el tiempo y con la evolución de los modelos, me he dado cuenta de que <strong>no siempre es mejor trabajar de esta manera para todas las tareas</strong>. Así que me he propuesto ver si es cosa mía o si existe literatura reciente al respecto y a qué conclusiones llega.</p>
<p>Aquí os comparto el análisis de los principales estudios.</p>
<h2>Resumen ejecutivo</h2>
<p>La evidencia científica muestra que <strong>el formato sí influye significativamente</strong> en el rendimiento de los LLMs, pero su impacto varía según el tipo de tarea, el modelo utilizado y el tipo de restricción aplicada.</p>
<h3>Hallazgos principales</h3>
<div style="overflow-x: auto; -webkit-overflow-scrolling: touch;">
<table>
<thead>
<tr>
<th>Factor</th>
<th>Hallazgo</th>
</tr>
</thead>
<tbody>
<tr>
<td>Variación de rendimiento</td>
<td>Hasta 40-76% de diferencia en precisión según el formato utilizado</td>
</tr>
<tr>
<td>Tamaño del modelo</td>
<td>Modelos más grandes (GPT-4) son más robustos a variaciones de formato</td>
</tr>
<tr>
<td>Tipo de tarea</td>
<td>Tareas de razonamiento sufren más con restricciones estrictas de formato</td>
</tr>
<tr>
<td>Transferibilidad</td>
<td>Los mejores formatos NO se transfieren entre modelos diferentes</td>
</tr>
</tbody>
</table>
</div>
<h2>1. Does Prompt Formatting Have Any Impact on LLM Performance?</h2>
<p><a href="https://arxiv.org/pdf/2411.10541"><em>He et al., 2024 - arXiv:2411.10541</em></a></p>
<h3>Metodología</h3>
<p>Evaluaron cuatro formatos (texto plano, Markdown, JSON, YAML) en modelos GPT-3.5 y GPT-4 usando benchmarks de razonamiento en lenguaje natural, generación de código y traducción.</p>
<h3>Resultados</h3>
<ul>
<li><strong>Variación de hasta 40%:</strong> GPT-3.5-turbo mostró variaciones de rendimiento de hasta 40% en tareas de traducción de código dependiendo del template utilizado.</li>
<li><strong>Robustez de modelos grandes:</strong> GPT-4 es significativamente más robusto a estas variaciones que GPT-3.5.</li>
<li><strong>Preferencias de formato:</strong> GPT-3.5-turbo prefiere JSON, mientras que GPT-4 favorece Markdown.</li>
<li><strong>No hay formato universal:</strong> Ningún formato es óptimo para todas las tareas y modelos.</li>
</ul>
<h2>2. Let Me Speak Freely? A Study on the Impact of<br />
Format Restrictions on Performance of Large Language Models</h2>
<p><a href="https://arxiv.org/pdf/2408.02442"><em>Tam et al., 2024 - EMNLP Industry Track</em></a></p>
<h3>Metodología</h3>
<p>Compararon respuestas en formato libre vs. formatos estructurados (JSON, XML, YAML) en tareas de razonamiento y clasificación usando múltiples LLMs incluyendo GPT-4o, Claude, Gemini y LLaMA.</p>
<h3>Resultados</h3>
<ul>
<li><strong>Degradación del razonamiento:</strong> Las restricciones de formato estructurado (especialmente JSON-mode) reducen significativamente las capacidades de razonamiento de los LLMs en un 10-15%.</li>
<li><strong>Restricciones más estrictas = Mayor degradación:</strong> Cuanto más estricta es la restricción de formato, mayor es la pérdida de rendimiento en tareas de razonamiento.</li>
<li><strong>Clasificación vs. Razonamiento:</strong> Las tareas de clasificación se benefician de formatos estructurados, pero las de razonamiento sufren.</li>
<li><strong>Solución propuesta:</strong> Usar un enfoque de dos pasos: primero generar respuesta libre, luego convertir a formato estructurado.</li>
</ul>
<h2>3. Which Nested Data Format Do LLMs Understand Best?</h2>
<p><a href="https://www.improvingagents.com/blog/best-nested-data-format/"><em>Improving Agents, 2025</em></a></p>
<h3>Metodología</h3>
<p>Evaluaron GPT-5 Nano, LLaMA 3.2 3B y Gemini 2.5 Flash Lite con datos anidados en JSON, YAML, XML y Markdown usando 1.000 preguntas con datos Terraform-like de 6-7 niveles de anidamiento.</p>
<h3>Resultados</h3>
<ul>
<li><strong>YAML fue superior:</strong> Para GPT-5 Nano y Gemini, YAML produjo los mejores resultados. LLaMA mostró poca sensibilidad al formato.</li>
<li><strong>Markdown más eficiente:</strong> Markdown usó 34-38% menos tokens que JSON, siendo la opción más eficiente en costes.</li>
<li><strong>XML el peor rendimiento:</strong> XML requirió 80% más tokens que Markdown y tuvo peor precisión en la mayoría de modelos.</li>
<li><strong>JSON problemático:</strong> JSON tuvo rendimiento pobre con GPT-5 Nano y Gemini, sugiriendo evitarlo como formato por defecto.</li>
</ul>
<h2>4. Prompt Engineering for Structured Data</h2>
<p><a href="https://www.preprints.org/manuscript/202506.1937"><em>Elnashar, White &amp; Schmidt, 2025 - Artif. Intell. Auton. Syst.</em></a></p>
<h3>Metodología</h3>
<p>Compararon seis estilos de prompt (JSON, YAML, CSV, Function Calling APIs, prefijos simples, híbrido CSV/Prefix) en ChatGPT-4o, Claude y Gemini midiendo precisión, coste de tokens y tiempo de generación.</p>
<h3>Resultados</h3>
<ul>
<li><strong>Diferencias entre modelos:</strong> Claude logra mayor precisión consistentemente; ChatGPT-4o es el más eficiente en tokens y tiempo; Gemini ofrece un balance.</li>
<li><strong>Trade-offs:</strong> Formatos más simples reducen coste y tiempo con poca pérdida de precisión; formatos expresivos ofrecen más versatilidad para datos complejos.</li>
<li><strong>Limitación común:</strong> Todos los LLMs luchan con datos narrativos no estructurados (ej: historias personales) con precisión ~40%.</li>
</ul>
<h2>5. Estudios complementarios</h2>
<h3>5.1 FormatSpread (Sclar et al., ICLR 2024)</h3>
<p>Propusieron una <a href="https://arxiv.org/pdf/2310.11324">metodología para cuantificar la sensibilidad de LLMs a cambios de formato</a>. Encontraron diferencias de hasta <strong>76 puntos de precisión</strong> en LLaMA-2-13B por cambios menores como espacios, puntuación o mayúsculas.</p>
<h3>5.2 Mind Your Format (Voronov et al., 2024)</h3>
<p>Evaluaron 21 modelos (770M a 70B parámetros) en 4 datasets de clasificación. Demostraron que <a href="https://arxiv.org/pdf/2401.06766">una mala elección de template puede reducir el rendimiento de los mejores modelos</a> a <strong>nivel de adivinanza aleatoria</strong>. Propusieron Template Ensembles como solución.</p>
<h3>5.3 TOON Format (2025)</h3>
<p>TOON (<a href="https://github.com/toon-format/spec/blob/main/SPEC.md">Token-Oriented Object Notation</a>) es un nuevo formato estructurado diseñado para eficiencia de tokens. En el benchmark original, TOON logró <strong>73,9% de precisión vs 69,7% de JSON</strong> usando 39,6% menos tokens.</p>
<p>Pero ojo, porque estos datos provienen de los benchmarks propios del repositorio TOON, que presentan limitaciones metodológicas relevantes. Tests independientes de <a href="https://www.improvingagents.com/blog/is-toon-good-for-table-data">Improving Agents</a> sitúan a TOON en posición 9 de 12 formatos (47,5% de precisión) con GPT-4.1-nano, por debajo de JSON (52,3%) y lejos de Markdown-KV (60,7%). Con datos anidados y GPT-5-nano, TOON <a href="https://www.improvingagents.com/blog/toon-benchmarks/">quedó último</a> (43,1%) frente a YAML (62,1%) y JSON (50,3%). Un <a href="https://medium.com/@jmfloreszazo/toon-mcp-and-agents-less-hype-more-real-architecture-and-a-25-saving-that-actually-matters-e56c2ee9f737">análisis con datos reales de facturación</a> confirma que el ahorro de tokens real ronda el 25% (no el 30-60% promocionado) y que TOON no mejora la precisión del modelo. En resumen: el ahorro de tokens existe pero es más modesto, la ventaja de precisión no se sostiene fuera de los benchmarks oficiales, y su utilidad se limita a arrays uniformes de objetos en pipelines de alto volumen. Para datos anidados o complejos, YAML y Markdown siguen siendo mejores opciones.</p>
<h2>Síntesis: ¿Cuándo influye el formato?</h2>
<div style="overflow-x: auto; -webkit-overflow-scrolling: touch;">
<table>
<thead>
<tr>
<th>Situación</th>
<th>¿Influye?</th>
<th>Dirección del efecto</th>
<th>Recomendación</th>
</tr>
</thead>
<tbody>
<tr>
<td>Tareas de razonamiento complejo</td>
<td>SÍ - ALTO</td>
<td>Formatos estrictos degradan</td>
<td>Respuesta libre + conversión posterior</td>
</tr>
<tr>
<td>Tareas de clasificación</td>
<td>SÍ - MODERADO</td>
<td>Formatos estructurados ayudan</td>
<td>JSON/XML con schema estricto</td>
</tr>
<tr>
<td>Modelos pequeños (&lt;13B)</td>
<td>SÍ - MUY ALTO</td>
<td>Alta variabilidad</td>
<td>Probar múltiples formatos</td>
</tr>
<tr>
<td>Modelos grandes (GPT-4+)</td>
<td>SÍ - BAJO</td>
<td>Más robustos</td>
<td>Cualquier formato funciona</td>
</tr>
<tr>
<td>Datos anidados/jerárquicos</td>
<td>SÍ - ALTO</td>
<td>YAML &gt; JSON &gt; XML</td>
<td>Preferir YAML o Markdown</td>
</tr>
<tr>
<td>Optimización de costes</td>
<td>SÍ - ALTO</td>
<td>JSON consume 2x tokens vs TSV</td>
<td>Markdown o CSV/TSV</td>
</tr>
<tr>
<td>Few-shot prompting</td>
<td>SÍ - MUY ALTO</td>
<td>Formato de ejemplos crítico</td>
<td>Mantener consistencia</td>
</tr>
</tbody>
</table>
</div>
<h2>Conclusiones</h2>
<ol>
<li><strong>El formato SÍ importa:</strong> La evidencia científica es clara en que el formato del prompt tiene impacto significativo en el rendimiento, con variaciones de hasta 40-76% en precisión.</li>
<li><strong>El impacto es contextual:</strong> No hay un formato universalmente óptimo. El mejor formato depende de tipo de tarea (razonamiento vs clasificación), modelo utilizado y requisitos de coste/latencia.</li>
<li><strong>Trade-off razonamiento vs estructura:</strong> Existe una tensión fundamental entre obtener salidas estructuradas y preservar capacidades de razonamiento. Para tareas complejas, el enfoque de dos pasos mitiga este problema.</li>
<li><strong>Los modelos grandes son más robustos:</strong> GPT-4 y modelos similares muestran menor sensibilidad a variaciones de formato que modelos más pequeños.</li>
<li><strong>Recomendación práctica:</strong> Siempre probar múltiples formatos en tu caso de uso específico. Usar YAML o Markdown para datos anidados, CSV/TSV para tabular, y considerar el enfoque de dos pasos para tareas de razonamiento críticas.</li>
</ol>
<h2>Referencias</h2>
<ul>
<li>He, J. et al. (2024). <a href="https://arxiv.org/abs/2411.10541" target="_blank" rel="noopener">Does Prompt Formatting Have Any Impact on LLM Performance?</a> arXiv:2411.10541</li>
<li>Tam, Z.R. et al. (2024). <a href="https://aclanthology.org/2024.emnlp-industry.91/" target="_blank" rel="noopener">Let Me Speak Freely? A Study on the Impact of Format Restrictions.</a> EMNLP Industry Track.</li>
<li>Improving Agents (2025). <a href="https://www.improvingagents.com/blog/best-nested-data-format/" target="_blank" rel="noopener">Which Nested Data Format Do LLMs Understand Best?</a></li>
<li>Elnashar, A., White, J. &amp; Schmidt, D. (2025). <a href="https://www.elspub.com/papers/j/1946487439961579520.html" target="_blank" rel="noopener">Prompt Engineering for Structured Data.</a> Artif. Intell. Auton. Syst.</li>
<li>Sclar, M. et al. (2024). <a href="https://arxiv.org/abs/2310.11324" target="_blank" rel="noopener">Quantifying LLMs' Sensitivity to Spurious Features in Prompt Design.</a> ICLR 2024.</li>
<li>Voronov, A. et al. (2024). <a href="https://arxiv.org/abs/2401.06766" target="_blank" rel="noopener">Mind Your Format: Towards Consistent Evaluation of In-Context Learning.</a> arXiv:2401.06766</li>
<li>Mizrahi, M. et al. (2024). <a href="https://direct.mit.edu/tacl/article/doi/10.1162/tacl_a_00681/123885" target="_blank" rel="noopener">State of What Art? A Call for Multi-Prompt LLM Evaluation.</a> TACL.</li>
</ul>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/prompts-json-yalm-toon-rendimiento-llms/">¿Influye el formato del prompt (JSON, YALM, TOON, Markdown, XML) en el rendimiento de los LLMs?</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/posicionamiento-buscadores/prompts-json-yalm-toon-rendimiento-llms/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Por qué trocear tu contenido es malo para tu SEO y para la IA</title>
		<link>https://natzir.com/posicionamiento-buscadores/trocear-contenido-ia-seo/</link>
					<comments>https://natzir.com/posicionamiento-buscadores/trocear-contenido-ia-seo/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Sat, 20 Dec 2025 19:22:41 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[inteligencia-artificial-seo]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3204</guid>

					<description><![CDATA[<p>Hay una corriente de GEO Bros que ha descubierto dos palabras (chunks y embeddings) y ha decidido que el futuro del SEO es atomizar el contenido de tu web. Su lógica es que "como los LLMs funcionan por fragmentos y vectores, vamos a crear URLs ultra específicas para cada posible pregunta para que la IA lo [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/trocear-contenido-ia-seo/">Por qué trocear tu contenido es malo para tu SEO y para la IA</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hay una corriente de <strong>GEO Bros</strong> que ha descubierto dos palabras (<strong>chunks</strong> y <strong>embeddings</strong>) y ha decidido que <strong>el futuro del SEO es atomizar el contenido de tu web</strong>.</p>
<p>Su lógica es que "como los LLMs funcionan por fragmentos y vectores,<strong> vamos a crear URLs ultra específicas para cada posible pregunta para que la IA lo chunkee mejor</strong>"</p>
<p>El problema es que esa recomendación asume que Google funciona como una base de datos vectorial sencilla tipo ChromaDB o Pinecone... y no es así.</p>
<p>Hoy vamos a desmontar esta falacia y a explicar por qué <strong>el contenido consolidado en una URL sigue funcionando mejor</strong> (a menos que la SERP te pida especificidad como veremos al final).</p>
<h2>Mito 1: "antes era ranking, ahora es generación"</h2>
<p>Uno de los argumentos que más veo últimamente, y <a href="https://joshbudman.substack.com/p/the-introduction-of-llms-to-search">promovido en última ocasión por Joshua Budman</a>, es que los buscadores han dejado de hacer ranking para pasar a hacer generación. Lo cual es falso.</p>
<p>El pipeline de un sistema RAG (AI Overviews, ChatGPT...) tiene tres fases. Primero, el buscador recupera documentos candidatos (Recuperación). Luego filtra los mejores según señales de autoridad y relevancia (Selección). Finalmente, el LLM usa esos documentos para construir la respuesta (Generación).</p>
<p>Si tu contenido queda fuera del conjunto de candidatos por falta de señales de ranking clásicas, el LLM nunca lo verá. Da igual lo bonito que sea tu chunk.</p>
<p>Es decir, el pipeline sigue siendo: <strong>Recuperación (Ranking/Retrieval) → Selección (Re-ranking/Filtering) → Generación</strong>. Si no pasas el filtro de ranking, no existes para la generación <strong>y si troceas mal, te llevas de regalo <a href="https://natzir.com/posicionamiento-buscadores/que-es-como-resolver-canibalizacion-seo/">canibalización</a>, duplicidad y señales diluidas</strong>.</p>
<figure style="margin-bottom: 2em;"><picture> <img loading="lazy" decoding="async" src="https://natzir.com/wp-content/uploads/2025/12/canibalizacion-google-1024x734.webp" alt="Canibalizacion google" width="1024" height="734" class="alignnone size-large wp-image-3220" style="margin-bottom: 0.5em;" srcset="https://natzir.com/wp-content/uploads/2025/12/canibalizacion-google-1024x734.webp 1024w, https://natzir.com/wp-content/uploads/2025/12/canibalizacion-google-350x251.webp 350w, https://natzir.com/wp-content/uploads/2025/12/canibalizacion-google-768x551.webp 768w, https://natzir.com/wp-content/uploads/2025/12/canibalizacion-google-1536x1101.webp 1536w, https://natzir.com/wp-content/uploads/2025/12/canibalizacion-google.webp 1568w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></picture><figcaption>Fuente: <a href="https://developers.google.com/search/blog/2010/03/googles-seo-report-card">Google's SEO Report Card</a></figcaption></figure>
<p>Además, Budman, en su análisis, elimina las variables de ranking de la ecuación. Curiosamente, el paper original de RAG que él mismo enlaza sí las incluye. Y más curioso es que su propio ejemplo de Zapier (el único que ha usado para demostrar su argumento) muestra la pillar page en posición #1 orgánico, contradiciendo su tesis. Por lo menos él mismo admite que "el SEO clásico sigue ganando por ahora"... ¿entonces por qué hacer tanto ruido?</p>
<h2>Mito 2: "penalización por longitud"</h2>
<p>También se está argumentando que las páginas largas pierden relevancia matemática frente a las cortas. Vamos a ver qué hay de cierto.</p>
<p>Se está diciendo que BM25 penaliza los documentos largos. En realidad, <strong>BM25 (evolución de TF-IDF) introduce un término de normalización por longitud</strong> (1 − b + b · |D|/avgdl) cuyo objetivo es ajustar la frecuencia del término en función de la densidad del documento, <strong>no castigar documentos largos</strong> de forma arbitraria.</p>
<p>Además, <strong>Google lleva usando <a href="https://blog.google/products/search/search-on/">Passage Ranking desde 2020</a></strong>. Esto significa que evalúa y recupera pasajes individuales dentro de una página. No necesitas una página corta para ser recuperable porque el sistema ya extrae los fragmentos relevantes por ti.</p>
<h2>Mito 3: "la mezcla semántica ensucia el embedding"</h2>
<p>Otra simplificación típica que no para de aparecer es que "si mezclas subtemas en una página, el vector se vuelve impuro y el coseno de similitud (o producto escalar) baja".</p>
<p>En producción, los sistemas no representan una URL compleja como un único vector. Usan segmentación, agregación, <a href="https://natzir.com/posicionamiento-buscadores/busqueda-hibrida/">múltiples etapas de ranking</a>, y arquitecturas como Late Interaction (<a href="https://natzir.com/posicionamiento-buscadores/seo-para-muvera-muvera-update/">ColBERT</a>) o sistemas propios de Google (<a href="https://natzir.com/posicionamiento-buscadores/calidad-topicalidad-ranking-google/">RankEmbed, DeepRank) que se entrenan con datos de clics y evaluaciones humanas.</a> Todas permiten manejar documentos complejos sin reducirlos a un único vector.</p>
<h2>Mito 4: "tienes que chunkear tu contenido para la IA"</h2>
<p>Y aquí viene la ironía porque <a href="https://youtu.be/4KyYqe1s_XY?si=QNBb9KOJ1qT7VzZD&amp;t=2587">los GEO Bros te dicen que trocees tu contenido</a> para que encaje mejor en los chunks que hacen los LLMs. Pero no sabemos cómo lo hacen. ¿Cortes de 500 tokens? ¿1000? ¿Overlap del 20%? ¿Heurísticas semánticas o por estructura DOM? Nadie lo sabe. Estás optimizando para un algoritmo que desconoces.</p>
<div style="background: #f0f7ff; border-left: 4px solid #0066cc; padding: 1em 1.5em; margin-bottom: 2em;"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Update (9 enero 2026):</strong> Danny Sullivan en Search Off the Record <a href="https://search-off-the-record.libsyn.com/seo-aio-geo-your-site-third-party-support-to-optimize-for-llms">ha dicho exactamente esto</a>: no trocees tu contenido en "bite-sized chunks" pensando que así le gusta a los LLMs. Y añade: aunque hoy te funcione, <em>"tomorrow the systems may change"</em>. Estás invirtiendo esfuerzo en optimizar para un algoritmo que desconoces y que además va a evolucionar.</div>
<div style="background: #f0f7ff; border-left: 4px solid #0066cc; padding: 1em 1.5em; margin-bottom: 2em;"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Update (26 enero 2026):</strong> Perplexity ha reconocido que su motor <a href="https://www.searchenginejournal.com/perplexity-ai-interview-explains-how-ai-search-works/565395/">trocea los textos en fragmentos de apenas 7 tokens para alimentar a su IA</a>, un tamaño tan minúsculo que intentar optimizar para eso es, directamente, perder el tiempo. También confirman que "las mejores prácticas de SEO tradicional siguen aplicando" y que usan una forma de PageRank. Nada nuevo bajo el sol. <a href="https://natzir.com/posicionamiento-buscadores/llmo-geo-leo-gaio-lso-seo-como-hacer-seo-chatgpt/">El SEO clásico sigue funcionando para la IA</a>.</div>
<p>La realidad creo que es mucho más simple: si un humano puede entender un párrafo sin contexto adicional, cualquier sistema de chunking funcionará bien con él. Escribe claro y directo porque el mejor chunking es el que no tienes que pensar.</p>
<figure style="margin-bottom: 2em;"><picture> <img loading="lazy" decoding="async" src="https://natzir.com/wp-content/uploads/2025/12/chunking-ai-search-1024x577.webp" alt="Chunking ai search" width="1024" height="577" class="alignnone size-large wp-image-3210" style="margin-bottom: 0.5em;" srcset="https://natzir.com/wp-content/uploads/2025/12/chunking-ai-search-1024x577.webp 1024w, https://natzir.com/wp-content/uploads/2025/12/chunking-ai-search-350x197.webp 350w, https://natzir.com/wp-content/uploads/2025/12/chunking-ai-search-768x433.webp 768w, https://natzir.com/wp-content/uploads/2025/12/chunking-ai-search.webp 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></picture><figcaption>Fuente: <a href="https://www.youtube.com/watch?v=D2PBYERWbZA&amp;list=PL12EGtQ3T3jtNWUwfZJjaXt9v-80os0l6&amp;index=1">Natzir Turrado - SEO para la IA: mitos, verdades y el futuro de la búsqueda</a></figcaption></figure>
<h2>Qué sabemos del funcionamiento de los buscadores</h2>
<p>Para entender por qué el contenido consolidado funciona, debemos de mirar lo que creemos que sabemos de la <a href="https://natzir.com/posicionamiento-buscadores/como-funciona-google-algoritmos/">arquitectura de Google</a>:</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong>Navboost "penaliza" tus micro-páginas: </strong>Gracias a las filtraciones del juicio antimonopolio sabemos que <a href="https://natzir.com/posicionamiento-buscadores/calidad-topicalidad-ranking-google/">Navboost es una señal basada en el comportamiento del usuario que se alimenta de clics satisfactorios y largos (long clicks)</a>. Si atomizas tu contenido, obligas al usuario a hacer <strong>pogo-sticking</strong>: entra, no encuentra la info completa, sale, busca otro resultado. Tu métrica de satisfacción se desploma y Navboost hunde tu ranking. El contenido consolidado retiene al usuario y acumula señales positivas.</li>
<li><strong>RankBrain agrupa intenciones</strong>: RankBrain ayuda a Google a entender que distintas queries tienen la misma intención subyacente. Cuando creas páginas separadas para variaciones semánticas mínimas, estás luchando contra el agrupamiento de intención que hace RankBrain. Google preferirá una URL que satisfaga el centro de gravedad de esa intención agrupada. Yo deduzco además que <a href="https://natzir.com/posicionamiento-buscadores/como-funciona-google-algoritmos/"><strong>QBST</strong> y <strong>Term Weighting</strong></a> son componentes de RankBrain.</li>
<li><strong>Query Augmentation y el "Fan-Out"</strong>: <a href="https://surferseo.com/blog/query-fan-out-impact/">Un reciente estudio de Surfer SEO</a> ha descubierto una correlación del +161% entre ser citado en AI Overviews y rankear para la main query más sus fan-out queries (sub-preguntas). La lectura que tenemos que hacer es que esto valida los <strong>Topic Clusters</strong> de toda la vida... Google usa Query Augmentation (expansión de consulta), por lo que si tienes una <strong>Pillar Page</strong> robusta, cubres léxica y semánticamente tanto la query original como sus expansiones. Al consolidar, maximizas tu puntuación en sistemas como RRF (Reciprocal Rank Fusion), que premia a los documentos fuertes tanto en vocabulario como en cobertura temática. Y oye, en <a href="https://natzir.com/posicionamiento-buscadores/lo-que-los-leaks-de-gpt-5-nos-ensenan-sobre-seo-para-la-ia/">ChatGPT y otras IAs que hacen fan-out esto también es así como explico aquí</a>. Y otro dato del estudio es que el 54% de las citas visibles en AI Overviews (posiciones 1-3) rankean orgánicamente. <strong>Si quieres estar en las citas que importan, primero tienes que rankear</strong>.</li>
<li><strong>Information Co-Location en agentes de deep search</strong>: El <a href="https://arxiv.org/pdf/2601.18202">paper SAGE de Google (enero 2026)</a> analiza cómo entrenan a sus agentes para tareas de búsqueda compleja. Identifican que en el 35% de los casos, cuando la información necesaria está co-localizada en el mismo documento, el agente resuelve en un solo hop lo que deberían ser múltiples búsquedas. Otro 21% de las veces, una query bien formulada colapsa varios pasos porque el documento cubre el tema de forma completa. <strong>Consolidar contenido semánticamente relacionado reduce la complejidad de búsqueda para los agentes y aumenta la probabilidad de que te usen como fuente.</strong></li>
</ul>
</li>
</ul>
<p>Si mi análisis no te convence, escucha a lo que acaba de decir <strong>Microsoft</strong>. El equipo de <a href="https://blogs.bing.com/webmaster/December-2025/Does-Duplicate-Content-Hurt-SEO-and-AI-Search-Visibility">Bing publicó recientemente un aviso sobre el contenido duplicado o "near-duplicate" en la era de la IA</a>. Dicen que cuando existen varias versiones de la misma página, las señales se vuelven confusas/difusas. ¿Lo podríamos llamar <strong>Intent Signal Blurring</strong> (difuminado de señales de intención)? Es más fancy que dilución de señales <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Cuando troceas un tema en cinco páginas con contenido solapado ("Qué es X", "Ventajas de X", "Cómo usar X"), <strong>los LLM tienden a agrupar URLs similares y elegir solo una para representarlas</strong>. A menudo eligen la equivocada. Mientras tanto, tus enlaces, clics y autoridad se dividen entre cinco URLs débiles en lugar de concentrarse en una fuerte.</p>
<p><strong>Bing</strong> acaba diciendo en el artículo que <strong>"para el SEO y la IA, menos es más".</strong></p>
<h2>Entonces: ¿qué hacer a día de hoy?</h2>
<p><strong>No defiendo las Pillar Pages sin más</strong>, lo que defiendo consolidar cuando la SERP (tras ser ordenada por el usuario) lo piden.</p>
<figure style="margin-bottom: 2em;"><picture><img loading="lazy" decoding="async" src="https://natzir.com/wp-content/uploads/2025/12/UPX0228-google-is-magical.webp" alt="UPX0228 Google is magical" width="1024" height="734" class="alignnone size-large wp-image-3220" style="margin-bottom: 0.5em;" /></picture><figcaption>Fuente: <a href="https://natzir.com/posicionamiento-buscadores/como-funciona-google-algoritmos/">Documento UPX0228, Google presentation: Google is magical, parte de los Trial Exhibits del caso U.S. and Plaintiff States v. Google LLC</a></figcaption></figure>
<p>Mi regla es analizar la SERP para la queries similares. ¿Google muestra resultados distintos que para la query general?</p>
<ul>
<li>Si <strong>sí</strong>, crea una página específica porque la intención es distinta.</li>
<li>Si <strong>no</strong>, o se solapan mayoritariamente, consolida.</li>
</ul>
<p>Ojo, porque <strong>consolidar sin UX es un suicidio</strong>. Defender el contenido consolidado no significa defender un "muro de texto" de 5.000 palabras imposible de navegar.</p>
<p>Si gracias a tu autoridad temática logras rankear para una query muy específica (ej: "cuál tiene mejor cámara telf X o telf Y"), pero el usuario aterriza en la cabecera de tu mega-guía y tiene que hacer scroll manual durante dos minutos para encontrar el dato, <strong>se va a ir</strong>. Y ahí Navboost te matará igual que si tuvieras una página pobre.</p>
<p>Para que la estrategia de consolidación venza a la especificidad de las micro-páginas, tu contenido debe tener una <strong>arquitectura de información impecable</strong> que permita la recuperación inmediata de la respuesta:</p>
<ul>
<li><strong>Anclas HTML y ToC:</strong> Vitales. No solo para que el usuario navegue, sino para permitir que Google entienda la estructura y ejecute el <strong>Scroll-to-text-fragment</strong> (llevando al usuario directo al párrafo resaltado).</li>
<li><strong>Módulos visuales y semiótica:</strong> El usuario no lee, escanea. Si tu sección habla de "Cámaras", usa iconos de cámaras, gráficos de barras o comparativas visuales. El cerebro procesa la imagen 60.000 veces más rápido que el texto. Si el usuario ve una sección de vs., un icono de una cámara y una tabla con "Checks verdes", sabe que ahí está la conclusión sin necesidad de leer nada.</li>
<li><strong>Tablas y listas &gt; párrafos:</strong> Si estás comparando especificaciones, una tabla es infinitamente más eficiente (para el humano y para la extracción de datos del LLM) que tres párrafos de prosa.</li>
<li><strong>Diseño de respuesta directa:</strong> Si una sección responde a una pregunta concreta, ve al grano. Coloca la respuesta en las primeras 2 líneas de la sección. No des rodeos.</li>
</ul>
<p>Si haces esto bien, consigues lo mejor de los dos mundos y la <strong>resolución inmediata de intención</strong> del chunk sumará puntos a tu Pilar Page.</p>
<p>Así que deja de optimizar para una base de datos vectorial imaginaria y antigua. Los usuarios no quieren visitar cinco páginas para entender un concepto. Los buscadores no quieren gastar recursos rastreando duplicados. Y los sistemas RAG necesitan fuentes de autoridad que hayan pasado primero el filtro del ranking.</p>
<p>Optimiza para la realidad de los buscadores híbridos con señales fuertes, autoridad consolidada y satisfacción de usuario.</p>
<p>Relacionado:</p>
<blockquote class="wp-embedded-content" data-secret="lS6xBkIVjb"><p><a href="https://natzir.com/posicionamiento-buscadores/como-funciona-google-algoritmos/">Los algoritmos de Google al descubierto. Cómo funciona el buscador según documentos filtrados</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="«Los algoritmos de Google al descubierto. Cómo funciona el buscador según documentos filtrados» — Natzir Turrado" src="https://natzir.com/posicionamiento-buscadores/como-funciona-google-algoritmos/embed/#?secret=XcqeMLtkBp#?secret=lS6xBkIVjb" data-secret="lS6xBkIVjb" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<blockquote class="wp-embedded-content" data-secret="CZLcU6jVVr"><p><a href="https://natzir.com/posicionamiento-buscadores/llmo-geo-leo-gaio-lso-seo-como-hacer-seo-chatgpt/">No es GEO ni AEO es sólo SEO: cómo hacer SEO para la IA</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="«No es GEO ni AEO es sólo SEO: cómo hacer SEO para la IA» — Natzir Turrado" src="https://natzir.com/posicionamiento-buscadores/llmo-geo-leo-gaio-lso-seo-como-hacer-seo-chatgpt/embed/#?secret=m58bGAPNu0#?secret=CZLcU6jVVr" data-secret="CZLcU6jVVr" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<blockquote class="wp-embedded-content" data-secret="iYv9iU5X2p"><p><a href="https://natzir.com/posicionamiento-buscadores/busqueda-hibrida/">Búsqueda híbrida y su importancia en AI Search: de Google a ChatGPT</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="«Búsqueda híbrida y su importancia en AI Search: de Google a ChatGPT» — Natzir Turrado" src="https://natzir.com/posicionamiento-buscadores/busqueda-hibrida/embed/#?secret=8IjQbzt0gH#?secret=iYv9iU5X2p" data-secret="iYv9iU5X2p" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<blockquote class="wp-embedded-content" data-secret="83PFsUFJFM"><p><a href="https://natzir.com/posicionamiento-buscadores/calidad-topicalidad-ranking-google/">Cómo Google define y calcula la Calidad (Q) y la Topicalidad (T) y su influencia en el ranking</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="«Cómo Google define y calcula la Calidad (Q) y la Topicalidad (T) y su influencia en el ranking» — Natzir Turrado" src="https://natzir.com/posicionamiento-buscadores/calidad-topicalidad-ranking-google/embed/#?secret=K3YVcRb9Vz#?secret=83PFsUFJFM" data-secret="83PFsUFJFM" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<blockquote class="wp-embedded-content" data-secret="A1dQJtDOWN"><p><a href="https://natzir.com/posicionamiento-buscadores/lo-que-los-leaks-de-gpt-5-nos-ensenan-sobre-seo-para-la-ia/">Lo que los leaks de ChatGPT nos enseñan sobre SEO para la IA</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="«Lo que los leaks de ChatGPT nos enseñan sobre SEO para la IA» — Natzir Turrado" src="https://natzir.com/posicionamiento-buscadores/lo-que-los-leaks-de-gpt-5-nos-ensenan-sobre-seo-para-la-ia/embed/#?secret=suxV1QFVHZ#?secret=A1dQJtDOWN" data-secret="A1dQJtDOWN" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/trocear-contenido-ia-seo/">Por qué trocear tu contenido es malo para tu SEO y para la IA</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/posicionamiento-buscadores/trocear-contenido-ia-seo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Extracción de contenido HTML en LLMs con search tool</title>
		<link>https://natzir.com/posicionamiento-buscadores/experimento-analisis-de-extraccion-de-contenido-html-en-claude/</link>
					<comments>https://natzir.com/posicionamiento-buscadores/experimento-analisis-de-extraccion-de-contenido-html-en-claude/#respond</comments>
		
		<dc:creator><![CDATA[Natzir Turrado]]></dc:creator>
		<pubDate>Thu, 06 Nov 2025 15:20:29 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<guid isPermaLink="false">https://natzir.com/?p=3136</guid>

					<description><![CDATA[<p>Este análisis documenta un experimento diseñado para evaluar las capacidades de extracción de contenido estructurado desde páginas HTML con diferentes patrones de maquetación. El objetivo era identificar qué estructuras HTML permiten una extracción exitosa de información y cuáles presentan desafíos para sistemas automatizados de lectura. Se probaron 15 variantes de páginas HTML, cada una conteniendo [&#8230;]</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/experimento-analisis-de-extraccion-de-contenido-html-en-claude/">Extracción de contenido HTML en LLMs con search tool</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Este análisis documenta un experimento diseñado para evaluar las capacidades de extracción de contenido estructurado desde páginas HTML con diferentes patrones de maquetación. El objetivo era identificar qué estructuras HTML permiten una extracción exitosa de información y cuáles presentan desafíos para sistemas automatizados de lectura.</p>
<p>Se probaron 15 variantes de páginas HTML, cada una conteniendo información de productos (nombre, descripción y precio) pero estructuradas de formas radicalmente diferentes. Los resultados revelan patrones interesantes sobre cómo los sistemas de extracción interpretan el contenido web.</p>
<p><span id="more-3136"></span></p>
<h2>Cómo funciona la extracción de contenido en LLMs</h2>
<p>Cuando los LLMs hacen scraping de páginas web a través de sus herramientas integradas (como web_fetch en Claude, web tool en ChatGPT...), normalmente no ejecutan JavaScript. Es una petición HTTP simple que descarga el HTML estático del servidor. Esto significa que:</p>
<ul>
<li>No se ejecutan scripts de JavaScript</li>
<li>No se renderizan estilos CSS</li>
<li>No hay contexto visual/renderizado</li>
<li>Solo se obtiene el HTML crudo del servidor</li>
</ul>
<p>Si el sistema usa un navegador sin UI (headless), sí se ejecuta JS y se puede renderizar el DOM dinámico (Puppeteer/Headless Chrome, Playwright). Algunos agentes y scrapers hacen esto explícitamente como Gemini con Googlebot.</p>
<p>Algunos pipelines usan extractores tipo Readability (usado por Firefox Reader View) para detectar el “main content” (basado en heurísticos) y a veces convierten a Markdown con librerías tipo Turndown.js. No obstante, no es universal. Otros (como los basados en <a href="https://chromium.googlesource.com/chromium/src/+/refs/heads/main/third_party/blink/renderer/modules/content_extraction">APC</a> de <a href="https://www.chromium.org/blink/">Blink, Chromium</a>) generan una representación estructurada del árbol de layout (con texto, imágenes, formularios, geometrías, roles), y luego pueden ofrecer “vistas” como Markdown estructurado o “chunks” de pasajes. No es sólo un “reader mode” simplificado.</p>
<p><strong>Los LLMs no ven el HTML completo</strong>. Las heurísticas de extracción filtran lo que consideran "ruido" antes de pasar el contenido al modelo. El proceso básicamente consiste en:</p>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">HTML crudo → Algoritmo de detección → Contenido "principal"
</pre>
<p>Los extractores tipo <strong>Readability</strong> usan heurísticas documentadas (densidad de texto, link-density, clases/IDs con señales positivas/negativas) y suelen de-priorizar boilerplate (nav/footer/aside), pero no hay una  Además, en pipelines estructurales (APC) la fuente es el layout tree, y el peso proviene de estructura/rol/visibilidad.</p>
<p>El comportamiento de Claude en el experimento es consistente con un extractor heurístico tipo <strong>Trafilatura</strong>/Readability (filtrado de boilerplate, sensibilidad a cohesión estructural, peso del H1). Anthropic no ha publicado qué librería concreta usa internamente, pero los patrones observados encajan con esa familia de pipelines. Además, he descubierto la abreviatura "<strong>traf"</strong> en el schema interno del extractor de Anthropic, lo que sugiere (pero no confirma) que sea Trafilatura.</p>
<p>Así que el sistema identifica qué es "contenido principal" usando heurísticas como:</p>
<ul>
<li>Densidad de texto en contenedores</li>
<li>Eliminación de elementos "no-contenido".</li>
<li>Se eliminan o ignoran elementos considerados "ruido":</li>
</ul>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">// Elementos típicamente filtrados como boilerplate
&lt;nav&gt;, &lt;footer&gt;, &lt;aside&gt;, &lt;script&gt;, &lt;style&gt;, 
&lt;iframe&gt;, &lt;meta&gt;, comentarios HTML
</pre>
<p>Es uno de los motivos por los cuales <a href="https://natzir.com/posicionamiento-buscadores/agentes-web-y-la-importancia-del-html-semantico-y-accesible/#datos-estructurados">ninguna web tool que hace fetch dentro de un LLM lee schema</a>.</p>
<p>Nota: En <strong>APC</strong>, como decíamos antes, esto se hace a partir del <strong>layout tree</strong>, la presencia/ausencia depende de <strong>visibilidad, rol, y si el contenido es "user-visible", pero los scripts se excluyen explícitamente.</strong></p>
<h2>Metodología</h2>
<p>Cada archivo HTML contenía la misma información básica de un producto ficticio, pero presentada con diferentes patrones de maquetación:</p>
<ul>
<li>Variaciones en el nivel de anidamiento de divs</li>
<li>Uso de elementos semánticos vs no semánticos</li>
<li>Diferentes posiciones del precio en el DOM</li>
<li>Estructuras con listas, blockquotes y elementos de encabezado</li>
<li>Texto plano con saltos de línea</li>
<li>Estructuras HTML5 semánticas (article, section, header, footer)</li>
</ul>
<p>El promp era el siguiente:</p>
<blockquote><p>Entra en cada una de estas URLs, una detrás de otra, y extrae la información del producto. Responde con el nombre del producto, descripción y precio. Si no encuentras algún campo, pon "vacío":<br />
URL1<br />
URL2<br />
...<br />
Por favor, formatea tu respuesta así para cada URL:<br />
URL: [URLN]<br />
- Nombre del producto: [lo que encuentres]<br />
- Descripción: [lo que encuentres]<br />
- Precio: [lo que encuentres]</p></blockquote>
<p>Este experimento se ha realizado con <strong>Gemini, ChatGPT y Claude</strong> en todos sus modelos en producción, en modo de chat temporal (sin memoria persistente). Sin embargo, <strong>solo se documentan los resultados de Claude</strong> porque en las otras IAs la extracción fue exitosa independientemente de la estructura HTML utilizada.</p>
<p>Para evitar posibles alucinaciones y validar los resultados, se realizó una segunda ronda de pruebas revisando cada URL individualmente. En esta ocasión, se solicitó específicamente que devolviera todo el texto visible en la página. Los resultados fueron idénticos a la primera extracción, confirmando que las limitaciones observadas son consistentes y no producto de errores aleatorios del modelo.</p>
<h2>Resultados</h2>
<h3>Categoría 1: DIVs Anidados</h3>
<h4>Ejemplo 1a: DIVs anidados básicos <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;div&gt;
    &lt;div&gt;
        &lt;div&gt;
            &lt;div&gt;
                &lt;div&gt;TechStore Premium&lt;/div&gt;
                &lt;div&gt;Monitor UltraWide 34"&lt;/div&gt;
                &lt;div&gt;Resolución 3440x1440, 144Hz, panel IPS con HDR400.&lt;/div&gt;
                &lt;div&gt;
                    &lt;div&gt;$899.00&lt;/div&gt;
                    &lt;button&gt;Comprar ahora&lt;/button&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
</pre>
<p><strong>Resultado:</strong></p>
<ul>
<li>Nombre: Monitor UltraWide 34"</li>
<li>Descripción: Resolución 3440x1440, 144Hz, panel IPS con HDR400.</li>
<li>Precio: <strong>vacío</strong></li>
</ul>
<h4>Ejemplo 1b: DIVs anidados con Schema en microdata <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;body&gt;
  &lt;div itemscope itemtype="https://schema.org/Product"&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;div itemprop="brand" itemscope itemtype="https://schema.org/Brand"&gt;
              &lt;span itemprop="name"&gt;TechStore Premium&lt;/span&gt;
            &lt;/div&gt;
            &lt;div itemprop="name"&gt;Monitor UltraWide 34"&lt;/div&gt;
            &lt;div itemprop="description"&gt;
              Resolución 3440x1440, 144Hz, panel IPS con HDR400.
            &lt;/div&gt;
            &lt;div itemprop="offers" itemscope itemtype="https://schema.org/Offer"&gt;
              &lt;div&gt;
                &lt;meta itemprop="priceCurrency" content="USD"&gt;
                &lt;span itemprop="price" content="899.00"&gt;$899.00&lt;/span&gt;
              &lt;/div&gt;
              &lt;button&gt;Comprar ahora&lt;/button&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
</pre>
<p><strong>Resultado:</strong></p>
<ul>
<li>Igual que el anterior.</li>
</ul>
<h4>Ejemplo 1c: DIVs más anidados <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;div&gt;
    &lt;div&gt;
        &lt;div&gt;
            &lt;div&gt;
                &lt;div&gt;
                    &lt;div&gt;TechStore Premium&lt;/div&gt;
                    &lt;div&gt;Monitor UltraWide 34"&lt;/div&gt;
                    &lt;div&gt;Resolución 3440x1440, 144Hz, panel IPS con HDR400.&lt;/div&gt;
                    &lt;div&gt;
                        &lt;div&gt;
                            &lt;div&gt;$899.00&lt;/div&gt;
                            &lt;button&gt;Comprar ahora&lt;/button&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
</pre>
<p><strong>Resultado:</strong> Idéntico al anterior, el precio no se extrajo.</p>
<h4>Ejemplo 1d: Precio fuera del contenedor principal <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;div&gt;
    &lt;div&gt;
        &lt;div&gt;
            &lt;div&gt;
                &lt;div&gt;TechStore Premium&lt;/div&gt;
                &lt;div&gt;Monitor UltraWide 34"&lt;/div&gt;
                &lt;div&gt;Resolución 3440x1440, 144Hz, panel IPS con HDR400.&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;$899.00&lt;/div&gt;
    &lt;button&gt;Comprar ahora&lt;/button&gt;
&lt;/div&gt;
</pre>
<p><strong>Resultado:</strong> Precio no extraído, a pesar de estar en el mismo nivel jerárquico que el contenedor principal.</p>
<h4>Ejemplo 1f: Precio con símbolo al final <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;div&gt;
    &lt;div&gt;
        &lt;div&gt;
            &lt;div&gt;
                &lt;div&gt;TechStore Premium&lt;/div&gt;
                &lt;div&gt;Monitor UltraWide 34"&lt;/div&gt;
                &lt;div&gt;Resolución 3440x1440, 144Hz, panel IPS con HDR400.&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;899.00$&lt;/div&gt;
    &lt;button&gt;Comprar ahora&lt;/button&gt;
&lt;/div&gt;
</pre>
<p><strong>Resultado:</strong> Precio no extraído, independientemente del formato monetario.</p>
<h4>Ejemplo 1e: Precio dentro del contenedor <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;div&gt;
    &lt;div&gt;
        &lt;div&gt;
            &lt;div&gt;
                &lt;div&gt;TechStore Premium&lt;/div&gt;
                &lt;div&gt;Monitor UltraWide 34"&lt;/div&gt;
                &lt;div&gt;Resolución 3440x1440, 144Hz, panel IPS con HDR400.&lt;/div&gt;
                &lt;div&gt;$899.00&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;button&gt;Comprar ahora&lt;/button&gt;
&lt;/div&gt;
</pre>
<p><strong>Resultado:</strong></p>
<ul>
<li>Nombre: Monitor UltraWide 34"</li>
<li>Descripción: Resolución 3440x1440, 144Hz, panel IPS con HDR400.</li>
<li>Precio: <strong>$899.00</strong></li>
</ul>
<h3>Categoría 2: Elementos Semánticos</h3>
<h4>Ejemplo 2: Lista UL <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;ul&gt;
    &lt;li&gt;CameraWorld&lt;/li&gt;
    &lt;li&gt;Cámara Mirrorless Z9&lt;/li&gt;
    &lt;li&gt;Sensor full frame 45MP, video 8K, estabilización IBIS de 5 ejes.&lt;/li&gt;
    &lt;li&gt;$4,599.99&lt;/li&gt;
    &lt;li&gt;&lt;button&gt;Añadir al carrito&lt;/button&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p><strong>Resultado:</strong> Extracción completa exitosa. Las listas proporcionan una estructura clara y secuencial.</p>
<h4>Ejemplo 3: Blockquote <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;blockquote&gt;
    &lt;cite&gt;AudioTech Solutions&lt;/cite&gt;
    &lt;q&gt;Micrófono Podcast Pro USB&lt;/q&gt;
    &lt;p&gt;Patrón cardioide, filtro pop integrado, monitoreo zero-latency.&lt;/p&gt;
    &lt;strong&gt;$229.90&lt;/strong&gt;
    &lt;button&gt;Ordenar&lt;/button&gt;
&lt;/blockquote&gt;
</pre>
<p><strong>Resultado:</strong> Extracción completa. Claude no filtra &lt;blockquote&gt; &lt;cite&gt; o &lt;q&gt;.</p>
<h4>Ejemplo 4: Headers desordenados <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;h6&gt;SmartHome Express&lt;/h6&gt;
&lt;h3&gt;Termostato Inteligente WiFi&lt;/h3&gt;
&lt;h5&gt;Control desde app, programación automática, ahorro energético del 30%.&lt;/h5&gt;
&lt;h4&gt;$179.00&lt;/h4&gt;
&lt;h2&gt;&lt;button&gt;Comprar producto&lt;/button&gt;&lt;/h2&gt;
</pre>
<p><strong>Resultado:</strong> Extracción completa, a pesar del orden no semántico de los encabezados. Los elementos de encabezado tienen peso suficiente para ser valorados.</p>
<h4>Ejemplo 5: Texto plano con BR <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;body&gt;
    GamerPro Shop&lt;br&gt;
    Mouse Gaming RGB Elite&lt;br&gt;
    16000 DPI ajustable, 11 botones programables, peso personalizable.&lt;br&gt;
    $89.99&lt;br&gt;
    &lt;button&gt;Agregar&lt;/button&gt;
&lt;/body&gt;
</pre>
<p><strong>Resultado:</strong> Extracción completa. El texto plano con saltos de línea es fácilmente interpretable como contenido secuencial.</p>
<h3>Categoría 3: HTML5 Semántico</h3>
<h4>Ejemplo 6: Article-Section caótico <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;section&gt;
    &lt;article&gt;
        &lt;section&gt;FitTech Wearables&lt;/section&gt;
        &lt;article&gt;Banda Fitness Pro 6&lt;/article&gt;
    &lt;/section&gt;
    &lt;aside&gt;Medición SpO2, sueño, 120 modos deportivos, batería 14 días.&lt;/aside&gt;
    &lt;article&gt;
        &lt;section&gt;$149.50&lt;/section&gt;
        &lt;button&gt;Adquirir ahora&lt;/button&gt;
    &lt;/article&gt;
&lt;/section&gt;
</pre>
<p><strong>Resultado:</strong></p>
<ul>
<li>Nombre: Banda Fitness Pro 6</li>
<li>Descripción: <strong>vacío</strong></li>
<li>Precio: $149.50</li>
</ul>
<p>La descripción estaba en un elemento aside, que parece haberse filtrado.</p>
<h4>Ejemplo 7: Article con header y footer <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;article&gt;
    &lt;header&gt;
        &lt;p&gt;ElectroGaming Store&lt;/p&gt;
        &lt;h1&gt;Consola Retro Arcade Plus&lt;/h1&gt;
    &lt;/header&gt;
    &lt;p&gt;Emulador con 10,000 juegos clásicos, HDMI 4K, 2 controles inalámbricos incluidos.&lt;/p&gt;
    &lt;footer&gt;
        &lt;span&gt;$349.99&lt;/span&gt;
        &lt;button&gt;Comprar ahora&lt;/button&gt;
    &lt;/footer&gt;
&lt;/article&gt;
</pre>
<p><strong>Resultado:</strong></p>
<ul>
<li>Nombre: Consola Retro Arcade Plus</li>
<li>Descripción: Emulador con 10,000 juegos clásicos, HDMI 4K, 2 controles inalámbricos incluidos.</li>
<li>Precio: <strong>vacío</strong></li>
</ul>
<p>El precio dentro del footer no fue extraído aún siendo válido en esa posición.</p>
<h4>Ejemplo 8: Article simple <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;article&gt;
    &lt;h1&gt;Tablet Pro Max 12.9"&lt;/h1&gt;
    &lt;p&gt;TechDigital Corporation&lt;/p&gt;
    &lt;p&gt;Pantalla OLED 120Hz, chip M2, 8GB RAM, compatible con stylus, teclado magnético.&lt;/p&gt;
    &lt;p&gt;Precio: &lt;strong&gt;$1,199.00&lt;/strong&gt;&lt;/p&gt;
    &lt;button&gt;Añadir al carrito&lt;/button&gt;
&lt;/article&gt;
</pre>
<p><strong>Resultado:</strong> Extracción completa exitosa. Estructura simple y clara dentro de un article.</p>
<h3>Categoría 4: HTML Tradicional</h3>
<h4>Ejemplo 9a: HTML tradicional con H3 <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;div&gt;
    &lt;h3&gt;Smartphone Galaxy Ultra 5G&lt;/h3&gt;
    &lt;p&gt;&lt;strong&gt;Marca:&lt;/strong&gt; PhoneTech Global&lt;/p&gt;
    &lt;p&gt;&lt;strong&gt;Descripción:&lt;/strong&gt; Cámara 200MP con zoom 10x, batería 5000mAh, pantalla AMOLED 6.8", procesador Snapdragon 8 Gen 3.&lt;/p&gt;
    &lt;p&gt;&lt;strong&gt;Precio:&lt;/strong&gt; $999.00&lt;/p&gt;
    &lt;button type="button"&gt;Comprar ahora&lt;/button&gt;
&lt;/div&gt;
</pre>
<p><strong>Resultado:</strong></p>
<ul>
<li>Nombre: <strong>vacío</strong></li>
<li>Descripción: Cámara 200MP con zoom 10x, batería 5000mAh, pantalla AMOLED 6.8", procesador Snapdragon 8 Gen 3.</li>
<li>Precio: $999.00</li>
</ul>
<p>El nombre del producto en H3 no fue identificado como tal, posiblemente su heurística ignore el H3 dentro de un div.</p>
<h4>Ejemplo 9b: HTML Tradicional con H2 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;div&gt;
    &lt;p&gt;SportTech Equipment&lt;/p&gt;
    &lt;h2&gt;Bicicleta Eléctrica Mountain Pro&lt;/h2&gt;
    &lt;p&gt;Motor 750W, batería 48V, autonomía 80km, suspensión delantera, frenos hidráulicos.&lt;/p&gt;
    &lt;p&gt;Precio: $2,299.00&lt;/p&gt;
    &lt;button&gt;Comprar ahora&lt;/button&gt;
&lt;/div&gt;
</pre>
<p><strong>Resultado:</strong></p>
<ul>
<li>Nombre: <strong>vacío</strong></li>
<li>Descripción: Motor 750W, batería 48V, autonomía 80km, suspensión delantera, frenos hidráulicos.</li>
<li>Precio: $2,299.00</li>
</ul>
<p>Similar al caso anterior, el H2 no fue identificado como nombre del producto posiblemente por el motivo anterior.</p>
<h4>Ejemplo 9c: HTML tradicional con H1 <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h4>
<pre style="font-size: clamp(10px, 2.5vw, 14px); background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; padding: clamp(10px, 3vw, 15px); line-height: 1.4; font-family: 'Courier New', monospace; overflow-x: auto; overflow-y: auto; margin: 24px 0; max-width: 100%; box-sizing: border-box; white-space: pre-wrap; word-wrap: break-word;">&lt;div&gt;
    &lt;p&gt;HomeComfort Store&lt;/p&gt;
    &lt;h1&gt;Robot Aspiradora Smart Clean X9&lt;/h1&gt;
    &lt;p&gt;Navegación láser LiDAR, mopa integrada, vaciado automático, control por app.&lt;/p&gt;
    &lt;span&gt;$649.99&lt;/span&gt;
    &lt;button&gt;Añadir al carrito&lt;/button&gt;
&lt;/div&gt;
</pre>
<p><strong>Resultado:</strong> Extracción completa.</p>
<h2>Análisis de patrones y conclusiones</h2>
<p>Este análisis tiene implicaciones importantes para desarrolladores web que desean que su contenido sea correctamente interpretado por sistemas automatizados. Se han revelado varios patrones sobre qué estructuras HTML facilitan la extracción de contenido:</p>
<ol>
<li><strong>Cohesión en el contenedor:</strong> El contenido relacionado debe mantener el mismo nivel de anidamiento dentro de un contenedor común. Cuando elementos como el precio se colocan en niveles de anidamiento adicionales o fuera del contenedor principal, el sistema de extracción no los asocia correctamente con el resto del producto. La extracción falla no por estar en un div, sino por la ruptura de la cohesión estructural.</li>
<li><strong>Jerarquía semántica</strong>: Los elementos con mayor peso semántico (H1, article, listas) son reconocidos más fácilmente. El H1 fue identificado como nombre de producto, mientras que H2 y H3 no lo fueron. Esto sugiere que el sistema prioriza los elementos de mayor jerarquía en el documento.</li>
<li><strong>Simplicidad estructural</strong>: Las estructuras simples y directas (texto plano con BR, listas lineales) tuvieron extracción exitosa.</li>
<li><strong>Elementos semánticos específicos</strong>: Ciertos elementos HTML5 parecen tener un tratamiento especial:
<ul>
<li><strong>footer:</strong> Su contenido no se extrae, probablemente porque se considera metainformación o contenido secundario aunque esté dentro de un article.</li>
<li><strong>aside:</strong> También parece filtrarse, tratándose como contenido tangencial.</li>
<li><strong>header:</strong> Su contenido sí se procesa.</li>
</ul>
</li>
</ol>
<ol></ol>
<ul></ul>
<p class="whitespace-normal break-words">Aunque otras IAs como Gemini y ChatGPT no presentaron problemas de extracción en este experimento, esto no significa que podamos ignorar la estructura HTML. La forma en que el "reader mode" convierte el contenido a texto plano tiene un significado semántico que se deriva directamente del DOM. Una página bien estructurada facilita el contexto y la comprensión del contenido, independientemente del modelo que lo procese.</p>
<p class="whitespace-normal break-words">El hecho de que algunos modelos compensen mejor las deficiencias estructurales no elimina la responsabilidad de escribir HTML correcto. Una estructura semántica clara:</p>
<ul class="[&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Reduce la ambigüedad interpretativa</li>
<li class="whitespace-normal break-words">Facilita el contexto para todos los sistemas de extracción</li>
<li class="whitespace-normal break-words">Mejora la accesibilidad para usuarios con lectores de pantalla</li>
<li class="whitespace-normal break-words">Garantiza una extracción más consistente y predecible por cualquier sistema de extracción, ya sea un LLM o un buscador.</li>
</ul>
<p class="whitespace-normal break-words">En definitiva, que tu contenido "funcione" con algunas herramientas no significa que esté bien estructurado. El HTML semántico correcto es una inversión en robustez y compatibilidad futura.</p>
<p>Relacionado</p>
<blockquote class="wp-embedded-content" data-secret="MCk34hkUXT"><p><a href="https://natzir.com/posicionamiento-buscadores/agentes-web-y-la-importancia-del-html-semantico-y-accesible/">Agentes web y la importancia del HTML semántico y accesible</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="«Agentes web y la importancia del HTML semántico y accesible» — Natzir Turrado" src="https://natzir.com/posicionamiento-buscadores/agentes-web-y-la-importancia-del-html-semantico-y-accesible/embed/#?secret=O0SrjOEJFw#?secret=MCk34hkUXT" data-secret="MCk34hkUXT" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<blockquote class="wp-embedded-content" data-secret="33IUJhQFHp"><p><a href="https://natzir.com/posicionamiento-buscadores/trafico-agentico/">Tráfico agéntico: así navegan los agentes de IA y qué tienes que saber tú</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="«Tráfico agéntico: así navegan los agentes de IA y qué tienes que saber tú» — Natzir Turrado" src="https://natzir.com/posicionamiento-buscadores/trafico-agentico/embed/#?secret=LUNiUkO9jN#?secret=33IUJhQFHp" data-secret="33IUJhQFHp" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>&nbsp;</p>
<p>La entrada <a href="https://natzir.com/posicionamiento-buscadores/experimento-analisis-de-extraccion-de-contenido-html-en-claude/">Extracción de contenido HTML en LLMs con search tool</a> se publicó primero en <a href="https://natzir.com">Natzir Turrado</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://natzir.com/posicionamiento-buscadores/experimento-analisis-de-extraccion-de-contenido-html-en-claude/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>