CookingMetrics Data-Driven Business
Martín Garay·3 de septiembre de 2026·9 min de lecturaSEO técnicoCloudflareGuías

Nuestro editor de robots.txt: un interruptor por bot, análisis del archivo real y publicación vía Cloudflare

Si tenés una tienda en Tiendanube, no podés editar tu robots.txt. La plataforma lo genera y no te da acceso al archivo. Si además usás Cloudflare con managed robots.txt, tampoco: Cloudflare lo reescribe entero desde su bloque # BEGIN Cloudflare Managed content, y lo que edites ahí se pisa en la próxima regeneración.

Ese es el punto de partida del editor de robots.txt de IndexNow Connect. No asume que vos escribís el archivo. Asume que te lo escribe otro, y trabaja desde ahí.

Lo que hace la pantalla es concreto: lee tu archivo real, te dice quién parece estar escribiéndolo, te deja diseñar uno nuevo con un interruptor por bot, y —si querés— lo publica a través de un Worker de Cloudflare que pegás vos en tu cuenta.

Primero lee el archivo que hoy está en la calle

Cada vez que abrís la pantalla se hace un pedido en vivo a https://tudominio/robots.txt. Con timeout de 6 segundos, tope de 500 KB y un guard anti-SSRF. Un 4xx se interpreta como "no hay archivo"; un 5xx queda como desconocido, porque un error de servidor no equivale a "todo permitido".

Sobre ese texto corre el análisis. Te devuelve:

Esa última nota existe porque la lectura intuitiva es la equivocada. Content-Signal declara uso permitido, no bloquea acceso. Si querés el detalle de esa línea —qué significa cada señal, quién la respeta y quién no— está en content-signals-robots-txt.

Un interruptor por bot, y se guardan los bloqueados

La grilla tiene 45 interruptores repartidos en cuatro grupos: IA (21), buscadores (10), SEO (6) y sociales (8). Cada uno prendido significa "este bot entra".

Cuando apagás uno, el archivo generado no le agrega una línea al grupo *. Le crea su propio grupo:

User-agent: GPTBot
Disallow: /

Esa es la única forma que el protocolo tiene de excluir a uno y dejar entrar al resto. Y tiene una consecuencia que conviene entender: como el grupo propio le gana al comodín, ese bot deja de leer las reglas de *. Es así por diseño del REP, no por decisión nuestra. Cloudflare hace exactamente lo mismo en su bloque.

Ahora, la decisión de persistencia. En la base guardamos los bloqueados, no los permitidos.

El motivo es el default. Cuando mañana agreguemos un bot nuevo al catálogo, con "bloqueados" ese bot arranca permitido —que es lo que esperás— mientras que con "permitidos" quedaría prohibido sin que nadie lo haya decidido. Un cambio nuestro en el catálogo no puede bloquearte tráfico que vos nunca pediste bloquear. Hay un test dedicado a eso.

El editor en pantalla trabaja con el conjunto de permitidos, porque es lo que marca cada interruptor. La conversión entre los dos modelos vive en el borde, entre la pantalla y la base.

Qué más entra en el archivo generado

Además de los interruptores, el editor maneja:

Lo que el generador pierde (y no está de más decirlo)

El archivo generado no conserva todo lo que tenía el original. Sobreviven cuatro cosas: las señales del grupo *, las rutas Disallow del grupo *, los bloqueos totales por bot y los Sitemap:.

Se pierden:

Hay además un bug real que vale nombrar. El generador escribe el nombre del bot, no su token. Para 44 de los 45 coinciden al pasar a minúsculas. La excepción es Screaming Frog: el catálogo declara el token screaming frog seo spider, pero el archivo sale con User-agent: Screaming Frog. Apagar ese interruptor no produce una regla que el crawler reconozca como suya. Lo verificamos generando un archivo con todos los bots bloqueados y volviéndolo a analizar: es el único que vuelve como no bloqueado.

Tampoco validamos la sintaxis de lo que escribís. Las rutas no se chequea que empiecen con /, ni que los sitemaps sean URLs válidas, ni que apunten a tu dominio. Cualquier línea no vacía entra tal cual. Por eso la pantalla avisa, antes del botón: un robots.txt mal armado puede sacar tu sitio de los buscadores.

Publicar no toca tu dominio

Acá está la limitación más importante, y la que más se olvida.

"Guardar y publicar" hace dos cosas: guarda la configuración y prende una bandera. Con esa bandera prendida, /robotsfile/tudominio empieza a devolver el archivo. Tu dominio sigue sirviendo lo mismo de siempre.

El archivo sale a la calle recién cuando el Worker de Cloudflare tiene la ruta. El Worker es un snippet que pegás vos en tu cuenta de Cloudflare —no hay integración con la API de Cloudflare, la ruta la configurás a mano— e intercepta exactamente dos URLs: la clave IndexNow (/{hex}.txt) y /robots.txt. Cualquier otra pasa de largo.

