Saltar al contenido
Fragmentos de código fuente del algoritmo de X iluminados con anotaciones en rojo revelando sus mecanismos ocultos
SEOmarketingblogging

xAI publicó el código del algoritmo de X: lo analicé línea por línea y esto esconden

P Pedro Luis Cuevas Villarrubia

El 16 de mayo de 2026, xAI publicó el código fuente del algoritmo de X — internamente llamado Phoenix. Javi López (@javilop) se gastó 500$ en Claude para diseccionar los 207 archivos del repositorio, y luego publicó su análisis completo como una skill abierta para que cualquiera pueda usarlo. El trabajo pesado es suyo.

Lo que yo he hecho es coger esa investigación y organizarla por impacto real: lo que más te fastidia el alcance, lo que son mitos, y una rutina semanal de publicación basada exclusivamente en lo que el código dice que funciona. Si quieres el destripe técnico con referencias a cada archivo Rust, ve al hilo de Javi. Si quieres saber qué hacer con todo eso el lunes a las 9 de la mañana, sigue leyendo.

El embedding de autor: tu huella digital interna

Cada cuenta de X tiene un embedding asociado en el espacio latente. Es un vector de números que resume cómo se comporta tu cuenta: qué temas tocas, qué engagement generas, con quién interactúas. Como la huella digital que los modelos de IA usan para describirte.

Phoenix lo consulta cada vez que decide a quién enseñar tus posts. Y aquí viene lo fuerte:

Ese embedding no se resetea. Lo que hagas hoy se queda dentro durante semanas, contaminando todo lo que publiques después, aunque sea bueno.

Historial limpio, buen engagementEl modelo te empuja
Señales negativas acumuladasPenalización automática silenciosa
Dejas de postearLas señales malas se congelan, no se diluyen

Por eso salir de un shadowban se siente como mover una rueda oxidada. No es tu imaginación. El modelo simplemente aprendió que tu cuenta da mal engagement y se autocorrigió.

Los tiempos de recuperación son lentos pero reales: 6-8 semanas para notar mejora, 12-16 semanas para un cambio significativo, asumiendo que creas contenido que le gusta al algoritmo y no acumulas más señales negativas.

Los primeros 30 minutos lo son todo

Si tu post no recibe interacciones en la primera media hora, Grok ni siquiera lo evalúa. Sin nota de calidad, sin análisis profundo, sin posibilidad de llegar a quien no te sigue. Muerto y enterrado.

La ventana de vida del post está capada a 80 horas (POST_AGE_MAX_MINUTES = 4800), organizada en buckets de 1 hora:

0-12h
Máxima distribución
12-24h
Bucket peor
24-80h
Progresivamente peor
+80h
Overflow: ignorar

POST_AGE_MAX_MINUTES = 4800 — lejos de incentivar evergreen como YouTube, X quiere carnaza fresca continua

Publicar sin estrategia en X es tirar el dinero. Si necesitas una estrategia de contenidos basada en datos reales, mira mis servicios de SEO y marketing de contenidos.

Los 4 tipos de shadowban (todos existen, todos en el código)

Severo

1. Hard Drop

X elimina tu post del feed de todo el mundo sin avisarte. Se aplica a contenido grave o cuentas suspendidas. Tú ni te enteras.

Alto

2. DO_NOT_AMPLIFY

Campo literal en el código. Los anuncios dejan de aparecer junto a tus posts. X deja de ganar dinero mostrándote, así que el sistema deja de pushearte. Apagón en seco.

Medio

3. Reglas BotMaker

Panel interno desde el que empleados de X pueden limitar cuentas concretas a mano. Las categorías están documentadas (Content, Safety, Grok…), pero a quién se las aplican y por qué no se ha publicado.

Crítico

4. Embedding envenenado

El modelo aprende que tu cuenta da mal engagement y te penaliza automáticamente. Nadie tomó la decisión. Nadie te notificó. El sistema se autocorrigió basándose en tus datos históricos. El más peligroso.

Las 5 señales que matan tu alcance

Phoenix predice 22 acciones por post. Cinco son pesos negativos que se restan directamente de tu score:

Medio
not_interestedPenalización directa
Grave
block_authorPenalización grave
Medio
mute_authorPenalización media
Grave
reportPenalización grave
Brutal
not_dwelledHacer scroll sin pararse — matemáticamente peor que no publicar

Esa última es devastadora. Un post que la gente ignora completamente (scroll sin detenerse) es matemáticamente peor que uno que nunca se llegó a publicar.

