← voltar ao painel

Metodologia

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.

O que é coletado

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).

Por que duas camadas

Uma nota única esconderia a diferença entre quem o veículo é e o que ele publicou hoje. Separamos os dois:

CamadaO que medeComo muda
Linha editorial (prior)Posição histórica do veículo no eixoSó quando alguém edita perfis.json
Enquadramento do dia (framing)Como as manchetes da janela tratam os atores políticosA cada coleta

Camada 1 — linha editorial

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.

Camada 2 — enquadramento: alvo × tom

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:

sinal = lado_do_alvo × tom  ∈ [−1, +1]

ataque à direita → sinal negativo (esquerda)
ataque à esquerda → sinal positivo (direita)
elogio à esquerda → negativo · elogio à direita → positivo

O ciclo de notícias é descontado

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:

framingabs = 100 × média(sinais) × cobertura  (cobertura = min(1, n_com_sinal / 4))
delta = framingabs − média(framingabs de todos os veículos)
score = prior + w × delta  (w = 0,35 com 4+ manchetes com sinal; 0,15 com menos)

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.

O que a corda mede

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).

posição = Σ(framingi × pesoi) / Σpesoi   ·    esquerda% = (100 − posição)/2   ·   direita% = (100 + posição)/2

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).

Mesma pauta, enquadramentos diferentes

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.

Série histórica

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.

Ponto cego (blindspot)

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.

Distribuição, não média

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 e sinais de apuração

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.

Aferição humana

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.

Concentração da agenda

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 entre janelas

"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.

Saúde das fontes

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.

Tabela de priors (auditável)

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.

Limitações que você precisa saber

Como auditar

Viésômetro · modelo v1 · dados públicos de RSS · nada aqui é publicado ou compartilhado automaticamente.