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