Dwell time vs likes: 5 a 1

El scorer de Phoenix tiene 5 señales distintas de dwell (dwell, cont_dwell_time, click_dwell_time…) pero solo 1 señal de favorito.

1 seg
Lectura + muchos likes
Score BAJO
8 seg
Lectura + pocos likes
Score ALTO

Optimiza por tiempo de lectura, no por likes. Pregúntate: ¿alguien se va a parar a leer esto o va a hacer scroll?

Diagrama visual de los 4 tipos de shadowban en X mostrando Hard Drop, DO_NOT_AMPLIFY, reglas BotMaker y embedding envenenado con sus mecanismos

Qué funciona según el código

No todo es penalización. El código también revela qué señales suman puntos a tu post:

Crítico

Engagement en los primeros 10 min

Si no hay interacciones rápidas, Grok ni evalúa tu post. Manda DM a colegas, ping a tu comunidad, lo que sea — pero que las primeras reacciones lleguen ya.

Alto

Horario de tu audiencia

Para targetear US: publica entre las 14 y 17h hora España (8-11am ET). No postees en tu horario si tu audiencia está en otro.

Alto

Citar virales de tu nicho

El modelo ya sabe que el original engancha. Tu cita se apila encima de esa señal positiva. Es caballo ganador.

Medio

Vídeos ≥10 segundos con audio

Por debajo de MinVideoDurationMs pierdes el peso VQV entero. Y Grok ejecuta ASR (speech-to-text) en cada vídeo — sin audio = señal en blanco.

Lo que te destroza el alcance (y no lo sabes)

Las penalizaciones no siempre son shadowbans. A veces son mecanismos sutiles que silencian tu contenido sin que te des cuenta:

El filtro de hilos: DedupConversationFilter

El código tiene un filtro que solo deja 1 tweet por conversación en cada feed. Si haces un hilo de 15 tweets, el sistema solo muestra uno al usuario. Los otros 14 son invisibles. Esto convierte los megahilos en desperdicio matemático puro.

AuthorDiversityDecay: el castigo por publicar seguido

Cada post consecutivo tuyo se multiplica por decay^position. El primero sale normal. El segundo sale penalizado. El cuarto ya está en el suelo. Si publicas 5 cosas seguidas, solo la primera tiene posibilidades reales de llegar a alguien que no te sigue.

Regla práctica: máximo 2 posts por sesión, separados por al menos 2 horas.

El campo slop_score: Grok detecta contenido generado por IA

Hay literalmente un campo slop_score en el output del BangerScreen. El clasificador de Grok evalúa si tu post parece generado por IA y le asigna una puntuación. No sabemos el peso exacto (no publicaron los diales), pero el código lo mide explícitamente.

Si usas IA para generar posts, reescribe el output. Añade voz personal, datos concretos, referencias locales. Lo que hace que un texto parezca humano — precisamente lo que los LLMs omiten por defecto.

Si vas a usar IA para tu contenido, mejor que sea con estrategia. Te ayudo a integrar IA en tu flujo de contenidos sin que el algoritmo te penalice.

Posts originales vs replies: dos juegos distintos

Solo los posts originales pasan por el BangerScreen — el clasificador de calidad de Grok. Las respuestas y retweets nunca entran.

Pero las replies no son tierra de nadie. Tienen su propio sistema:

Cuentas grandes
ReplyRanker (Grok) → Puntúa de 0 a 3. “¡Primero!” o solo emojis = 0. Aportar valor = máximo.
Cuentas pequeñas
SpamEapiLowFollowerClassifier → Escáner anti-spam. Respuestas genéricas = penalización.

Si te pasas el día respondiendo a cuentas virales, estás optimizando para el Reply Ranker, no para amplificación. Escribe posts originales si quieres que te descubran fuera de tu red.

La rutina de publicación óptima (según el código)

Con todo lo anterior en la mesa, sinteticé una plantilla semanal de publicación basada exclusivamente en lo que el código dice que funciona:

LUNPost original largo

300-500 palabras

Máximo dwell time → score alto. Inicio de semana = más atención.

MARCita-remix

Cita viral + opinión tuya

Te apoyas en la señal positiva del original. Bajo riesgo, buena visibilidad.

MIEVídeo

Vídeo ≥10 seg con audio

Peso VQV completo. ASR activo. Formato que más dwell genera.

JUEDescanso

Replies de calidad o nada

Evitar AuthorDiversityDecay. Replies solo a cuentas grandes con valor.

VIEPost personal

Dato o historia personal