Y falla abierto, por diseño. Si nuestra API no responde 200, el Worker hace el fetch original y tu dominio sirve su robots.txt de siempre. Una caída nuestra no puede dejar sin robots.txt —ni con uno vacío— a la tienda de nadie.

Por qué hace falta un Worker: es el único mecanismo que tenemos para responder una URL en la raíz de un dominio ajeno. La plataforma no deja subir archivos y el protocolo exige el mismo host. No hay atajo por otro dominio. Es exactamente el mismo problema que resolvemos para la clave de IndexNow con Cloudflare Workers, y la guía técnica de Cloudflare para SEO y GEO cubre el resto de las piezas.

Tres estados, no dos

La pantalla distingue tres situaciones que la gente confunde y que tienen arreglos distintos:

  1. No publicado. No hay nada guardado con la bandera prendida.
  2. Publicado, pero tu dominio todavía sirve otra cosa. El error clásico: falta agregar la ruta en el Worker.
  3. En la calle. El archivo real coincide con el generado.

El tercer estado no se declara por haber apretado un botón. Se comprueba: se compara el texto del archivo real contra el generado, completo, exacto salvo espacios de los extremos. Si no coinciden, no decimos que está publicado.

Dos honestidades sobre esa comprobación. La primera: la comparación es booleana, no hay diff visual. La segunda: el "generado" con el que compara es el borrador que tenés en pantalla. Si tocás interruptores y apretás Generar sin publicar, la card puede decir "tu dominio sirve otra cosa" aunque la versión publicada sí esté en la calle.

Y la limitación de fondo: el chequeo ocurre solo cuando alguien abre la pantalla. No hay verificación programada ni alertas. Nada re-verifica después si el Worker dejó de servirlo. Tampoco hay historial ni versionado: guardamos la última configuración, la fecha de publicación y la de actualización.

El endpoint que consume el Worker regenera el archivo en cada pedido a partir de la configuración; no guardamos el archivo, guardamos el diseño. Responde con Cache-Control: no-store, porque despublicar tiene que verse en el próximo pedido y no en cinco minutos. Y devuelve 404 cuando no hay nada publicado: ese 404 es parte del diseño, hace que el Worker siga de largo. Despublicar apaga la bandera y tu dominio vuelve al instante a su robots.txt original, sin tocar Cloudflare. Se conserva la configuración: despublicar es apagar la luz, no tirar el diseño.

Si además de decidir quién entra querés medir qué pasa cuando entran, IndexNow Connect conecta tu tienda, avisa a los buscadores cada vez que cambiás un producto y te muestra si los bots de IA efectivamente llegan. El editor de robots.txt es una pieza de eso, no el producto entero.

Preguntas frecuentes

¿Puedo usar el editor sin Cloudflare?

Podés diseñar el archivo, analizarlo y descargarlo. No podés publicarlo en tu dominio. En Tiendanube el archivo lo sirve la plataforma y el Worker de Cloudflare es la única vía que tenemos para responder una URL en la raíz de tu dominio. Si tu sitio corre en una plataforma donde sí podés subir el archivo, descargalo y subilo vos.

Si bloqueo un bot de IA, ¿deja de usar mi contenido?

Deja de entrar, si respeta el REP. Disallow es una preferencia, no una barrera técnica: un crawler puede ignorarla. Para bloqueo real hacen falta reglas de WAF o Bot Management, cosa que los propios docs de Cloudflare recomiendan. Y ojo con confundir bloqueo con Content-Signal: la señal declara uso permitido, no impide el acceso.

¿Por qué el archivo generado pierde mis reglas actuales?

Porque el generador arma el archivo desde la configuración del editor, no lo parchea. Conserva señales del grupo *, rutas Disallow del grupo *, bloqueos totales por bot y los Sitemap:. Todo lo demás —Allow: específicos, Crawl-delay, grupos con reglas parciales— no sobrevive. Antes de publicar, mirá el archivo generado en pantalla y compará con el crudo que te mostramos arriba.

¿Qué pasa si se cae su servidor?

Nada en tu sitio. El Worker consulta nuestra API y solo responde si vuelve un 200. Si no, cae al fetch original y tu dominio sirve el robots.txt de siempre. Es una decisión explícita del diseño del Worker: falla abierto.

¿Cómo sé si los bots realmente están entrando?

El editor te dice qué declara tu archivo; no prueba qué pasa en la red. Para eso está el test de accesibilidad para bots de IA, que sale con el User-Agent de cada bot y verifica la respuesta real. Son dos herramientas distintas a propósito: una trabaja sobre el archivo, la otra sobre el tráfico.