Como o painel transforma manchetes em uma posição no eixo esquerda–direita — e onde esse número falha.
Nada aqui é um laudo. O painel mede enquadramento, não intenção: é um proxy auditável, com fórmula aberta, tabela editável e limitações declaradas. Use para ver padrões e diferenças entre veículos, não para carimbar veículo.
Feeds RSS/Atom públicos de veículos brasileiros — 26 fontes, dos grandes portais às agências de mídia alternativa e às revistas de opinião. De cada item guardamos título, link, resumo e data de publicação. O histórico é retido por 8 dias; o painel recorta a janela escolhida (12 h, 24 h, 48 h, 7 dias).
Uma nota única esconderia a diferença entre quem o veículo é e o que ele publicou hoje. Separamos os dois:
| Camada | O que mede | Como muda |
|---|---|---|
Linha editorial (prior) | Posição histórica do veículo no eixo | Só quando alguém edita perfis.json |
Enquadramento do dia (framing) | Como as manchetes da janela tratam os atores políticos | A cada coleta |
Cada veículo recebe um prior de −100 (esquerda) a +100 (direita), com
confianca (alta/média/baixa) e uma justificativa de uma linha. A tabela é opinião declarada e
documentada, não medida: é o único lugar do sistema onde há julgamento humano — e ele está exposto, versionado
e editável em perfis.json. Fontes oficiais (Agência Senado) entram na lista
com no_cabo: false: não têm linha editorial e não puxam a corda.
A regra central evita o erro mais comum de análise de mídia, que é tratar "crítica" como sinal de viés. Crítica só é sinal quando cruzada com o alvo:
lexico.ATORES) têm lado e peso. Instituições — STF, Congresso, PF — têm lado 0: elas só entram no cálculo pelo padrão de ataque/defesa.lexico.TOM) é um léxico de valência com tolerância a flexão (investiga casa investigação, investigado).lexico.PADROES) cobrem construções que o par ator×tom não pega, como "ataque ao STF por ativismo" (direita) ou "defesa da democracia contra golpismo" (esquerda).Se todos os veículos noticiam o mesmo escândalo, todos recebem o mesmo sinal — isso é a agenda do dia, não viés. Por isso o enquadramento entra no cálculo como desvio em relação à média do ciclo:
Com isso, a linha editorial continua sendo a âncora — como deve ser num sistema que classifica veículos, não dias — e o noticiário só move a agulha quando um veículo trata o mesmo fato de forma diferente dos pares.
A corda do painel não é a soma das linhas editoriais (que, num cadastro simétrico, ficaria cravada no zero e
não informaria nada). O nó mede a pressão do noticiário do dia: o enquadramento médio da
cobertura, ponderado pelo volume de cada veículo (√n, com teto de 25 itens para um portal não
engolir as agências).
Leitura correta: "hoje o noticiário favorece este lado" — e não "a imprensa é deste lado". As fichas na pista são outra medida: cada uma é a posição editorial do veículo (linha + desvio do dia).
A seção de pautas cruzadas agrupa manchetes que tratam do mesmo fato em veículos diferentes — por similaridade de título (índice invertido em tokens raros, Jaccard/containment), sem LLM. O que interessa não é o agrupamento em si, e sim a divergência dentro dele: a mesma notícia tratada como ataque por um veículo e como fato neutro por outro é o retrato mais concreto de uma linha editorial.
A manchete de cada card é a menos carregada politicamente do grupo (a mais "factual"), e cada linha mostra a fonte, o enquadramento e o link para a matéria original. Grupos com um só veículo são descartados: repetição exige comparação.
O gráfico "A corda no tempo" recalcula a posição em janelas moventes de 24 h a cada 3 h (até 4
dias) ou 6 h (até 7 dias), direto do histórico de manchetes. Além disso, cada coleta grava um
snapshot por hora em dados/serie.json, que sustenta a série depois que o histórico de
RSS expira.
Pontos vazados são amostra parcial. O feed de um veículo publica apenas as manchetes mais recentes, então uma janela de dois dias atrás pode conter 3 itens em vez de 300. O painel não desenha linha sobre esses pontos — eles aparecem como círculos vazios. Com o tempo, os snapshots preenchem o histórico de verdade.
Para cada pauta cruzada o painel calcula quantos veículos de cada campo cobriram o fato, sobre o total de veículos daquele campo que publicaram na janela — um feed fora do ar não "deixou de cobrir". Se a direita tem 0 ou 1 veículo cobrindo e a esquerda tem dois ou mais, a pauta é marcada como ponto cego da direita (e vice-versa).
O denominador é pequeno e aparece na tela. Com 7 veículos por campo, 1 veículo = 14%: por isso o painel mostra "esquerda 3/7 · centro 4/11 · direita 0/7" em vez de "43%". Porcentagem com denominador de 7 mente com cara de precisão.
Cada veículo tem uma distribuição de enquadramentos, não um ponto. O boxplot no ranking mostra a caixa (25–75% das manchetes), o risco (mín–máx) e a mediana. Um veículo que publica −70 e +70 na mesma janela é bimodal, não moderado — e a média sozinha diria a coisa errada.
O score aparece com ±IC, a meia-largura do intervalo de 90% por bootstrap: com 4
manchetes a incerteza é enorme, e agora isso é visível em vez de virar um número com cara de certeza.
Opinião entra como peso, não como classificação: manchete sob
/opiniao, /colunas, /artigos ou /blogs vale 0,4 na
corda. A heurística cobre ~7% dos itens na base real — é piso, não teto, e o painel não promete
separação que não existe.
Os "sinais" no ranking (opinião, limpeza de manchete, fonte citada) aparecem com denominador explícito e não formam um índice de rigor. Tentamos: um score composto punia o Estadão com 32/100 apenas porque o RSS dele não traz descrição. Formato de feed não é qualidade jornalística.
Em /afericao você classifica 12 manchetes sem saber o veículo. O sistema compara com o léxico e mostra acurácia de direção, erro médio e o viés por campo — separando "o léxico erra" de "o léxico erra contra um lado". A partir de 30 codificações a amostra passa a ser tratada como suficiente.
Saber que o tema do dia é "Política institucional" não diz se o dia inteiro é um assunto. O painel calcula o HHI das pautas (soma dos quadrados das fatias) e a fatia das três maiores: perto de 1 uma pauta domina tudo, perto de 0 a agenda está pulverizada. Isso explica por que todas as chamadas podem parecer a mesma história — ou não.
"Deriva" compara a posição de cada veículo na janela atual com a janela imediatamente anterior do mesmo tamanho (24h agora × 24h anteriores). Só entra veículo com pelo menos 2 manchetes com sinal em cada lado: comparar 1 contra 1 produz uma "mudança" que é ruído.
Um feed parado não some do painel — ele distorce: reduz o denominador do blindspot e muda o equilíbrio da corda. Por isso cada fonte tem estado explícito (ok / atenção / parado / erro), contagem na janela e dias desde o último item.
Toda classificação de veículo é julgamento humano declarado. Esta tabela é a fonte: mostra o
prior, a confiança, a justificativa, a data da última revisão e o histórico de mudanças do arquivo.
Editar perfis.json e reiniciar é o mecanismo de correção.
lexico.py é parte do uso, não uma falha.prior, mude o arquivo: a corda inteira se recalcula.prior.python3 ferramentas/validar.py — falha se o léxico voltar a errar os casos conhecidos.Viésômetro · modelo v1 · dados públicos de RSS · nada aqui é publicado ou compartilhado automaticamente.