Criar e automatizar uma newsletter com Python e Hermes Agent

📅 25 Aug 2026 📖 5 min de leitura 🏷️ Criadores de Conteúdo ✍️ Marcus

Imagina teres uma newsletter semanal com conteúdos relevantes e altamente personalizados, curados e redigidos quase sem intervenção manual, permitindo-te focar exclusivamente na estratégia e na ligação com a tua audiência. Para quem cria conteúdo digital, manter a consistência de publicação é frequentemente o maior desafio — mas a combinação do Python com o Hermes Agent transforma completamente este cenário.

Neste tutorial prático, vamos construir um pipeline completo de automação para newsletters: desde a gestão de subscritores até ao processamento e redação assistida por IA, finalizando com o disparo e medição de métricas de desempenho.

A Arquitetura de uma Newsletter Automatizada

Para criar um sistema robusto e independente de plataformas pagas e limitadoras, dividimos a automação em quatro pilares fundamentais:

  • Gestão de Subscritores: Base de dados simples em Python para armazenar e filtrar a lista de contactos.
  • Curadoria e Geração com IA: Utilização do Hermes Agent com uma skill dedicada à pesquisa e redação.
  • Envio Programado: Script de integração SMTP/API para distribuição dos emails.
  • Análise de Métricas: Monitorização do crescimento e retenção da lista.

Passo 1: Captar e Gerir Subscritores com Python

Antes de enviar qualquer email, precisamos de uma forma simples e eficiente de armazenar quem subscreveu a nossa newsletter. Vamos utilizar a biblioteca nativa sqlite3 em Python para gerir a base de dados de contactos de forma local e segura.

import sqlite3