Anti slop_score: voz personal = humano. Viernes = más tiempo de lectura.

SAB-DOMLigero

Nada, o 1 post corto

Dejar respirar el embedding. Si publicas, que sea visual.

Horario óptimo para audiencia US: 14-17h (España). Para audiencia ES: 9-11h. Siempre en el huso horario de tu audiencia, no en el tuyo.

3 reglas que no se mencionan en ningún análisis del algoritmo:

  1. La regla del 80/20 del dwell. El 80% de tu dwell time viene del primer párrafo y del último. Abre con un dato que paren el scroll. Cierra con algo que haga reflexionar (no con un CTA).

  2. El patrón de cita-remix. En vez de hilos propios, cita un tweet viral de tu nicho y añade tu perspectiva. Recibes la señal positiva del original + tu valor añadido. El algoritmo ve dos señales buenas en vez de una.

  3. La estrategia anti-embedding tóxico. Si tu embedding está contaminado, no dejes de publicar (las señales malas se congelan). Publica contenido que genere dwell — el engagement nuevo es lo único que sobrescribe las señales viejas. Piensa en ello como rehab: lento, pero funciona si eres constante.

Si eres negocio (no creador), la estrategia es distinta

Todo lo que lees sobre el algoritmo de X está escrito para creadores de contenido. Pero si tienes un negocio local o un servicio B2B, optimizar para viralidad es perder el tiempo. Tu objetivo no son 100K impresiones — son 10 impresiones a la persona correcta.

El código confirma que esto funciona diferente:

Clave

Embedding de nicho

Tu embedding debe reflejar tu sector, no entretenimiento. Si interactúas con tu nicho (clientes, proveedores, sector), Phoenix te asocia con ese clúster. No es como Google Local — X agrupa por intereses semánticos, no por ciudad. Un consultor cloud cuyo embedding dice “AWS + Terraform + infraestructura” llega mejor a decisores técnicos que uno cuyo embedding dice “memes trending”.

phoenix/recsys_model.py:93: el transformer recibe num_author_hashes = 2 — aprende patrones de engagement por cuenta

A tu favor

Dwell técnico

Un post sobre un problema concreto que resuelves retiene más segundos que un meme. Explica cómo resolviste un caso real — genera dwell, replies y profile clicks. Tres señales positivas de golpe.

Práctico

Min-traction con tu red

No necesitas 100 likes en 30 minutos. Necesitas que tus primeros seguidores (clientes, colegas del sector) interactúen rápido. El mecanismo: avisa a tu equipo o red cercana cuando publicas (Slack, Telegram, WhatsApp business) para que interactúen en esa ventana. Employee advocacy o tráfico desde tus canales propios fuerza la tracción inicial que el algoritmo necesita.

candidate_hydrators/engagement_counts_hydrator.rs:33: posts <30 min se refrescan cada 5 min; los viejos cada 10 min — engagement temprano se refleja más rápido en tu score

Peligro

Slop_score te castiga más

Si usas IA para generar “5 consejos para elegir un fontanero”, el BangerScreen detecta contenido genérico y te baja el score. Pero un caso real con datos concretos es irreproducible por un LLM — y el modelo lo nota.

grox/classifiers/content/banger_initial_screen.py: el output de Grok incluye un campo slop_score explícito que mide contenido de baja calidad

Técnico

Topics reducen tu penalización OON

El código tiene un TopicOonWeightFactor distinto del penalty OON general. Si tu post matchea un topic reconocido (IA, legal, construcción, salud…), el descuento por ser “fuera de red” se reduce. Usa vocabulario técnico de tu sector — marcas, acrónimos, nombres de herramientas — porque el clasificador reconoce entidades, no hashtags sueltos. Un exceso de hashtags incrementa el rebote y perjudica el dwell.

filters/topic_ids_filter.rs:109: 80+ categorías reconocidas · scorers/oon_scorer.rs: peso OON distinto cuando hay topic match

Calidad

50 seguidores que siguen a 50 cuentas > 5000 que siguen a 5000

El VMRanker (scorer alternativo) recibe viewer_following_count como feature. Un seguidor tuyo que sigue a 50 cuentas compite menos por su atención que uno que sigue a 5000. Para un negocio, followers de calidad (pocas cuentas seguidas, activos en tu sector) valen más matemáticamente que números grandes.

scorers/vm_ranker.rs:102: el request al value model incluye viewer_following_count del usuario

