Skip to content

About

Gerador de briefings diários em markdown e áudio. Coleta notícias de feeds RSS e SearXNG, agrupa por tema via clustering semântico, sintetiza com Ollama e produz um arquivo .md (e opcionalmente .mp3) na pasta configurada.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

briefing

Gerador de briefings diários em markdown e áudio. Coleta notícias de feeds RSS e SearXNG, agrupa por tema via clustering semântico, sintetiza com Ollama e produz um arquivo .md (e opcionalmente .mp3) na pasta configurada.

Pipeline

perfis.yml (fontes, perfil, template)
    ↓
Coleta — RSS feeds + SearXNG
    ↓
Deduplicação por URL/título
    ↓
Memória 24h — separa novas × continuações
    ↓
Clustering semântico — embeddings (nomic-embed) + AgglomerativeClustering
    ↓
Ranqueamento — tamanho do cluster × peso da fonte
    ↓
Síntese — ollama_generate() com template do perfil
    ↓
Título — segunda chamada ao LLM via JSON (fallback: heurística)
    ↓
Salvar .md em VAULT/briefings/
    ↓
[se formato incluir áudio]
  Roteiro → ollama_generate() com template de áudio
  edge-tts → .mp3 em VAULT/briefings/

Infraestrutura

O serviço depende de dois componentes externos, provisionados via Docker:

Serviço Uso
Ollama Geração de texto (LLM) e embeddings
SearXNG Busca de notícias por query
docker compose up -d

Se o Ollama já estiver rodando nativamente, defina PORT_OLLAMA com uma porta diferente no .env ou remova o container ollama do compose e aponte OLLAMA_BASE_URL para o processo nativo.

Uso

# Subir infraestrutura
docker compose up -d

# Executar
./run.sh                      # briefing matinal_tech (default)
./run.sh matinal_tech         # briefing nomeado
./run.sh vespertino_mercado   # briefing vespertino
./run.sh "fusão nuclear"      # modo ad-hoc — tema livre

O run.sh carrega o .env, cria o venv se não existir e executa tech-briefing.py.

Configuração

cp .env.example .env
Variável Descrição
VAULT Pasta onde os arquivos gerados serão salvos
OLLAMA_BASE_URL URL do Ollama (http://localhost:11434)
SEARXNG_URL URL do SearXNG (http://localhost:8888)
MODEL_CHAT Modelo para geração de texto
MODEL_EMBED Modelo para embeddings
PORT_SEARXNG Porta exposta pelo container SearXNG
PORT_OLLAMA Porta exposta pelo container Ollama

Saída

Cada execução gera arquivos nomeados como:

VAULT/briefings/
  2026-04-11_0700_matinal_tech_<slug-do-titulo>.md
  2026-04-11_0700_matinal_tech_<slug-do-titulo>.mp3   # se formato incluir áudio

O .md contém frontmatter YAML (title, date, time, briefing, perfil, sources) seguido do corpo gerado pelo LLM e uma seção com todos os links coletados.

Briefings e perfis

Definidos em parametros/perfis.yml:

Nome Perfil Horário Fontes
matinal_tech pedro_dev 07:00 RSS (HN, Ars, Verge, TechCrunch…)
vespertino_mercado attanotech 18:00 RSS + SearXNG

Cada briefing aponta para um perfil (tom, interesses, exclusões) e um par de templates (briefing_*.md, audio_*.md) em parametros/prompts/.

Agendamento (systemd)

sudo cp alfred-briefing-matinal.service alfred-briefing-matinal.timer /etc/systemd/system/
sudo cp alfred-briefing-vespertino.service alfred-briefing-vespertino.timer /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now alfred-briefing-matinal.timer
sudo systemctl enable --now alfred-briefing-vespertino.timer

Os timers disparam às 07:00 (matinal) e 18:00 (vespertino) diariamente. Com Persistent=true, executa na próxima inicialização caso a máquina estivesse desligada no horário.

Estrutura

briefing/
├── docker-compose.yml
├── config/
│   └── searxng/settings.yml
├── parametros/
│   ├── lib_alfred.py       # helpers: ollama, searxng, vault
│   ├── lib_templates.py    # renderização de templates
│   ├── perfis.py           # leitura do perfis.yml
│   ├── perfis.yml          # fontes, perfis, briefings
│   └── prompts/            # templates de síntese e áudio
├── tech-briefing.py
├── run.sh
├── config.yml
├── fontes.csv
├── logs/                   # briefing_seen.json (memória 24h)
└── .env.example

About

Gerador de briefings diários em markdown e áudio. Coleta notícias de feeds RSS e SearXNG, agrupa por tema via clustering semântico, sintetiza com Ollama e produz um arquivo .md (e opcionalmente .mp3) na pasta configurada.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages