El 5 de julio de 2026, el tráfico de búsqueda de menudojuego.com se paró. No bajó: se paró. De unas 600 impresiones diarias a un dígito, y ahí se quedó.
La web es mía, así que tenía acceso a todo: servidor, base de datos y logs. Es un proyecto personal de tráfico modesto — lo que lo hace útil como caso no es el tamaño de las cifras, sino que el diagnóstico se puede contar entero, sin secretos de cliente.
Descartar lo obvio primero
Empecé por descartar el fallo técnico, porque la respuesta fácil suele ser la equivocada. Dos semanas de logs de nginx mostraban a Googlebot recibiendo 1.640 respuestas correctas sobre 871 URLs distintas, casi sin errores. El rastreo estaba sano. En ese mismo periodo, llegaron cinco visitantes desde Google.
Eso descarta la avería y deja un problema peor: Google entraba, leía las páginas correctamente, y decidía no posicionarlas. Son dos problemas opuestos —«Google no puede entrar» y «Google entra y decide que no vales»— con soluciones opuestas. Confundirlos cuesta meses.
La caída coincidía con una actualización del algoritmo de spam de Google que corrió del 24 al 26 de junio, con volatilidad hasta primeros de julio.
La causa: un catálogo sin nada propio
De 3.346 páginas indexadas, solo 102 tenían algo nuestro. Las otras 3.244 repetían la misma sinopsis de una base de datos de terceros, traducida automáticamente. Miles de páginas equivalentes sin nada dentro.
La decisión incómoda fue sacar del índice el 26% de las páginas, para que cada página que quedara tuviera una razón de existir. Menos páginas, todas con algo. El criterio de indexación cambió de medir demanda (cuánta gente busca este juego) a medir aportación (qué hemos añadido que no estuviera ya).
Los dos hallazgos que importaban
Por el camino aparecieron dos cosas, y resultaron ser las importantes.
El único contenido original era invisible para Google.
Las páginas comparan precios entre tiendas — eso es lo que la web aporta
y la fuente original no tiene. Pero se cargaban en un
useEffect, que solo se ejecuta en el navegador. El
rastreador nunca los vio. Se estaban indexando páginas por un contenido
al que Google no podía llegar.
La regeneración incremental llevaba meses sin funcionar.
La página declaraba revalidate = 300 y el servidor
respondía Cache-Control: no-store. Mi primera teoría fue un
fetch mal configurado. Lo arreglé y no cambió nada. La causa real es que
en Next.js 15 una ruta dinámica sin generateStaticParams se
sirve siempre bajo demanda y el revalidate se ignora. Lo
confirmé comparando la salida de next build antes y
después: la ruta pasa de dinámica a generada estáticamente. Hasta
entonces, cada visita de Googlebot a cada una de las 3.346 páginas
disparaba un render completo contra la API.
Dónde está hoy
A 11 de agosto de 2026: 2.699 páginas indexadas, todas con un precio real; 2.696 juegos con precios comprobados dos veces al día, desde los 102 de julio; 2.531 con su mínimo histórico registrado, de modo que la página puede decir no solo cuánto cuesta un juego, sino si ese precio es bueno.
Lo que aún no sé
Esto se desplegó hace un día. Las penalizaciones algorítmicas no suelen revertirse hasta que corre otra actualización, y solo si el problema de fondo está genuinamente arreglado. Eso significa meses, no semanas. Ahora mismo puedo demostrar el diagnóstico y las decisiones, no el resultado de tráfico. Cuando lo tenga, actualizaré este caso con lo que diga — también si dice que me equivoqué.
Stack: Next.js 15, NestJS, PostgreSQL, Docker, nginx, VPS autogestionado. Proyecto propio, sin nada confidencial: por eso está contado entero.