🤖HermesBlog
Hermes Feature Guides · Parte 88/9/2026

Automate Anything with Cron

Automate Everything with Cron — easy-to-understand guide based on official docs

guide-automate-cron

Automatize Qualquer Coisa com Cron

Se você já leu nosso tutorial do bot de briefing diário, você já conhece o básico de cron jobs. Mas isso é só a ponta do iceberg. Hoje, vamos mais fundo — cinco padrões de automação do mundo real que você pode aproveitar e adaptar para seus próprios fluxos de trabalho.

Antes de mergulharmos, aqui está a regra de ouro: cron jobs rodam em sessões de agente novas, sem memória do seu chat atual. Seus prompts precisam ser completamente autossuficientes. Inclua tudo o que o agente precisa saber — comandos, contexto, expectativas. Pense nisso como escrever instruções para um estagiário muito inteligente que acabou de chegar.

Alternativas de Zero Tokens (Economize Suas Chamadas de LLM)

Nem toda automação precisa de um LLM. Duas opções permitem que você pule o custo de tokens completamente:

  • Watchdog recorrente — se o seu script já produz a mensagem exata (alertas de memória, avisos de disco, heartbeats), use cron jobs somente com script. Mesmo agendador, sem LLM. Basta pedir ao Hermes no chat — a ferramenta cronjob sabe quando escolher no_agent=True e escreve o script para você.
  • Disparo único a partir de um script em execução — para etapas de CI, hooks pós-commit ou scripts de deploy, use hermes send para enviar o stdout ou um arquivo direto para Telegram, Discord, Slack, etc. Nenhuma entrada de cron necessária.

Padrão 1: Monitor de Mudanças em Sites

Monitore uma URL e seja notificado apenas quando algo realmente mudar. A arma secreta aqui é o parâmetro script — um script Python roda antes de cada execução, e seu stdout vira contexto para o agente. O script cuida do trabalho mecânico (buscar, comparar); o agente cuida do raciocínio (essa mudança é interessante?).

Primeiro, crie o script de monitoramento:

mkdir -p ~/.hermes/scripts
import hashlib, json, os, urllib.request

URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-site-state.json")

# Fetch current content
req = urllib.request.Request(URL, headers={"User-Agent": "Hermes-Monitor/1.0"})
content = urllib.request.urlopen(req, timeout=30).read().decode()
current_hash = hashlib.sha256(content.encode()).hexdigest()

# Load previous state
prev_hash = None
if os.path.exists(STATE_FILE):
    with open(STATE_FILE) as f:
        prev_hash = json.load(f).get("hash")

# Save current state
with open(STATE_FILE, "w") as f:
    json.dump({"hash": current_hash, "url": URL}, f)

# Output for the agent
if prev_hash and prev_hash != current_hash:
    print(f"CHANGE DETECTED on {URL}")
    print(f"Previous hash: {prev_hash}")
    print(f"Current hash: {current_hash}")
    print(f"\nCurrent content (first 2000 chars):\n{content[:2000]}")
else:
    print("NO_CHANGE")

Agora configure o cron job:

/cron add "every 1h" "If the script output says CHANGE DETECTED, summarize what changed on the page and why it might matter. If it says NO_CHANGE, respond with just [SILENT]." --script ~/.hermes/scripts/watch-site.py --name "Pricing monitor" --deliver telegram

O truque do [SILENT]: Para jobs de monitoramento, diga ao agente para responder apenas com [SILENT] quando nada mudou. A entrega do cron trata isso como o marcador de silêncio — você só é notificado quando algo realmente acontece. Nada de spam durante as horas tranquilas.


Padrão 2: Relatório Semanal

Compile informações de múltiplas fontes em um resumo formatado. Isso roda uma vez por semana e entrega no seu canal principal.

/cron add "0 9 * * 1" "Generate a weekly report covering:

1. Search the web for the top 5 AI news stories from the past week
2. Search GitHub for trending repositories in the 'machine-learning' topic
3. Check Hacker News for the most discussed AI/ML posts

