Renato Shirakashi
Algoritmo do X · 2026
Ensaio interativo · outubro de 2026

Dissecando o algoritmo do X

A fórmula secreta para engajamento máximo no X, lida direto no código-fonte: quanto vale cada ação, o que decide o alcance de uma conta pequena e quais conselhos de growth o código desmente.
por Renato Shirakashi
00 · Visão geral

Cada vez que o For You atualiza, o X monta um feed novo para você em cinco etapas: busca até 2.800 candidatos, filtra, prevê como você reagiria a cada um, transforma isso em nota, corta os parecidos, reserva uma vaga para um post novo e entrega 35.

Tudo neste artigo vem do repositório xai-org/x-algorithm, que o X publica com os parâmetros de produção. A versão usada é de 21 de outubro de 2026. A figura abaixo mostra as cinco etapas montando o feed de uma usuária, a Bia.

a fábrica · como o feed da Bia é montado
  1. 1Busca de candidatos · Thunder, Busca Phoenix, SimClusters e Populares juntam até 2.800 posts
  2. 2Filtro · Home Mixer · saem +48h, já vistos, bloqueados/silenciados, replies de fora da rede, rótulo
  3. 3Ranking Phoenix · lê as últimas 1.022 ações da Bia e prevê 64 probabilidades por post
  4. 4Pesos e diversidade · vm-ranker · nota = Σ peso × P(ação); das 150 maiores notas ficam 50
  5. 5Cold start · a 16ª posição vai para um post novo de conta pequena
  6. Saída · feed da Bia · 35 posts

Esquema simplificado. A Bia e a @ana são exemplos; os números são os limites descritos no texto.
  1. Busca de candidatos. Quatro fontes trazem até 2.800 posts.
  2. Filtro. Saem posts velhos, já vistos, de autores bloqueados, replies de fora da rede e contas rotuladas.
  3. Ranking Phoenix. Um modelo prevê a probabilidade de 64 ações para cada post.
  4. Pesos e diversidade. O vm-ranker transforma as probabilidades numa nota e corta os posts parecidos demais.
  5. Cold start. A 16ª posição vai para um post novo de conta pequena.

Um detalhe de nome: Phoenix é uma família de modelos, não um sistema único. A busca Phoenix (etapa 1) encontra candidatos. O ranking Phoenix (etapa 3) prevê como você reagiria a cada um. Os dois usam a mesma base de transformer, daí o nome em comum.

O exemplo do artigo é um post da @ana, uma conta com 1.200 seguidores:

Ana Ribeiro @ana · 12 min
Fiz o mesmo café de seis jeitos diferentes. O método mais barato ganhou.

Notas e fotos abaixo ☕
2 3 20

Com 12 minutos de vida, o post tem 3 likes em 20 views. É o ponto de partida do cold start, na parte 5.

Parte 1 de 5

Busca de candidatos

Os candidatos vêm de quatro fontes:

FonteO que trazMáximo
Thunderposts de quem você segue1.200
Busca Phoenixposts de fora da rede parecidos com o seu histórico1.000 + 200 novos
SimClustersposts curtidos por pessoas com gosto parecido com o seu800
Popularesposts em alta, só dos 0,005% maiores autores500

Para a @ana, isso significa: os 1.200 seguidores recebem o post via Thunder. Qualquer pessoa fora disso só vê o post se ele vier pela busca Phoenix ou por SimClusters.

Embeddings

A busca Phoenix e SimClusters funcionam com embeddings: cada usuário e cada post vira um vetor, e posts parecidos ficam próximos. Buscar candidatos fora da rede é buscar os posts mais próximos do seu vetor.

Seu vetor vem das suas últimas 1.022 ações. Na figura, você começa no centro, longe da @ana. Curta dois posts de café e o ponto preto se move até o círculo alcançar o post dela.

embeddings · curta e veja seu vetor mudar
Para o modelo, o post da @ana não é texto. É uma sequência de códigos:
441700932861015033781902
Os candidatos de fora da rede são os posts mais próximos do seu vetor. O espaço real tem centenas de dimensões; aqui são duas.