La regla para negocios: publica como si le explicaras un caso a un colega en un café, no como si escribieras un post de LinkedIn. El algoritmo premia la autenticidad sectorial sobre la viralidad genérica. Si necesitas ayuda con tu estrategia de contenidos, trabajamos juntos.

Lo que NO publicaron

Que no te vendan la moto. El esqueleto es público. Los diales no:

  • × Los valores numéricos exactos de cada peso (FavoriteWeight, ReplyWeight, AuthorDiversityDecay)
  • × Los 7 prompts reales de Grok (política, seguridad, calidad)
  • × Las reglas de BotMaker aplicadas a cuentas concretas
  • × util/phoenix_request.rs — la llamada final al modelo
  • × 25+ crates xai_* referenciados pero no incluidos
  • × Los pesos del Phoenix de producción (solo publicaron la versión mini)

Nos han dado el esqueleto. El músculo (los pesos) y el cerebro (los prompts y las reglas manuales) son completamente opacos.

Lo que el código SÍ responde (preguntas frecuentes, verificado)

Verificado

¿Poner un link externo te penaliza?

En el código publicado, no hay flag de penalización. El bitset (tweet_type_metrics_hydrator.rs) no rastrea URLs. Pero la métrica North Star de X es User Active Minutes — un link saca al usuario de la plataforma y destruye el dwell time de esa sesión. La comunidad SEO ha verificado empíricamente que posts con links sufren menos alcance. Que no esté en el código publicado no significa que no exista en la capa opaca. Estrategia segura: pon el enlace en el primer comentario del hilo.

Verificado

¿Borrar tweets te penaliza?

No hay penalización visible. El sistema usa tombstones: borras un tweet → se elimina del mapa posts y se marca en deleted_posts. Los tombstones caducan a los 2 días (retention por defecto). El evento de borrado se loguea en Kafka con timestamp, así que si el modelo de embedding usa frecuencia de borrado como señal, no lo sabemos — no está publicado. Pero en el código visible, borrar es limpio.

Verificado

¿Tener Premium te da ventaja en el algoritmo?

Sí, pero no como piensas. No hay un “boost automático” por pagar. Lo que hay es: el pipeline trata tu contenido distinto (subscription_hydrator.rs hidrata un subscription_author_id específico) y te saltas ciertos filtros de “karma” que las cuentas gratuitas tienen que escalar poco a poco. Es como empezar la carrera unos peldaños más arriba — no te hace ganar, pero sales con ventaja.

Chuleta para no olvidar

Primeros 30 min
Importan más que cualquier otra cosa
🌐
Tu ubicación
Irrelevante. Tu timing y tu idioma, no
👁
Dwell > Like
El dwell time le gana al like 5 a 1
👁️‍👹
4 shadowbans
El peor: embedding envenenado
✍️
Posts originales
Las replies no pasan por calidad
📜
Hilos largos
DedupConversationFilter: 1 por hilo
🎥
Vídeos sin audio
Señal en blanco para Grok
🤖
AI slop
El BangerScreen tiene un campo slop_score
🔔
2 posts max
AuthorDiversityDecay penaliza publicar seguido
📈
Cita-remix
Cita virales + opinión = dos señales positivas
🔬
50% en A/B
La mitad del tráfico siempre en experimentos
🔒
Lo mejor, oculto
Pesos, prompts y reglas: opacos
🔗
Links externos
Sin flag en el código, pero empíricamente sí penalizan. Pon el link en el primer comentario
🗑
Borrar tweets
Tombstone limpio, sin penalización visible
Premium
Pipeline distinto, te saltas filtros de karma

¿Cansado de publicar y que no te lea nadie?

Te ayudo a diseñar una estrategia de contenidos basada en cómo funciona realmente el algoritmo, no en mitos de LinkedIn.

Contacta conmigo →
P

Pedro Luis Cuevas Villarrubia

Innovation Practitioner, WebMaster, SysAdmin & SEO · AI Agent Architect & Advanced Prompt Engineer

Hablar con Pedro

Preguntas frecuentes

¿Qué publicó xAI exactamente sobre el algoritmo de X?

En mayo de 2026, xAI publicó el esqueleto del algoritmo de X en un repositorio open-source. Esto incluye la arquitectura del sistema de recomendación (Phoenix), los clasificadores de calidad, y los mecanismos de puntuación. Sin embargo, los pesos numéricos exactos, los prompts reales de Grok y las reglas de moderación manual (BotMaker) no se publicaron — son configuración externa, no código.

¿Existen los shadowbans en X?