Format as a clean summary with sections for each source. Include links.
Keep it under 500 words — highlight only what matters." --name "Weekly AI digest" --deliver telegram

Pela CLI:

hermes cron create "0 9 * * 1" \
  "Generate a weekly report covering the top AI news, trending ML GitHub repos, and most-discussed HN posts. Format with sections, include links, keep under 500 words." \
  --name "Weekly AI digest" \
  --deliver telegram

O 0 9 * * 1 é uma expressão cron padrão: 9h00 toda segunda-feira.


Padrão 3: Observador de Repositórios GitHub

Monitore um repositório em busca de novas issues, PRs ou releases.

/cron add "every 6h" "Check the GitHub repository NousResearch/hermes-agent for:
- New issues opened in the last 6 hours
- New PRs opened or merged in the last 6 hours
- Any new releases

Use the terminal to run gh commands:
  gh issue list --repo NousResearch/hermes-agent --state open --json number,title,author,createdAt --limit 10
  gh pr list --repo NousResearch/hermes-agent --state all --json number,title,author,createdAt,mergedAt --limit 10

Filter to only items from the last 6 hours. If nothing new, respond with [SILENT].
Otherwise, provide a concise summary of the activity." --name "Repo watcher" --deliver discord

Prompts autossuficientes são importantes. Note como o prompt inclui os comandos gh exatos. O agente do cron não tem histórico de conversa de execuções anteriores — especifique tudo. (A memória persistente é carregada, então preferências duráveis salvas no MEMORY.md são mantidas, mas não confie nela para detalhes críticos do job.)


Padrão 4: Pipeline de Coleta de Dados

Raspe dados em intervalos regulares, salve em arquivos e detecte tendências ao longo do tempo. Este padrão combina um script (para coleta) com o agente (para análise).

import json, os, urllib.request
from datetime import datetime

DATA_DIR = os.path.expanduser("~/.hermes/data/prices")
os.makedirs(DATA_DIR, exist_ok=True)

# Fetch current data (example: crypto prices)
url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=usd"
data = json.loads(urllib.request.urlopen(url, timeout=30).read())

# Append to history file
entry = {"timestamp": datetime.now().isoformat(), "prices": data}
history_file = os.path.join(DATA_DIR, "history.jsonl")
with open(history_file, "a") as f:
    f.write(json.dumps(entry) + "\n")

# Output for the agent
print(f"Collected prices at {entry['timestamp']}: {data}")

Em seguida, configure um cron job que roda o script e pede ao agente para analisar os dados coletados:

/cron add "every 30m" "Run the collection script, then analyze the price history in ~/.hermes/data/prices/history.jsonl. If you notice a significant trend (more than 5% change in the last hour), summarize it. Otherwise respond with [SILENT]." --script ~/.hermes/scripts/collect-prices.py --name "Price tracker" --deliver telegram

Padrão 5: A Abordagem “Só Pergunte”

Não quer escrever scripts ou lembrar da sintaxe do cron? Basta descrever o que você quer em português simples:

/cron add "every 2h" "Check if there are any new articles about AI regulation on Google News. If there are, summarize the top 3. If nothing new, respond with [SILENT]." --name "AI regulation watch" --deliver telegram

O agente descobre o resto — pesquisando na web, filtrando resultados e formatando a saída.


Concluindo

Esses cinco padrões cobrem os cenários de automação mais comuns: monitoramento, relatórios, observação de repositórios, coleta de dados e jobs simples de “só perguntar”. Os principais aprendizados:

  1. Scripts cuidam do trabalho mecânico — buscar, comparar, coletar
  2. Agentes cuidam do raciocínio — isso é interessante? o que mudou? por que importa?
  3. [SILENT] mantém você livre de spam — só é notificado quando algo realmente importa
  4. Prompts autossuficientes são inegociáveis — o agente começa do zero toda vez

Para a referência completa dos recursos, confira a documentação de Tarefas Agendadas (Cron). Boas automações!

📖 Documentação oficial

この記事は Hermes Agent のDocumentação oficialに基づいています:Documentação oficial › guides/automate-with-cron