Pular para conteúdo
Intermediário Cap. 7 de 10 13 min de leitura

Rotinas e Cron com OpenClaw: Automação Agendada em PT-BR

Configure tarefas agendadas no OpenClaw com cron expressions. Exemplos práticos: lembretes de DAS, relatórios semanais e follow-up automático.

Tem uma categoria de problema que nenhum empresário deveria ter: pagar multa por esquecer de pagar o DAS. O boleto estava na gaveta, o prazo era dia 20, você estava ocupado, e pronto — R$ 50 de multa e mais uns trocos de juros que somam em nada mas irritam demais.

Esse problema específico é resolvido com 3 linhas de configuração. Este capítulo explica como.

O Que é Uma Expressão Cron

Cron é um sistema de agendamento originário do Unix. A ideia é simples: você descreve quando quer que algo aconteça usando uma sintaxe compacta de 5 campos, e o sistema executa naquele horário.

A estrutura de uma expressão cron:

┌───── minuto (0-59)
│ ┌─────── hora (0-23)
│ │ ┌──────── dia do mês (1-31)
│ │ │ ┌──────── mês (1-12)
│ │ │ │ ┌──────── dia da semana (0-7, sendo 0 e 7 = domingo)
│ │ │ │ │
* * * * *

O caractere * significa “qualquer valor” — ou seja, “sempre”. Combinando valores e asteriscos, você descreve qualquer padrão de agendamento imaginável.

Exemplos para fixar o conceito:

ExpressãoLeitura em PT-BR
0 9 * * 1-5Todo dia útil às 9h
0 8 20 * *Todo dia 20 de cada mês às 8h
0 9 * * 1Toda segunda-feira às 9h
0 0 1 * *Primeiro dia de cada mês à meia-noite
30 18 * * 5Toda sexta-feira às 18h30
0 */2 * * *A cada 2 horas
0 8 15,20 * *Dia 15 e dia 20 de cada mês às 8h

Não precisa memorizar. Existe um site chamado crontab.guru que traduz qualquer expressão para linguagem humana em tempo real — útil quando você não tem certeza se escreveu certo.

O Horário É UTC por Padrão — Ajuste para BRT

Este é o erro mais comum com cron em produção no Brasil. Servidores VPS geralmente rodam em UTC (horário de Greenwich). O Brasil usa BRT (Brasília Time), que é UTC-3.

Se você quer um lembrete às 8h no horário de Brasília e não ajusta o fuso, o lembrete vai disparar às 11h. Em época de horário de verão (que o Brasil aboliu em 2019), esse ajuste é fixo.

Regra prática: sempre que escrever um cron para uso no Brasil, adicione 3 horas ao horário que você quer.

Quer lembrar às 8h BRT? A expressão cron usa 11:

0 11 20 * *   → dispara às 11h UTC = 8h BRT

No OpenClaw você não precisa calcular na mão: passe a flag --tz "America/Sao_Paulo" ao criar o job e escreva o horário direto em BRT. O ajuste de UTC explicado acima ajuda a entender o que acontece por baixo, mas --tz é a forma correta no dia a dia:

openclaw cron add \
  --name "Lembrete DAS" \
  --cron "0 8 15 * *" \      # dia 15, 8h — em BRT por causa do --tz
  --tz "America/Sao_Paulo"

O Caso do DAS para MEI

O DAS (Documento de Arrecadação do Simples) é o guia de pagamento mensal do MEI. Vence todo dia 20. O valor varia por categoria (R$ 75,90 para comércio/indústria, R$ 79,90 para serviços, R$ 83,90 para comércio + serviços em 2025 — confirme sempre no portal do empreendedor, pois o valor é reajustado).

Um lembrete automático 5 dias antes do vencimento — ou seja, dia 15 — resolve o problema de esquecimento:

0 11 15 * *

Isso dispara às 8h BRT no dia 15 de cada mês.

A mensagem pode ser simples:

Oi! Lembrete: o DAS do seu MEI vence no dia 20.

