Pular para o conteúdo principal

Formato dos dados (data/)

Cada execução do workflow cria arquivos novos — nada em data/ é sobrescrito ou apagado; o histórico só cresce.

data/
├── index.jsonl # histórico de todas as execuções (append-only)
└── 2026/
├── news-2026-10-05T000000Z.jsonl # as notícias da semana
├── news-2026-10-05T000000Z.report.json # diagnóstico por feed da mesma execução
├── news-2026-10-12T000000Z.jsonl
└── news-2026-10-12T000000Z.report.json
  • Nome do arquivo: news-<AAAA-MM-DD>T<HHMMSS>Z.jsonl (horário UTC do início da coleta).
  • Se já existir um arquivo com o mesmo carimbo, o novo vira ...Z-2.jsonl.
  • Com a opção gzip, o arquivo sai como news-...jsonl.gz.

Esquema de cada linha (schema_version: 1)​

Uma notícia por linha, JSON com UTF-8 real (ensure_ascii=false).

CampoTipoDescrição
schema_versionintVersão do formato (hoje 1).
run_idstringIdentificador da execução (ex.: 20261005T000112Z-a1b2c3).
collected_atstringMomento da coleta, ISO-8601 UTC.
feed_namestringNome exato do feed como está em rss.txt (ex.: Metrópoles - Coluna Juris).
feed_slugstringVersão "slug" do nome (metropoles-coluna-juris) — boa como chave.
feed_groupstringVeículo (Metrópoles) — parte antes do -.
feed_sectionstringEditoria/coluna (Coluna Juris) — parte depois do -.
feed_urlstringURL do feed/página de origem.
feed_kindstringrss ou html (feeds marcados | HTML em rss.txt).
feed_titlestringTítulo declarado pelo próprio feed.
idstringHash estável de feed_slug + guid/link (dedupe entre semanas).
titlestringManchete (sem HTML).
linkstringURL da notícia, sem utm_*/fbclid e sem âncora.
guidstringIdentificador original do item, quando existe.
publishedstringData de publicação em ISO-8601 UTC ("" se o feed não informa).
published_rawstringA data crua, como veio do feed.
updatedstringData de atualização em ISO-8601 UTC.
summarystringResumo/lide em texto puro.
content_textstringTexto completo, só quando a coleta roda com include_content.
authorsarrayAutores.
categoriesarrayTags/editorias declaradas pelo feed.
imagestringImagem destacada, se houver.
languagestringIdioma do feed (padrão pt-BR).
source_domainstringDomínio do link (g1.globo.com).
fetch_routestringComo foi baixado: direct, proxy ou mirror.
fetch_viastringProxy/espelho usado (credenciais mascaradas).
parserstringrss, html:jsonld+cards, markdown, rss-fallback, html-fallback, …

Exemplo​

Uma linha real (quebrada aqui só para leitura):

{"schema_version":1,"run_id":"20261005T000112Z-a1b2c3","collected_at":"2026-10-05T00:01:12Z",
"feed_name":"Metrópoles - Política","feed_slug":"metropoles-politica","feed_group":"Metrópoles",
"feed_section":"Política","feed_url":"https://www.metropoles.com/politica/feed","feed_kind":"rss",
"feed_title":"Política - Metrópoles","id":"5263fe2a3a99345d","title":"Câmara aprova projeto...",
"link":"https://www.metropoles.com/politica/camara-aprova-projeto","guid":"https://...?p=123",
"published":"2026-10-04T18:30:00Z","published_raw":"Sun, 04 Oct 2026 15:30:00 -0300","updated":"",
"summary":"Texto segue para o Senado.","authors":["Redação"],"categories":["Política"],
"image":"https://.../foto.jpg","language":"pt-BR","source_domain":"metropoles.com",
"fetch_route":"direct","fetch_via":"direct","parser":"rss"}

Garantias​

  • id é estável: SHA-1 de feed_slug|guid-ou-link-ou-título (16 hex). A mesma notícia no mesmo feed gera o mesmo id em semanas diferentes — use-o para deduplicar ao juntar snapshots.
  • link é canônico: parâmetros de rastreamento (utm_*, fbclid, gclid, …) e fragmentos são removidos; URLs relativas são resolvidas.
  • Texto limpo: title, summary e content_text não contêm HTML.
  • Datas em UTC: published/updated sempre em ISO-8601 com Z; quando o feed não informa (comum em páginas HTML), o campo fica vazio e published_raw guarda o original.