O texto do post não entra cru no modelo. O post vira um conjunto de códigos (semantic IDs) gerado a partir do texto, das imagens, da transcrição do áudio e do título do link. Dados do autor também entram: bio, selo, número de seguidores, país e idioma. A bio conta, mas o código não diz quanto.

O primeiro like e o 32º

A busca Phoenix só procura posts que estão nos seus índices. Post fora do índice não chega a quem não segue o autor.

Os índices têm nomes diretos: 1fav, para posts com pelo menos 1 like, e 32fav, para posts com pelo menos 32. Sem o primeiro like, o post da @ana não existe fora da rede dela. Com 32, entra num segundo índice.

SimClusters distribui o post para os grupos de quem curtiu. Então importa quem curte, não só quantos. Na figura, troque "gente de café" por "amigos aleatórios": o post continua chegando a gente, mas a gente que não liga para café.

quem pode receber o post · escolha o número de likes
seguidoresbusca PhoenixSimClusters
likes do post
quem curtiu
Cada ponto é um grupo de pessoas. Seguidores recebem o post via Thunder. Laranja: quem a busca Phoenix pode alcançar depois que o post entra num índice. Anel ou ponto azul: grupos de quem curtiu, via SimClusters. Ilustrativo: o código define os índices, não o tamanho do alcance.
Parte 2 de 5

Filtro

Os candidatos passam pelos filtros do Home Mixer, o serviço que orquestra as cinco etapas. São regras fixas, sem modelo. Saem posts com mais de 48 horas, posts que você já viu e posts de autores que você bloqueou ou silenciou. Dois filtros importam mais.

Respostas e reposts de fora da rede são descartados. Uma resposta da @ana a uma conta grande nunca aparece no For You de quem não segue a @ana. Fora da rede, só circulam posts originais.

Rótulos tiram a conta do alcance fora da rede. Classificadores marcam posts e contas como spam, conteúdo adulto ou texto genérico de IA (llm_slop). Com um rótulo, o post sai do feed de quem não te segue, seja qual for a nota. O rótulo de texto genérico de IA dura 30 dias. Três posts adultos entre os cinco últimos rotulam a conta por 7 dias. Citar ou responder um post rotulado derruba o seu post também, inclusive para seus seguidores. A checagem de rótulos roda de novo no fim, sobre os posts já escolhidos para o feed.

do candidato ao ranking · troque o cenário
THUNDERquem você segue
até 1.200
BUSCA PHOENIXparecidos com seu histórico
até 1.000 + 200
SIMCLUSTERScurtidos por gente parecida
até 800
POPULARES0,005% dos autores
até 500
CANDIDATOSaté 2.800 posts
FILTROS
+48hjá vistobloqueado ou silenciadoresposta ou repost de fora da rederótulo
RANKING PHOENIXpróxima etapa (parte 3)
cenário
Seguidores recebem o post por um caminho próprio. Para o resto, o post precisa entrar nas fontes de fora da rede, onde respostas e contas rotuladas não entram.
Parte 3 de 5

Ranking Phoenix

O ranking Phoenix é um transformer derivado do Grok, com 8 camadas. Ele lê as suas últimas 1.022 ações e, para cada candidato, prevê a probabilidade de 64 ações: curtir, responder, repostar, copiar o link, abrir, ler até o fim, silenciar o autor, denunciar e assim por diante.

O ranking Phoenix não dá nota. Ele entrega só probabilidades, e elas são calculadas por par (leitor, post). O mesmo post da @ana recebe previsões diferentes para cada pessoa:

Probabilidade previstaBia (segue contas de café)Caio (só vê futebol)
curtir12%1%
responder3%0,1%
copiar o link0,5%0,02%
"não tenho interesse"0,1%1,5%
silenciar o autor0,05%0,4%
… mais 59 ações

Valores ilustrativos. O código define o modelo e os pesos, não as probabilidades típicas.

Cada candidato é avaliado sem enxergar os outros candidatos (o código chama isso de candidate isolation). A previsão para o post da @ana não muda conforme os posts que disputam com ele. A comparação entre candidatos acontece na etapa seguinte.

Parte 4 de 5

Pesos e diversidade

As 64 probabilidades vão para o vm-ranker (value model ranker), um serviço separado. Ele faz três coisas, nesta ordem: transforma as probabilidades numa nota, aplica ajustes e corta os posts parecidos demais.