Acesse o portal para gerar o boleto:
https://www.gov.br/empresas-e-negocios/pt-br/empreendedor

Valor aproximado: R$ {{VALOR_DAS}}

Paga com antecedência para evitar multa.

Se o OpenClaw tem acesso ao valor do DAS (que você pode armazenar em uma variável de configuração do fluxo), injete dinamicamente. Se não, deixe o lembrete genérico — ainda é melhor do que nada.

Lembrete de Boleto Vencendo

Além do DAS, muitos MEIs têm outros boletos recorrentes: aluguel do ponto, mensalidade do contador, fornecedores. Um padrão genérico de lembrete de vencimento funciona assim:

  1. Você mantém uma lista de boletos com nome, valor e data de vencimento (pode ser uma planilha simples)
  2. Um cron roda todo dia às 8h: 0 11 * * *
  3. O fluxo lê a lista e filtra boletos que vencem nos próximos 3 dias
  4. Para cada um encontrado, envia uma mensagem de lembrete

O benefício desse padrão é que funciona para qualquer boleto, não só o DAS. Você alimenta a lista, o sistema cuida dos lembretes.

Relatório Semanal de Negócios

Toda segunda-feira às 9h, um resumo da semana anterior — quantos pedidos, receita total, produto mais vendido, ticket médio. Esse relatório você pode receber no WhatsApp ou por email.

Expressão cron: 0 12 * * 1 (segunda-feira às 9h BRT)

O fluxo:

  1. Calcula a janela de datas: segunda anterior até domingo
  2. Consulta os dados de pedidos/vendas no banco de dados ou planilha
  3. Calcula os totais e métricas
  4. Monta o resumo
  5. Envia para o WhatsApp do dono

Exemplo de mensagem de relatório semanal:

*Resumo da semana* ({{DATA_INI}} a {{DATA_FIM}})

📦 Pedidos: {{TOTAL_PEDIDOS}}
💰 Receita: R$ {{RECEITA_TOTAL}}
🏆 Mais vendido: {{PRODUTO_TOP}}
🎯 Ticket médio: R$ {{TICKET_MEDIO}}

{{MENSAGEM_COMPARATIVO}}

O campo {{MENSAGEM_COMPARATIVO}} pode ser simples: “Alta de 12% vs semana passada” ou “Queda de 5% vs semana passada” — calculado pelo fluxo com base nos dados históricos.

Follow-Up Automático Pós-Venda

Um cron que roda 3 dias após uma venda pode disparar uma mensagem de follow-up: “Como foi o produto? Ficou satisfeito?” Isso aumenta recompra e gera feedback real.

A lógica é um pouco diferente das rotinas fixas porque depende de quando a venda aconteceu, não de uma data do calendário. A abordagem mais simples:

  1. Quando uma venda é confirmada, registre a data em uma fila de follow-ups
  2. Um cron roda todo dia de manhã verificando quais follow-ups estão agendados para hoje
  3. Para cada item na fila com data_agendada = hoje, envia a mensagem e remove da fila

Expressão cron para o verificador diário: 0 11 * * * (8h BRT todo dia)

Para follow-ups de baixo volume, a memória vetorial com decaimento temporal (temporal_decay) é uma alternativa à fila em banco de dados: o agente recorda contatos recentes com peso maior e esquece os mais antigos naturalmente. Para volume alto ou garantias de entrega, o padrão com fila explícita é preferível.

Prevenindo Execuções Duplicadas

Cron jobs têm um problema clássico: se o job a cada minuto demora mais que o intervalo, dois disparos se sobrepõem; ou um job pode rodar duas vezes após um restart. Para mensagens, isso vira lembrete duplicado.

O OpenClaw já trata os casos comuns:

  1. maxConcurrentRuns: 1 — uma nova execução só começa quando a anterior termina; disparos sobrepostos são descartados (não enfileirados).
  2. Sessões isoladas (--session isolated) — cada execução roda numa sessão própria, com estado registrado pelo agendador em ~/.openclaw/cron/jobs-state.json.
  3. Jobs one-shot (--at) desativam sozinhos após rodar, sem repetir.

