césar machado blog
receber análises
Infra

Como automatizei 11 posts por dia no blog sem publicar por engano

Eu construí um sistema que gera 11 rascunhos de posts por dia, distribui em horários estratégicos e publica automaticamente. O caminho até aqui teve mais erros do que acertos.

2026-06-094 min de leituraCésar Machado
Tela de computador com conteúdo sendo publicado automaticamente

Em resumo

  • O blog engine gera posts em JSON, valida automaticamente e distribui em horários planejados entre 06h e 18h.
  • Cada post passa por validação de SEO (título, descrição, slug, corpo mínimo) antes de ser considerado rascunho.
  • O sistema roda no VPS com Caddy servindo o site estático e Python processando os templates.
  • O maior erro foi publicar um post sem validação — agora o workflow bloqueia publicação sem aprovação.

O problema que me fez construir isso

Eu mantenho o cesarmachado.com como um blog de bastidores. Posts sobre IA, infraestrutura, ferramentas, erros e acertos. O problema é que escrever 11 posts por dia, todos em primeira pessoa, com tom de backstage, SEO validado, imagens e horários distribuídos — isso é trabalho de editoria, não de escrita.

A solução era automação. Mas automação de conteúdo tem um risco sério: publicar por engano. Um post com título errado, imagem quebrada, ou pior — informação inventada — sai do ar e volta como vergonha pública.

Então eu precisava de um sistema que gerasse rascunhos automaticamente, mas que tivesse gates de validação antes de qualquer coisa ir para o ar.

Como o blog engine funciona

O sistema tem quatro camadas:

1. Geração. Um cron job do Hermes roda todo dia e gera o prompt diário — 11 posts distribuídos em lanes editoriais diferentes. Cada lane tem regras específicas: notícias precisam de fontes, comparativos precisam de dados reais, backstage precisa de experiência própria.

2. Validação. Cada post gerado em JSON passa por um validador Python que verifica: título entre 35-75 caracteres, descrição entre 110-170 caracteres, slug válido, corpo com mínimo de 650 palavras, tags presentes, imagem com alt text. Se qualquer gate falha, o post não avança.

3. Distribuição de horários. Os 11 posts são distribuídos entre 06:00 e 18:00 no horário de Brasília, com intervalos de 70 minutos. Um script Python lê os JSONs na ordem editorial e atribui slots de publicação.

4. Publicação. Somente posts aprovados são publicados. O renderer converte JSON para HTML, coloca no diretório do Caddy e atualiza o sitemap. Posts em rascunho ficam no drafts até alguém (ou uma regra explícita) aprovar.

A stack técnica

  • VPS: Ubuntu, 4GB RAM, onde já rodo Caddy, n8n e outros serviços.
  • Caddy: Servidor web que serve o site estático. Configurado com try_files para não confundir rotas antigas com novas.
  • Python: Scripts de geração de prompt, validação, renderização e publicação.
  • Hermes: O agente que pesquisa temas, escreve posts e orquestra o fluxo.
  • JSON: Cada post é um arquivo JSON estruturado com título, descrição, slug, corpo em markdown, FAQ, CTA e metadados de imagem.

Os erros que tive pelo caminho

Erro 1: Publicar sem validação. No início, eu não tinha o gate de validação. Um post com título de 20 caracteres foi publicado. Outro sem imagem alt. Agora o sistema bloqueia qualquer publicação sem passar pelo validador.

Erro 2: Horários todos iguais. Eu esqueci de implementar a distribuição de horários e todos os 11 posts foram programados para 06:00. O resultado foi um flood de conteúdo no feed. Agora o script de distribuição é obrigatório.

Erro 3: Imagem quebrada. Um post referenciava uma imagem externa que saiu do ar. Agora todas as imagens são baixadas, convertidas para WebP e salvas localmente. Se não encontro uma imagem segura, gero uma arte editorial como fallback.

Erro 4: Slug duplicado. Dois posts com slugs parecidos quebraram o sitemap. Agora o validador verifica unicidade de slug antes de aprovar.

O que funciona bem hoje

Depois de uns 20 ciclos de correção, o sistema está estável. Todo dia, 11 rascunhos são gerados, validados e distribuídos em horários estratégicos. A qualidade dos posts depende da qualidade da pesquisa — e é por isso que o Hermes faz buscas reais na web antes de escrever.

O próximo passo é automatizar a publicação dos posts aprovados. Hoje, eu reviso cada um manualmente antes de aprovar. A meta é ter gates de qualidade tão bons que a aprovação possa ser automática para posts que passam em todos os checks.

O que aprendi sobre automacao de conteudo

A licao mais importante depois de meses operando esse sistema e: automação de conteúdo não elimina trabalho editorial — ela muda o tipo de trabalho. Em vez de escrever cada post do zero, eu foco em validar a pesquisa, verificar fontes e garantir que o tom está correto.

Isso é mais sustentável do que escrever 11 posts manualmente por dia, mas não é passivo. O sistema precisa de supervisão humana constante. Um post sobre uma notícia que mudou de ultima hora, um comparativo com dados desatualizados, um tom que ficou artificial — tudo isso precisa de um humano verificando antes de ir para o ar.

A boa notícia é que o sistema filtra a maioria dos problemas automaticamente. Titulos muito curtos, descrições sem sentido, slugs duplicados, imagens quebradas — tudo isso é pego pelo validador antes de chegar em mim. O que sobra para verificação humana é o conteúdo de verdade: a pesquisa está certa? A fonte é confiável? O tom está natural? Isso e o tipo de trabalho que eu quero fazer — não copiar dados de um sistema para outro.

O proximo passo e automatizar a publicação dos posts aprovados. Hoje, eu reviso cada um manualmente antes de aprovar. A meta é ter gates de qualidade tao bons que a aprovação possa ser automática para posts que passam em todos os checks.

Perguntas que eu faria antes de marcar uma call

O blog engine funciona para qualquer blog?

A estrutura sim. Os scripts são específicos para o cesarmachado.com, mas o padrão — JSON + validador + renderer + servidor estático — é genérico o suficiente para adaptar.

Precisa de servidor próprio para rodar isso?

Não necessariamente. Pode rodar com GitHub Pages, Netlify ou qualquer hosting estático. O VPS é porque eu já tinha um rodando outros serviços.

Se quiser comparar isso com a sua operação

Se você quer montar um sistema de publicação automatizado para seu blog ou site de conteúdo, a gente pode desenhar a arquitetura em uma call. É mais simples do que parece quando você tem as peças certas.

Entrar na lista · ver como eu penso