A nota

A nota é a soma de cada probabilidade multiplicada pelo seu peso:

nota = 0,66 × P(like) + 5 × P(reply) + 20 × P(copiar link) + … − 52 × P(não tenho interesse) − 59 × P(silenciar) − 234 × P(denunciar)
AçãoPesoEm likes
Copiar link2030×
Reply57,6×
Quote57,6×
Enviar por DM57,6×
Seguir o autor46×
Like0,661×
Salvar, clique no perfil, view de vídeo00
Bloquear−31,2−47×
Não tenho interesse−52,3−79×
Silenciar−58,8−89×
Denunciar−234−355×
Tabela completa

Repost 1 · compartilhar 2 · tempo de leitura após abrir 0,4 por unidade · clique 0,3 · abrir link 0,2 · dwell 0,05 · expandir foto 0,05 · abrir vídeo 0,02 · rolar sem parar −0,02.

Salvar tem peso zero. Copiar o link vale 20, cerca de 30 likes. É a ação mais valiosa do sistema. O famoso "reply = 27 likes" vem do código de 2023, quando o reply pesava 13,5 e o like 0,5. Não vale mais.

Como as probabilidades são por leitor, a nota também é. Na figura, as probabilidades da tabela da parte 3 viram nota. Para a Bia, a maior contribuição não é o like, é o reply. Para o Caio, a probabilidade de "não tenho interesse" deixa a nota negativa.

a nota · dois leitores, o mesmo post
tipo de post
probabilidades previstas para a Bia
A nota é calculada por leitor. Um reply pouco provável pode valer mais que um like provável, e uma probabilidade pequena de feedback negativo apaga várias positivas. O traço cinza marca a nota antes da última mudança.

Seguidores mútuos

Se autor e leitor se seguem e o post é original, o reply ganha +15 e passa a valer 20. Ligue Bia e @ana se seguem na figura: a barra do reply da Bia fica quatro vezes maior. O repositório registra a história desse número: testaram de 5 a 20, lançaram com 20 e baixaram para 15 em julho, depois de reclamações durante a Copa.

Na prática: seguir de volta quem comenta nos seus posts multiplica por 4 o peso do reply dessas pessoas. Seguir de volta quem nunca interage não muda nada, porque a P(reply) delas é perto de zero.

Sinais negativos

No preset rage bait, o post ganha mais likes e replies e mesmo assim a nota da Bia cai, porque P(não tenho interesse) e P(silenciar) sobem, e os pesos delas são −52 e −59. Considerando só likes, 1% de chance de "não tenho interesse" exige cerca de 80% de chance de like para compensar. Nota negativa põe o post abaixo de todos os positivos do feed.

O contrário também circula: uma denúncia cancela 468 likes, então denúncia em massa derruba qualquer conta. Essa conta usa o peso antigo do like (0,5); com o atual, seria 355. Mas a conta está errada de qualquer forma, e um comentário dos engenheiros no código explica por quê:

  1. O peso multiplica a probabilidade prevista de denúncia, não o número de denúncias. Denúncia é mais de mil vezes mais rara que like; o peso é alto para que essa probabilidade minúscula tenha algum efeito.
  2. A previsão é personalizada. Denúncias de um grupo mudam a previsão para usuários parecidos com esse grupo, não para todos.
o mito dos 468 likes · troque o modo
O comentário no código, traduzido

"Um erro comum é ler a razão entre pesos como equivalência de contagens, por exemplo a afirmação incorreta de que 'uma denúncia cancela 468 likes'. Os pesos se aplicam a probabilidades previstas, não a contagens brutas. A probabilidade base de uma denúncia é mais de 1.000 vezes menor que a de um like, então ela recebe um peso maior para que a previsão consiga afetar o ranking." (home-mixer/params/param.rs, linhas 316–344)

Os pesos negativos são altos porque essas ações são raras. Um post cai quando o modelo prevê que muita gente não quer vê-lo, não por uma denúncia isolada.

Ajustes

Depois da nota, dois multiplicadores:

Diversidade