Para fluxos externos que você mesmo orquestra (fora do agendador do OpenClaw), aí sim vale uma tabela de idempotência própria. Dentro do OpenClaw, prefira maxConcurrentRuns e sessões isoladas — ninguém quer receber o lembrete do DAS três vezes na mesma manhã. Os 7 problemas mais comuns (e os fixes) estão em cron jobs: por que param de rodar.

Memória entre execuções

A v2026.3.22 mudou o timeout de sessão para 48 horas (era 10 minutos). Isso afeta cron jobs diretamente: se dois jobs disparam no mesmo dia, o agente pode “lembrar” da execução anterior sem precisar consultar banco — o contexto ainda está na sessão.

Adicionalmente, o OpenClaw agora salva notas automaticamente antes de compactar contexto (memory.auto_flush). Na prática, se um cron job acumula informação ao longo de várias execuções (ex: total de DAS pagos no trimestre), essa informação persiste no disco sem intervenção manual.

Monitorando Cron Jobs

Como você sabe se o cron rodou e funcionou? Sem monitoramento, é fé — e fé não é estratégia de operação.

O mínimo viável de monitoramento:

  1. Log de execução: registre início, fim e resultado (sucesso/erro) de cada execução
  2. Alerta de falha: se um job falhou, você recebe uma notificação (pode ser por WhatsApp mesmo)
  3. Alerta de ausência: se um job que deveria ter rodado às 8h não apareceu no log até as 9h, algo está errado

Para o alerta de ausência, uma técnica simples é o “dead man’s switch”: o job envia um ping para um endpoint de monitoramento ao finalizar com sucesso. Se o endpoint não receber o ping no prazo esperado, dispara alerta. Serviços como Healthchecks.io fazem exatamente isso, gratuitamente para uso básico.

Na Prática

Cenário: lembrete mensal de DAS para uma MEI de design, no horário certo e sem duplicar.

No OpenClaw, um cron job não é um pipeline de passos declarados — é um agente rodando um prompt no horário marcado. Você cria o job com openclaw cron add e descreve a tarefa no --message:

openclaw cron add \
  --name "Lembrete DAS" \
  --cron "0 8 15 * *" \           # dia 15, 8h BRT (por causa do --tz)
  --tz "America/Sao_Paulo" \
  --session isolated \            # sessão descartável, sem acúmulo
  --message "Envie ao dono um lembrete de que o DAS do MEI vence no dia 20. Inclua o link gov.br/empreendedor e peça para pagar antes para evitar multa." \
  --best-effort-deliver           # falha de entrega não marca o job como sucesso

A sessão isolada garante uma execução limpa por mês; o --best-effort-deliver separa “o job rodou” de “a mensagem chegou”, evitando a falha silenciosa mais comum em produção.

Se o valor do DAS ou o telefone do dono mudam, não edite o comando — coloque esses dados no AGENTS.md do workspace (ou numa skill), e o agente os usa ao compor a mensagem. O agente decide o conteúdo; o cron decide o quando.

Extensão: um segundo lembrete no dia 18 é outro openclaw cron add com --cron "0 8 18 * *". Para acompanhar e depurar os jobs, use openclaw cron list e openclaw cron runs --last 10 — o diagnóstico completo está em cron jobs: por que param de rodar.

Para fluxos mais complexos envolvendo o contexto completo de um negócio MEI, veja o capítulo seguinte sobre automação para negócios e MEI. Para templates prontos de mensagens de lembrete, consulte a biblioteca de templates.


Conteúdo original do OpenClaw Club Brasil, escrito para o mercado brasileiro. Referência oficial: documentação do OpenClaw.

Ainda não instalou o OpenClaw?

Um comando instala tudo. Funciona em Linux, macOS e VPS (Hostinger, DigitalOcean).

curl -fsSL https://openclaw.ai/install.sh | bash
Ver guia de instalação completo
Esc