Sí, y están documentados en el código fuente. Hay 4 tipos: Hard Drop (eliminación silenciosa del feed), etiqueta DO_NOT_AMPLIFY (apagón de anuncios), reglas BotMaker (moderación manual por empleados), y el más peligroso: embedding de autor envenenado, donde el modelo aprende que tu cuenta da mal engagement y te penaliza automáticamente sin intervención humana.

¿Cómo puedo mejorar mi alcance en X según el algoritmo?

Los primeros 30 minutos tras publicar son críticos: si no hay interacciones, Grok ni siquiera evalúa tu post. El dwell time (tiempo que la gente se queda leyendo tu post) pesa 5 veces más que los likes. Publica en horario de tu audiencia (no en el tuyo), escribe posts originales (las replies no pasan por el clasificador de calidad), y evita hilos de más de 5 tweets (el filtro de deduplicación solo muestra uno por conversación).

¿Vivir en Europa y publicar en inglés para audiencia US te penaliza?

No directamente. El struct PostCandidate no tiene ningún campo de país, IP ni localización del autor. El transformer de Phoenix solo ve un hash de tu author_id. Lo que te afecta indirectamente es el huso horario (tu post envejece mientras US duerme) y el idioma del post. Usar una VPN para 'postear desde US' no hace nada.

¿Cuánto tarda en limpiarse un shadowban o una mala racha?

Si tu embedding de autor está contaminado por señales negativas acumuladas (bloqueos, mutes, reports, not_interested), recuperarlo es lento: empiezas a notar mejora a las 6-8 semanas y un cambio significativo sobre las 12-16 semanas, asumiendo que no acumulas más señales malas. El embedding no decae con el tiempo — decae con engagement nuevo entrando al sistema. Dejar de postear congela las señales malas, no las diluye.

¿Sirve X para un negocio local o B2B, o solo para creadores?

Sirve, pero la estrategia es distinta. No optimices para viralidad — optimiza para que tu embedding represente tu sector. X agrupa intereses por clústeres semánticos (no por geolocalización como Google), así que interactúa con cuentas de tu sector técnico (SaaS, LegalTech, cloud, logística, lo que sea). Phoenix aprenderá a asociarte con ese nicho. Publica casos reales con detalles técnicos (generan dwell alto), no posts genéricos generados por IA (el BangerScreen tiene un slop_score que los detecta). Necesitas pocos seguidores comprometidos, no miles de fantasmas.

¿Puedo usar IA para generar mis posts en X sin que me penalice el algoritmo?

El código tiene un campo explícito llamado slop_score que evalúa si tu post parece generado por IA. No sabemos el peso exacto (no publicaron los diales), pero está ahí. La estrategia segura: usa IA como borrador, pero reescribe con tu voz, datos concretos de tu negocio y referencias locales. Un LLM no puede inventar lo que te pasó ayer con un cliente — eso es lo que hace que un texto parezca humano.

¿Poner un link externo en un tweet penaliza el alcance?

En el código publicado no hay flag de penalización por links — el bitset de tipo de tweet no rastrea URLs. Pero cuidado: la métrica North Star de X es User Active Minutes (retención en plataforma). Un link externo saca al usuario del ecosistema y destruye el dwell time de esa sesión. La comunidad SEO ha verificado empíricamente que posts con links sufren menos alcance. Que no esté en el código publicado no significa que no exista en la capa opaca de producción. La recomendación segura: pon el enlace en el primer comentario del hilo, no en el post original.

¿Borrar tweets antiguos te penaliza en el algoritmo?

No hay penalización visible en el código. Cuando borras un tweet, el sistema lo elimina del almacén y marca un tombstone (post_store.rs) que caduca a los 2 días. El evento de borrado se registra en Kafka con timestamp, así que no podemos descartar que el modelo de embedding use la frecuencia de borrado como señal — pero en el código publicado, borrar es limpio y sin consecuencias.

Artículos relacionados

¿Y si tu Socio Digital fuera Yo?

Pedro Luis Cuevas Villarrubia · Innovation Practitioner, WebMaster, SysAdmin & SEO · AI Agent Architect & Advanced Prompt Engineer

Hace dos décadas, tener una web era suficiente. Luego llegó el SEO, luego el móvil, luego las redes. Ahora la IA lo cambia todo a velocidad exponencial. No necesitas alguien que te haga la web. Necesitas alguien que conozca tu proyecto, que esté al día del avance tecnológico y que sepa aplicarlo a lo tuyo. Eso es un Socio Digital.

Asesoría Diseño Web SEO Hosting IA Mantenimiento
¿Queda sitio?