
Detecção e rastreamento automatizados de engajamento falso no GitHub — CI diário, infraestrutura zero
Detecção e rastreamento automatizados de engajamento falso no GitHub
Um projeto do JS Labs —
parte da iniciativa AI Slop Intelligence.
Executa todos os dias. Pontua todas as contas suspeitas. Detecta campanhas coordenadas de bots.
Abre issues diretamente em repositórios comprometidos para que mantenedores possam agir.
Apoie este projeto
BTC 3QjWqhQbHdHgWeYHTpmorP8Pe1wgDjJy54
ETH 0x5851e6145F4773d1585b8686095FB16E368a4dA1
ZEC t1KSR5YkNPbjqRSCoLKo5AddFWdm9Kzxh1B
As estrelas do GitHub são um sinal de confiança. São como desenvolvedores decidem o que avaliar, do que depender e o que recomendar. Esse sinal está sendo sistematicamente corrompido.
Durante o boom de IA de 2024-2026, surgiu uma indústria de fazendas de bots para fabricar credibilidade para repositórios de baixa qualidade, muitas vezes maliciosos. Um projeto com 800 estrelas em 48 horas parece legítimo para um desenvolvedor examinando resultados de pesquisa. Esse é o ponto. O objetivo do engajamento falso não são as estrelas em si; é a prova social que essas estrelas produzem e as decisões a jusante que essa prova social influencia.
O padrão é identificável. Contas criadas na mesma semana, sem biografia, sem seguidores, sem repositórios originais, estrelando os mesmos 15 repositórios dentro de uma janela de 2 horas. Não uma campanha, mas dezenas executadas simultaneamente, todos os dias, em milhares de contas. Os dados mostram repositórios onde 185 de 185 engajadores são bots. Uma taxa de falsidade de 100%. Colocações inteiras de trending construídas sobre nada.
phantomstars foi criado porque esse problema é tratável. A relação sinal-ruído na API pública do GitHub ainda é, por enquanto, alta o suficiente para que campanhas coordenadas deixem impressões digitais claras. Este projeto lê essas impressões, publica os dados brutos e notifica os mantenedores dos repositórios afetados diretamente.
Isso faz parte do trabalho mais amplo do AI Slop Intelligence no JS Labs, uma pesquisa contínua sobre os mecanismos e efeitos mensuráveis do conteúdo de baixa qualidade gerado por IA inundando ecossistemas de desenvolvedores. Engajamento falso não é um problema periférico. É o mecanismo de distribuição que coloca o "slop" na frente de usuários reais.
O phantomstars executa um job diário do GitHub Actions que:
r/osinttools e r/coolgithubprojects, extraindo links de repositórios GitHub dos últimos 2 diasSem servidores. Sem bancos de dados. Sem custo de infraestrutura.
Sim. Quando a taxa de falsidade de um repositório excede 40% ou uma campanha coordenada é detectada, o phantomstars abre uma issue diretamente naquele repositório. A issue contém a tabela completa de suspeitos, associação à campanha, pontuações compostas e datas de criação das contas: tudo que um mantenedor precisa para investigar e reportar ao GitHub.
Se as issues estiverem desabilitadas no repositório alvo, a notificação é ignorada silenciosamente e registrada no log de varredura.
Sim.
proprietario/repo e execute uma varredura direcionada.Por que a separação:
Sim. Se sua conta aparecer em data/suspects.jsonl e você acreditar que a classificação está incorreta, abra uma issue de falso positivo usando o template fornecido. Os relatos são revisados manualmente antes de qualquer adição à lista de permissões. A lista de permissões está armazenada em data/allowlist.txt; as contas listadas lá são excluídas de todas as varreduras futuras e do ledger de suspeitos.
Um ID de campanha (ex.: c-a3f9b2e1) é uma impressão digital hexadecimal determinística de 8 caracteres derivada do hash SHA-256 do conjunto ordenado de logins dos membros daquela campanha. O mesmo grupo de contas produzirá o mesmo ID de campanha em execuções de varredura independentes, permitindo rastreamento longitudinal. Não é um nome de repositório, um nome de usuário ou qualquer identificador externo.
Estabilidade: o ID é estável enquanto o conjunto de membros da campanha permanecer inalterado. Se bots forem adicionados ou suspensos entre varreduras, o ID muda porque a associação mudou. Isso é esperado e reflete a deriva real na composição da fazenda de bots.