def init_db():
    conn = sqlite3.connect("newsletter.db")
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS subscribers (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            email TEXT UNIQUE NOT NULL,
            status TEXT DEFAULT 'active'
        )
    ''')
    conn.commit()
    conn.close()

def add_subscriber(email):
    conn = sqlite3.connect("newsletter.db")
    cursor = conn.cursor()
    try:
        cursor.execute("INSERT INTO subscribers (email) VALUES (?)", (email,))
        conn.commit()
        print(f"Subscritor {email} adicionado com sucesso.")
    except sqlite3.IntegrityError:
        print(f"O email {email} já está registado.")
    finally:
        conn.close()

if __name__ == "__main__":
    init_db()
    add_subscriber("leitor@exemplo.pt")

O que o código faz: O script cria um ficheiro de base de dados SQLite (newsletter.db) e define a tabela subscribers. A função add_subscriber garante que não existem registos duplicados na tua lista de contactos.

Passo 2: Criar a Skill do Hermes Agent para Redação

Com a lista pronta, o passo seguinte é automatizar a criação do conteúdo. O Hermes Agent permite definir skills personalizadas que orientam a inteligência artificial a agir conforme a tua voz de marca e estrutura pretendida.

Cria o ficheiro de skill no diretório do Hermes Agent: ~/.hermes/skills/newsletter-writer/SKILL.md.

---
name: newsletter-writer
description: Gera o rascunho de uma newsletter semanal em Markdown com base em tópicos fornecidos.
author: MarcTechJA
version: "1.0"
platforms:
  - macos
  - linux
  - windows
metadata:
  hermes:
    tags: [content, newsletter, ai]
---

# newsletter-writer
Esta skill analisa os temas do momento e escreve uma newsletter envolvente e pronta a enviar.

## When to Use
Utiliza esta skill quando precisares de gerar uma nova edição da newsletter semanal em formato Markdown.

## Instruções
1. Organiza os tópicos principais ou notas fornecidas pelo utilizador.
2. Estrutura o artigo com uma introdução cativante, 3 destaques principais e uma nota final de reflexão.
3. Mantém um tom profissional, acessível em português de Portugal e otimizado para leitura rápida.
4. Salva o resultado final no ficheiro `edicao_semanal.md`.

## Critérios de conclusão
- Ficheiro `edicao_semanal.md` gerado na raiz do projeto com o conteúdo estruturado da newsletter.

Para verificar as tuas skills disponíveis e executar o assistente, podes utilizar os comandos de linha de comandos do Hermes Agent:

# Listar todas as skills ativas
hermes skills list

# Iniciar o chat aplicando a skill de escrita da newsletter
hermes chat -s newsletter-writer

O que o código faz: A skill especifica o comportamento exigido ao agente, garantindo que o rascunho é criado com a estrutura certa e guardado diretamente no ficheiro edicao_semanal.md pronto a ser processado.

Passo 3: Envio Automatizado da Edição com Python

Assim que o Hermes Agent gerar o ficheiro edicao_semanal.md, podemos disparar o envio para todos os subscritores registados com um script Python rápido e simples.

import smtplib
import sqlite3
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(to_email, subject, body_text):
    sender_email = "geral@omeusite.pt"
    password = "a-tua-palavra-passe"
    
    msg = MIMEMultipart()
    msg['From'] = sender_email
    msg['To'] = to_email
    msg['Subject'] = subject
    msg.attach(MIMEText(body_text, 'plain', 'utf-8'))

    with smtplib.SMTP("smtp.gmail.com", 587) as server:
        server.starttls()
        server.login(sender_email, password)
        server.send_message(msg)

def dispatch_newsletter():
    try:
        with open("edicao_semanal.md", "r", encoding="utf-8") as f:
            content = f.read()
    except FileNotFoundError:
        print("Erro: O ficheiro edicao_semanal.md ainda não foi gerado.")
        return

    conn = sqlite3.connect("newsletter.db")
    cursor = conn.cursor()
    cursor.execute("SELECT email FROM subscribers WHERE status = 'active'")
    subscribers = cursor.fetchall()
    conn.close()

    for sub in subscribers:
        send_email(sub[0], "Edição Semanal: Novidades do Sector", content)
        print(f"Enviado com sucesso para: {sub[0]}")

if __name__ == "__main__":
    dispatch_newsletter()

O que o código faz: O script lê o conteúdo em Markdown gerado pelo Hermes Agent, conecta-se à base de dados SQLite para obter os subscritores ativos e envia a mensagem utilizando uma ligação SMTP segura.

Passo 4: Medir Resultados e Métricas da Lista

Automatizar a criação e o envio só faz sentido se conseguires acompanhar a evolução do teu projeto. Um script de análise de métricas simples ajuda a manter o controlo sobre a tua audiência.

import sqlite3

def generate_report():
    conn = sqlite3.connect("newsletter.db")
    cursor = conn.cursor()
    
    cursor.execute("SELECT COUNT(*) FROM subscribers WHERE status = 'active'")
    active_count = cursor.fetchone()[0]

    cursor.execute("SELECT COUNT(*) FROM subscribers WHERE status = 'unsubscribed'")
    unsub_count = cursor.fetchone()[0]
    
    conn.close()

    total = active_count + unsub_count
    retention_rate = (active_count / max(1, total)) * 100

    print("=== Relatório de Desempenho da Newsletter ===")
    print(f"Subscritores Ativos: {active_count}")
    print(f"Cancelamentos: {unsub_count}")
    print(f"Taxa de Retenção: {retention_rate:.1f}%")

if __name__ == "__main__":
    generate_report()

O que o código faz: Consulta a base de dados local para gerar um resumo claro da taxa de retenção e número total de leitores ativos na tua lista.

Conclusão

A combinação de scripts Python leves com a inteligência contextual do Hermes Agent permite a qualquer criador de conteúdo operar uma newsletter profissional sem perder horas em tarefas repetitivas. Aprendeste a estruturar a captação de dados, configurar skills personalizadas para a IA, automatizar disparos por email e monitorizar os resultados de forma prática.

Se pretendes aprofundar o teu conhecimento sobre automações avançadas, criação de equipas de agentes e integrações de sistema, consulta o Guia Completo do Hermes Agent para explorar todas as capacidades deste ecossistema open-source.

Comentários