Agente simples que busca notícias em RSS, extrai o conteúdo das páginas, gera um resumo em HTML usando Gemini e envia por email via SMTP. Ideal para um boletim diário de tecnologia.
- Busca links em
Bing News RSScom base no tópico (TOPIC). - Faz a extração de texto relevante com
trafilatura. - Gera um HTML de newsletter usando
google-generativeai(Gemini). - Envia o resultado por email usando
SMTPdo Gmail.
Principais funções:
search_webemmain.py:21— consulta RSS do Bing e retorna links.scrape_contentemmain.py:42— extrai texto limpo das páginas.send_emailemmain.py:52— envia o HTML por email.generate_newsletteremmain.py:83— orquestra o fluxo e é o ponto de entrada chamado emmain.py:132.
Python 3.9+- Conta Gmail (recomenda‑se usar
App Passwordcom 2FA) - Chave de API do
Gemini
# Clonar o projeto (se aplicável)
# git clone <repo>
# cd WebFetchMailer
# Criar e ativar um ambiente virtual
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows PowerShell
# Instalar dependências
pip install -r requirements.txt
# Dependência adicional necessária (não listada no requirements.txt)
pip install trafilaturaCrie um arquivo .env na raiz (baseado em .env.example) com as variáveis:
# Gemini
GEMINI_API_KEY=suachave
TOPIC=tecnologia
# Email (Gmail SMTP)
EMAIL_FROM=seu_email@gmail.com
EMAIL_PASSWORD=sua_senha_ou_app_password
EMAIL_TO=destinatario@gmail.com# Com o ambiente virtual ativado e .env configurado
python main.py- O script irá:
- Buscar até 5 links no RSS do Bing para o tópico configurado.
- Extrair o texto das páginas.
- Gerar HTML de newsletter via
Gemini(gemini-2.0-flash). - Enviar o HTML por email.
Para executar diariamente às 8h via cron (macOS/Linux):
crontab -e
# Exemplo de entrada:
0 8 * * * cd /Users/victorhugo/Documents/WebFetchMailer && /Users/victorhugo/Documents/WebFetchMailer/.venv/bin/python main.py >> /Users/victorhugo/Documents/WebFetchMailer/cron.log 2>&1.
├── main.py # Fluxo principal e funções
├── requirements.txt # Dependências de Python
├── .env.example # Exemplo de variáveis de ambiente
└── README.md # Este arquivo
❌ Credenciais de email não configuradas no .env— adicioneEMAIL_FROM,EMAIL_PASSWORD,EMAIL_TO.❌ Erro no Gemini— verifiqueGEMINI_API_KEYe cotas de uso.❌ Erro ao enviar email— useApp Passworddo Gmail (com 2FA) ou confirme que o SMTP está acessível.- Conteúdo vazio em
scrape_content— algumas páginas bloqueiam scraping; tente outro link.
- Não compartilhe sua
GEMINI_API_KEYe credenciais de email. - Prefira
App Passwordno Gmail com autenticação em dois fatores. - Evite logar conteúdo sensível; o projeto já não grava segredos em arquivos.
Defina a licença do projeto conforme sua preferência (MIT, Apache‑2.0, etc.).