Alertas de Xataka y Hipertextual: cómo evitar que los mensajes de Discord aparezcan en Google
Introducción
Los últimos artículos de Xataka y Hipertextual han puesto en alerta a miles de usuarios de Discord: los chats públicos pueden estar siendo indexados por Google y aparecer en los resultados de búsqueda. Desde que se publicaron esas notas, las búsquedas de “Discord mensajes indexados” han subido un 320 % y los administradores de servidores están pidiendo soluciones inmediatas.
En este artículo encontrarás, paso a paso y con ejemplos concretos, cómo funciona la indexación, qué ajustes de privacidad debes aplicar en tus servidores y canales, y qué técnicas (robots.txt, meta tags, cabeceras HTTP) puedes usar para bloquearla. Incluimos scripts en Python y Bash para auditar URLs, usar Google Search Console y un checklist de buenas prácticas. Al final, compararemos Discord con otras plataformas de mensajería (Telegram, Slack y Mattermost) y responderemos a las preguntas más frecuentes.
1. ¿Por qué es urgente actuar ahora?
| Motivo | Qué implica para tu comunidad |
|---|---|
| Información sensible expuesta | Contraseñas temporales, enlaces a documentos internos o conversaciones privadas pueden aparecer en la primera página de Google, poniendo en riesgo a empresas y usuarios. |
| Cumplimiento legal | GDPR y la LOPD exigen que los datos personales no se publiquen sin consentimiento explícito. La indexación automática puede considerarse una vulneración. |
| Daño reputacional | Un canal de soporte técnico que muestra errores de configuración o discusiones conflictivas puede perjudicar la imagen de la marca. |
| Trabajo remoto en auge | Cada vez más equipos usan Discord como herramienta colaborativa; la línea entre “público” y “privado” se difumina y el control se vuelve crítico. |
2. ¿Cómo ocurre la indexación?
2.1. URLs públicas de Discord
Cuando un servidor está configurado como público, Discord genera URLs estáticas para cada canal, mensaje y archivo adjunto, por ejemplo:
https://discord.com/channels/123456789012345678/987654321098765432
Si el canal permite el acceso sin autenticación (o mediante un token de invitación que Google pueda seguir), Googlebot lo trata como cualquier otra página web y la indexa.
2.2. Señales que activan el rastreo
| Señal | Ejemplo concreto | Resultado en Google |
|---|---|---|
| Enlaces externos | Un usuario comparte la URL del canal en Reddit o Twitter | Google sigue el enlace y descubre la página. |
| Sitemaps generados por bots | Algunos bots de Discord crean sitemaps XML automáticamente | Google los procesa como fuentes de URLs. |
Falta de X‑Robots‑Tag
|
La respuesta HTTP no contiene noindex, nofollow
|
Google indexa la página sin restricciones. |
3. Configuración de privacidad en Discord
-
Convertir el servidor a “Privado”
- En Ajustes del servidor → Privacidad desactiva Permitir que cualquiera se una con un enlace.
-
Restringir la visibilidad de canales
- En cada canal, abre Permisos y elimina el permiso Ver canal para el rol
@everyone.
- En cada canal, abre Permisos y elimina el permiso Ver canal para el rol
-
Desactivar los enlaces de invitación permanentes
- En Ajustes → Invites, elimina los enlaces con expiración “Nunca”.
Tip rápido: Usa el comando de Discord
!lockdown(si tienes un bot de moderación) para revocar todos los permisos de@everyoneen segundos.
4. Bloquear la indexación desde el lado del servidor
Discord no permite editar directamente los encabezados HTTP, pero puedes usar un proxy inverso (por ejemplo, Cloudflare Workers o Nginx) para añadir las cabeceras necesarias.
4.1. Con Nginx
location ~ ^/channels/ {
add_header X-Robots-Tag "noindex, nofollow, nosnippet" always;
add_header Cache-Control "private, max-age=0" always;
}
4.2. Con Cloudflare Workers (JavaScript)
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
if (url.pathname.startsWith('/channels/')) {
const resp = await fetch(request)
const newHeaders = new Headers(resp.headers)
newHeaders.set('X-Robots-Tag', 'noindex, nofollow')
return new Response(resp.body, {status: resp.status, headers: newHeaders})
}
return fetch(request)
}
4.3. Robots.txt (solo para dominios propios)
Si usas un dominio propio con Discord Widget (widget.discord.com), añade un robots.txt en la raíz:
User-agent: *
Disallow: /channels/
5. Auditar la exposición de tus canales
5.1. Script en Bash (requiere curl y jq)
#!/usr/bin/env bash
CHANNELS=("123456789012345678/987654321098765432" "123456789012345678/111111111111111111")
for c in "${CHANNELS[@]}"; do
URL="https://discord.com/channels/$c"
CODE=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
echo "[$CODE] $URL"
done
5.2. Script en Python (usando requests)
import requests
channels = [
"123456789012345678/987654321098765432",
"123456789012345678/111111111111111111"
]
for ch in channels:
url = f"https://discord.com/channels/{ch}"
r = requests.get(url, allow_redirects=False)
print(f"{r.status_code} {url}")
Ejecuta cualquiera de los dos scripts y verifica que todas las URLs devuelvan 403 Forbidden o 401 Unauthorized; cualquier 200 OK indica que el contenido sigue siendo accesible y, por tanto, susceptible de indexarse.
6. Usar Google Search Console para eliminar contenido
- Accede a tu cuenta de Google Search Console.
- En el menú izquierdo, selecciona Remociones → Nueva solicitud.
- Introduce la URL completa del canal que deseas eliminar y elige Eliminar temporalmente.
- Repite el proceso para cada URL expuesta.
Importante: La eliminación temporal dura 90 días. Mientras tanto, asegúrate de que los encabezados
X‑Robots‑Tagestén configurados como se muestra en la sección 4.
7. Checklist rápido de buenas prácticas
| ✅ | Acción |
|---|---|
| 1 | Cambiar el servidor a Privado y revocar el rol @everyone en todos los canales. |
| 2 | Desactivar o eliminar enlaces de invitación permanentes. |
| 3 | Implementar un proxy (Nginx o Cloudflare Workers) que añada X-Robots-Tag: noindex, nofollow. |
| 4 | Auditar periódicamente las URLs con los scripts de Bash o Python. |
| 5 | Registrar el dominio (si usas widget) en Google Search Console y crear una regla de remoción para URLs ya indexadas. |
| 6 | Revisar los permisos de bots y evitar que generen sitemaps automáticos. |
| 7 | Documentar la política de privacidad y compartirla con los miembros del servidor. |
8. Comparativa rápida: Discord vs. otras plataformas
| Plataforma | ¿Indexa contenido público? | Herramientas de control nativas |
|---|---|---|
| Discord | Sí, si el canal es público y la URL es accesible. | No hay control de cabeceras; se depende de proxies o cambios de permisos. |
| Telegram | No indexa chats privados; los canales públicos pueden aparecer en búsquedas internas, no en Google. | Opciones de Privacidad y Enlace de invitación muy granulares. |
| Slack | Los espacios de trabajo privados nunca se indexan; los canales públicos pueden aparecer en buscadores internos. | Configuración de Discovery y App Directory permite bloquear rastreadores externos. |
| Mattermost | Similar a Slack; la indexación depende de la configuración del servidor web (Nginx/Apache). | Control total de cabeceras HTTP y robots.txt. |
En conclusión, Discord es la única de estas plataformas que permite URLs estáticas accesibles sin autenticación, lo que la hace más vulnerable a la indexación accidental.
9. Preguntas frecuentes
¿Puedo evitar que Google indexe todos los canales de mi servidor?
Sí. Cambia el servidor a *
Herramienta mencionada: Heroku
Top comments (0)