Sistema de automação de conteúdo para news.juliano340.com
Este projeto é composto por dois repositórios que trabalham em conjunto:
Função: Backend/Worker de automação
- Coleta notícias de múltiplas fontes RSS
- Processa e gera arquivos Markdown estruturados
- Realiza commits automáticos no repositório do site
- Executa via cron a cada 2 horas
Repositório: https://github.com/juliano340/news-frontend
Função: Frontend/Site estático
- Site em Next.js que consome os posts Markdown
- Hospeda o conteúdo gerado pelo worker
- Faz deploy automático na Vercel
Repositório: https://github.com/juliano340/news-juliano340
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ Fontes RSS │ │ news-worker │ │ news-juliano340 │
│ (G1, GZH, etc) │────▶│ (Este Repo) │────▶│ (Site Frontend) │
│ │ │ - Coleta notícias │ │ - Next.js │
│ │ │ - Gera Markdown │ │ - Vercel Deploy │
└─────────────────────┘ │ - Git Push │ │ - Exibe posts │
└─────────────────────┘ └─────────────────────┘
O worker clona o repo do site em um diretório local (configurável via REPO_PATH) e gera os posts na pasta content/posts/. Em seguida, faz commit e push das alterações para o repositório do site.
- G1 Tecnologia
- GZH (Zero Hora)
- Correio do Povo
- Tecmundo
- Google Trends Brasil
- Node.js >= 18.0.0
- Git configurado
- Acesso à internet
- Clone do repositório
news-juliano340no mesmo servidor
# Criar diretório base
mkdir -p /opt
# Clonar o worker (este repositório)
cd /opt
git clone https://github.com/juliano340/news-frontend.git news-worker
cd news-worker
# O worker irá clonar/gerenciar o repo do site automaticamente
# ou você pode clonar manualmente:
git clone https://github.com/juliano340/news-juliano340.git /opt/news-juliano340cd /opt/news-worker
npm installcp .env.example .env
nano .env # Editar conforme necessárioConfigurações importantes:
# Caminho onde o worker encontrará o repo do site
REPO_PATH=/opt/news-juliano340
# Caminho onde os posts serão gerados (dentro do repo do site)
POSTS_PATH=/opt/news-juliano340/content/posts# Gerar token de acesso pessoal no GitHub
# Settings > Developer settings > Personal access tokens > Tokens (classic)
# Configurar remote com token
git remote set-url origin https://SEU_TOKEN@github.com/juliano340/news-juliano340.gitnode worker.js --dry-run # Modo de teste
node worker.js # Execução real# Editar crontab
crontab -e
# Adicionar linha para executar a cada 2 horas:
0 */2 * * * cd /opt/news-worker && node worker.js >> /var/log/news-worker.log 2>&1/opt/news-worker/ # Este repositório
├── worker.js # Orquestrador principal
├── sources/ # Coletores de cada fonte RSS
├── ai.js # Integração com IA (opcional)
├── config.js # Configurações
├── logger.js # Sistema de logs
├── utils.js # Funções utilitárias
└── package.json
/opt/news-juliano340/ # Repositório do site (dependência)
├── content/posts/ # Posts gerados em Markdown
├── app/ # Código Next.js
├── components/ # Componentes React
└── ...
---
title: "Título da notícia"
date: "2024-01-15T10:30:00.000Z"
tags: ["tecnologia", "inovacao"]
source: "G1 Tecnologia"
original_url: "https://..."
slug: "titulo-da-noticia"
---
Conteúdo ou resumo da notícia...Os logs são salvos em: /var/log/news-worker.log
Para acompanhar em tempo real:
tail -f /var/log/news-worker.log# Execução manual
cd /opt/news-worker && node worker.js
# Verificar logs
tail -f /var/log/news-worker.log
# Ver status do cron
crontab -l
# Verificar se o repo do site está atualizado
cd /opt/news-juliano340 && git status
# Forçar push manual
cd /opt/news-juliano340 && git push origin mainPara usar IA na geração de resumos e tags:
- Obter API key em: https://openrouter.ai
- Configurar no
.env:USE_AI=true OPENROUTER_KEY=sua_chave_aqui
- Verificar se o token GitHub tem permissões de escrita
- Confirmar que
REPO_PATHaponta para o diretório correto - Verificar se o remote está configurado com HTTPS + token
- Verificar se o commit foi enviado para
news-juliano340 - Confirmar que a Vercel fez o deploy (pode levar alguns minutos)
- Verificar se os arquivos estão em
content/posts/
# Garantir permissões corretas
sudo chown -R $USER:$USER /opt/news-worker
sudo chown -R $USER:$USER /opt/news-juliano340- Worker (Backend): https://github.com/juliano340/news-frontend
- Site (Frontend): https://github.com/juliano340/news-juliano340
MIT
Nota: Este projeto foi desenvolvido para automatizar a coleta e publicação de notícias. O worker mantém o site atualizado automaticamente, permitindo foco na curadoria de conteúdo.