SEO Forecaster pipeline diário fontes 3 limiar de breakout 0.50 finalistas top 50 ROI Labs

Previsão de demanda de busca

O termo existe antes do volume.

Quando o planejador de palavras-chave finalmente mostra volume, o assunto já tem meses de conversa em algum lugar — e quem escreveu naquele mês já está na primeira página.

Este pipeline lê os lugares onde a conversa acontece primeiro, mede a aceleração de cada termo, descarta o que não tem nada a ver com o seu nicho e projeta a curva. O que sai não é uma lista de palavras — é uma data para escrever.

Candidato em breakout run diário · estágio 5 de 5

breakout · nicho

Sinais de conversa observados e projeção de demanda de busca observado · menções/dia previsto · chronos hoje
menções em HN, Reddit e GDELT projeção com intervalo
A janela entre a conversa e a busca é o prazo que você tem para publicar.  

O run diário

Cinco estágios, um depende do outro

Cada estágio existe para jogar coisa fora. Entram milhares de sinais brutos; sai um punhado de termos com data e intenção de busca associada.

  1. Ingest

    ingest/hackernews · reddit · gdelt

    Três fontes de conversa pública, buscadas em paralelo. Se uma cai, o run continua com as outras e registra o erro — perder o GDELT não pode derrubar o dia.

  2. Detect

    detect/breakout

    Cada termo entra no histórico e ganha um score de aceleração. Abaixo de 0.50 não é breakout, é ruído de sempre.

  3. Filter

    filter/relevance

    Similaridade vetorial contra os nichos cadastrados. Um termo pode estar explodindo e ainda assim não ter nada a ver com o que você publica.

  4. Forecast

    forecast/chronos

    Os 50 finalistas vão para o serviço do Chronos, que devolve a curva projetada com intervalo. É aqui que "está subindo" vira "vai estar aqui em N dias".

  5. Reason

    reason/expand

    Um LLM abre cada termo em cauda longa e lacunas de conteúdo. Sai a pauta, não só a palavra.

Por que estas três

Onde o assunto aparece antes

Nenhuma delas é uma ferramenta de SEO — e é exatamente por isso que funcionam. Cada uma trouxe sua própria armadilha, e as três estão anotadas aqui porque custaram tempo.

Hacker News

Onde ferramenta de desenvolvedor e mudança de plataforma aparecem primeiro, com semanas de vantagem sobre a busca.

ArmadilhaA API oficial é generosa, mas paginar histórico inteiro é caro. O pipeline lê só a janela recente e guarda o resto no term_history.

Reddit

Onde a dúvida real é escrita com as palavras do usuário, não com as palavras do setor.

ArmadilhaA API bloqueia IP de datacenter com 403. A saída é o RSS Atom (/r/<sub>/hot/.rss), que responde 200 no mesmo lugar onde o .json nega.

GDELT

Cobertura mundial de notícia em quase tempo real — o sinal macro que o fórum não dá.

ArmadilhaConsultar a tabela crua no BigQuery custa 423 GB e estoura a cota numa tacada. Usar gkg_partitioned com _PARTITIONTIME: 0,1 GB por dia.

Stack

Postgres com pgvector, Chronos num serviço à parte

O worker é Python. O Chronos roda isolado em :8001 porque previsão é a parte pesada e não deve competir com a ingestão pelo mesmo processo. A expansão em cauda longa aceita Ollama local (ilimitado, sem rate limit, ideal para testar) ou Groq com llama-3.3-70b, mais esperto e limitado no free tier — é uma variável de ambiente, não uma reescrita.

# 1 · subir banco, chronos e ollama
docker compose up -d
docker exec -it seo-forecaster-ollama-1 ollama pull nomic-embed-text

# 2 · migration + nichos
python -c "from worker.persist.db import run_migration; run_migration('worker/migrations/001_initial.sql')"
python -m worker.tools.seed_niches

# 3 · um run completo
python -m worker.pipeline
Ler o código no GitHub