Das 150 maiores notas, um algoritmo de diversidade (DPP) escolhe 50 que tenham nota alta e embeddings distantes entre si. Os não escolhidos recebem nota zero. Das 50, as 35 maiores notas vão para o feed.

Consequência: um post compete com posts parecidos, não só com posts melhores. Na figura, a @ana está entre os 50 escolhidos. Com dez posts sobre o mesmo assunto e nota um pouco maior que a dela, ela sai. Com um ângulo próprio, que leva o post para uma região vazia do espaço, ela volta, mesmo com nota menor que os vizinhos.

diversidade · adicione posts do assunto do dia
Cada ponto é um post: cor pelo tema, tamanho pela nota. Pontos cheios foram escolhidos; contornos cinza ficaram com nota zero. Ficar perto de muitos posts parecidos custa mais que ter nota um pouco menor.
Parte 5 de 5

Cold start

Esta é a regra que mais importa para contas pequenas.

Em cada feed, a 16ª posição pode ser ocupada por um post em cold start, escolhido entre os candidatos daquele feed. Para concorrer, o post precisa ser original, ter até 2 horas, menos de 200 views no feed, e o autor precisa ter até 50 mil seguidores. No código, essa regra roda dentro do vm-ranker, depois da nota.

O critério é a taxa de likes por view. Para não confiar em amostras pequenas, o código parte de uma taxa de 1,5% com peso de 50 views fictícias: a estimativa é uma distribuição Beta(0,75 + likes; 49,25 + views − likes).

Com 3 likes em 20 views, a estimativa é 5,4%, não os 15% da conta direta. As 50 views fictícias puxam a estimativa para baixo, mas 5,4% ainda é mais que o triplo do ponto de partida. Os botões mostram como cada like e cada view movem a distribuição.

cold start · a estimativa da taxa de likes
Com poucas views, a estimativa fica perto de 1,5%. Cada like no começo move bastante a estimativa; depois de muitas views, move pouco.

A escolha não pega simplesmente a maior estimativa. É Thompson sampling: a cada feed, o sistema sorteia um valor da distribuição de cada post, leva os dois maiores sorteios para a final e escolhe o de maior nota. Posts com poucos dados às vezes ganham, e é assim que o sistema testa posts novos.

a 16ª posição · rode os sorteios
Cada feed é um novo sorteio: um ponto é sorteado de cada distribuição, os dois maiores vão para a final (contorno preto) e vence o de maior nota do modelo. Um like a mais no começo muda a frequência com que a @ana vence.

Dois detalhes do código:

O que o código desmente

Mito ou código

AfirmaçãoVereditoNo código
Hashtag aumenta alcance.MitoNenhuma regra trata hashtags. São texto comum.
Salvar ajuda o post.MitoPeso zero.
Link externo é punido.MitoAbrir link vale +0,2. O X confirmou em julho de 2026 que não há penalidade.
Premium dá boost no ranking.Em parteNão há bônus no ranking. Mas o selo entra no embedding do post, e Premium tem prioridade oficial nos replies.
Clique no perfil conta como engajamento.MitoPeso zero.
Mandar o link num grupo para curtirem ajuda.Em partePara a nota, não: só conta engajamento em post servido no feed. Para o cold start, os likes contam, limitados às views no feed.
Seguir de volta quem comenta ajuda.CódigoO reply de um mútuo vale 20 em vez de 5.
Postar várias vezes por dia derruba o alcance.MitoSe os posts forem espaçados, não. A penalidade de autor vale só dentro de uma atualização do feed, e cada post novo concorre ao cold start.
Tudo junto

Simulador

O simulador junta as cinco etapas. O tamanho dos efeitos depende da audiência de cada conta, que o código não informa. Por isso o resultado é relativo ao cenário base da @ana, e cada configuração roda cinco vezes com variação aleatória.

simulador · monte o post
Cada coluna de bolinhas é uma rodada: verde passou, vermelho não passou. Nenhuma opção garante alcance, mas algumas o eliminam. Os mecanismos são do código; os tamanhos dos efeitos são ilustrativos.

O post da @ana, do começo ao fim

Chega aos 1.200 seguidores via Thunder. Para chegar a mais gente, precisa do primeiro like para entrar no índice da busca Phoenix, e de 32 para entrar no segundo. Passa pelo filtro se não for reply e se a conta não tiver rótulo. O ranking Phoenix prevê, para cada leitor, as probabilidades de like, reply, copiar link, "não tenho interesse" e silenciar. O vm-ranker transforma isso em nota e zera os posts parecidos demais. E nas duas primeiras horas o post concorre à 16ª posição pela taxa de likes por view.

O que muda e o que fica

Os pesos mudam a cada poucas semanas. O repositório tem um segundo conjunto de pesos (like 0,5, "não tenho interesse" −47,5), e o código não diz qual está em produção. Em 19 de outubro de 2026, Elon Musk anunciou um modelo novo que prevê tempo gasto em cada post e leitura até o fim.

O que a equipe muda sem novo deploy

Quase todo número deste artigo é um feature switch: o código traz um valor padrão, mas o valor que vale é lido de um arquivo de configuração. O próprio arquivo de parâmetros avisa que os valores foram espelhados da configuração em 20 de outubro. Há cerca de 200 parâmetros no Home Mixer e 50 no vm-ranker, e 66 deles são liga/desliga, como ligar o sorteio do cold start, a fonte Populares ou a própria busca Phoenix.

Por isso o código mostra o mecanismo e os valores padrão, não necessariamente o que está rodando agora para você.

Os mecanismos tendem a durar mais que os números: nota por leitor, punição forte para feedback negativo, diversidade obrigatória e cold start baseado em likes por view.

Nota de método

Fontes principais

Código-fonte: xai-org/x-algorithm, commit 7f2ca2b, 21 de outubro de 2026.
Pesos e comentário sobre denúncias: home-mixer/params/param.rs, linhas 316–462.
Bônus de mútuos: home-mixer/params/param.rs, linha 347; docs/BIDIRECTIONAL_BOOST_CHANGE.md.
Cold start: home-mixer/params/param.rs, linhas 538–605; home-mixer/scorers/author_cold_start.rs, linhas 217–283.
Fontes de candidatos: home-mixer/params/param.rs, linhas 4–41 e 1016; home-mixer/util/popular_authors.rs, linha 11.
Funil e idade máxima: home-mixer/util/phoenix_request.rs, linha 20; home-mixer/params/config.rs, linhas 17, 19 e 40.
Phoenix: phoenix/README.md; entradas do embedding em grox/flows/mm_emb/renderer_v82.py.
Índices: phoenix-rankall/src/config/mod.rs, linhas 172–180.
DPP: vm-ranker/params.rs, linhas 249–252; vm-ranker/args.rs, linha 18; vm-ranker/scoring/dpp_model.rs, linhas 200–204.
Penalidade de autor e fora da rede: xai-value-model/scoring.rs, linhas 183 e 206; vm-ranker/params.rs, linhas 179–215.
Replies de fora da rede: home-mixer/filters/oon_retweet_reply_filter.rs.
Rótulos: abuse-enforcement-service/service-lib/rules/enforcement_user.yaml; safety-label-user-agg/postToUserLabelRules.strato; home-mixer/candidate_hydrators/vf_candidate_hydrator.rs.
Configuração em tempo real: home-mixer/params/param.rs, linha 1 ("mirrored from config feature-switch defaults"); vm-ranker/config_sync.rs e vm-ranker/args.rs, linha 49 (intervalo de 30 s); home-mixer/server.rs, linhas 182–193 (switches por leitor e sobrescrita por requisição).
Anúncios e cobertura: Elon Musk sobre o novo modelo de ranking, 19/10/2026; TechCrunch, "X abre o código e lança o Under the Hood", 13/08/2026; TechCrunch, dados de follow mútuo, 13/07/2026; Nikita Bier sobre links e sobre engagement bait, 2026.
Terceiros: Buffer, análise de Premium no X (18,8 milhões de posts) e de links, 2025.
Desenho das figuras: Kim, Reinecke e Hullman, CHI 2017; Hullman, Resnick e Adar, 2015; Segel e Heer, 2010; Conlen, Kale e Heer, 2019; estilo da fábrica inspirado em Colorfigures, de April Zhu.

Dissecando o algoritmo do X · ensaio interativo · dados verificados contra o código-fonte · outubro de 2026