Manter presença ativa em nove redes sociais ao mesmo tempo é trabalho de tempo integral se for feito à mão — alguém escrevendo, adaptando o mesmo texto por plataforma, gerando imagem, revisando tom e lembrando do horário certo de publicar. O Marketing Automation, sistema que construí e uso, faz a parte pesada: gera copy com IA, gera imagem com IA, e só libera para o agendamento depois que um humano aprova cada peça. Roda para mais de um negócio ao mesmo tempo, com as tarefas pesadas numa fila — Celery e Redis — para a interface não travar enquanto o modelo trabalha.

A diferença entre automatizar geração e automatizar publicação sem revisão é onde o humano fica no fluxo. Automatizar a primeira parte é seguro; pular a segunda é assinar embaixo do que a IA escreveu sem ler. Dá para automatizar as nove plataformas sem perder controle sobre o que sai no seu nome? Dá — desde que a aprovação humana seja um passo do sistema, não algo que alguém faz quando lembra.

O que você precisa

  • Python 3.11+ e Node.js
  • Docker e Docker Compose
  • Chave de API da OpenAI (texto) e do Google AI Studio/Gemini (imagem) — ambas pagas
  • Redis local via Docker, sem custo
  • Conta em uma API de agendamento multi-rede (o Passo 5 explica por que não é mais o Buffer)
  • Familiaridade com FastAPI, Next.js e Celery
  • Tempo: mais de uma semana para a versão completa

Passo 1: suba a infraestrutura

Comece pela estrutura de pastas antes do código: frontend/ com o Next.js, backend/ com FastAPI, workers/ com as tarefas Celery, generators/ com a geração por plataforma, integrations/ com o agendamento. O docker-compose.yml sobe três serviços: Redis na porta 6379, backend na 8000, frontend na 3000.

docker compose up -d redis backend frontend

Resultado: três containers de pé, backend respondendo em localhost:8000.

LEIA TAMBÉM · ExplicaçãoO que separa um protótipo de IA de um sistema em produção são três peças baratasMostrar IA funcionando uma vez é fácil. O difícil é deixar rodando todo dia sem ninguém olhando. Três peças simples — Docker para empacotar, healthcheck para vigiar, agendador para disparar — fazem quase todo o trabalho.

Passo 2: construa o motor de geração por plataforma

Cada rede social tem regras próprias — tamanho de texto, tom, uso de hashtag, formato de imagem. Um post que funciona no Instagram (casual, visual, hashtag esperada) soa fora de lugar no LinkedIn (profissional, sem excesso de hashtag). Configure isso antes de gerar qualquer coisa:

PLATFORM_CONFIGS = {
    "instagram": {"max_length": 2200, "tone": "casual e visual", "hashtags": True},
    "linkedin": {"max_length": 3000, "tone": "profissional", "hashtags": False},
}

O texto vem de uma chamada ao GPT-4o (client.chat.completions.create(model="gpt-4o", messages=[...])) recebendo o tema e a config da plataforma. A imagem vem do Gemini — gere uma imagem-base por tema e adapte o formato para cada rede, em vez de gerar do zero para cada uma. Resultado: um tema vira rascunho de texto e imagem por plataforma.

Passo 3: gere em paralelo com Celery

Esperar nove chamadas de IA em sequência, uma por plataforma, é lento o bastante para alguém desistir de usar o sistema. Cada plataforma vira uma tarefa Celery disparada junto com as outras:

from celery import Celery

app = Celery("social", broker="redis://localhost:6379/0", backend="redis://localhost:6379/0")

@app.task
def gerar_post(tema: str, plataforma: str):
    config = PLATFORM_CONFIGS[plataforma]
    return {"plataforma": plataforma, "conteudo": "..."}

Disparar as nove: gerar_post.delay(tema, plataforma) para cada plataforma da lista. Resultado: nove rascunhos chegam sem travar a API enquanto o modelo processa.

Passo 4: monte o dashboard de aprovação

Uma página em Next.js lista os rascunhos por tema, um card por plataforma — preview de texto e imagem, para aprovar, editar ou rejeitar. O card consulta GET /rascunhos/{tema_id}. Resultado: abrir o dashboard mostra os nove rascunhos lado a lado, prontos para uma decisão em minutos.

Passo 5: integre o agendamento de publicação

A Buffer parou de aceitar cadastro de desenvolvedor novo na Publish API em 2026, e a API legada desativa em 1º de fevereiro de 2027 — a peça de agendamento não pode depender dela num projeto novo. A Ayrshare cobre o mesmo caso de uso com SDK em Python:

from ayrshare import SocialPost

social = SocialPost("SUA_API_KEY")
social.post({
    "post": texto_aprovado,
    "platforms": ["twitter", "linkedin", "instagram"],
    "scheduleDate": "2026-09-10T15:00:00Z",
})

Só o texto aprovado no Passo 4 chega até aqui — o gerador nunca fala direto com a API de agendamento. Resultado: o post aparece agendado no painel da Ayrshare.

Passo 6: colete analytics e alimente o próximo ciclo

Métricas de engajamento — curtidas, cliques, alcance — vêm da API da própria rede ou da Ayrshare, vinculadas a tema e plataforma. Na prática, isso vira ajuste manual: quando um padrão de baixo engajamento se repete numa plataforma, você revisita o PLATFORM_CONFIGS daquela rede. Resultado: uma tabela ligando tema, plataforma e engajamento.

Passo 7: suba tudo em produção

O compose final reúne Redis, backend, frontend e o worker Celery, com depends_on correto entre eles. Chaves de API e string de conexão do Redis vão para um .env, nunca hardcoded no código.

docker compose up -d

Resultado: o pipeline completo rodando — um tema entra, nove rascunhos saem, a aprovação humana decide, a Ayrshare publica, o analytics realimenta o próximo ciclo.

LEIA TAMBÉM · Caso realO Marketing Automation gera para nove redes, e nada vai ao ar sem aprovaçãoUm programa escreve o texto e cria a imagem de um post, adapta tudo para nove redes sociais diferentes e deixa pronto numa tela. Uma pessoa olha, aprova, e só então o post entra no calendário.

O que pode dar errado

A Buffer sumir do seu roteiro no meio do projeto — por isso a decisão do Passo 5 já parte de Ayrshare, não de uma dependência sendo desativada.

Rate limit do provedor de IA quando as nove tarefas disparam juntas — coloque backoff nas tarefas Celery em vez de tentar tudo no mesmo segundo.

Conteúdo fugir do tom da marca — a aprovação humana do Passo 4 não é opcional, é o ponto do sistema inteiro.

Custo de imagem multiplicando por plataforma — uma imagem-base adaptada por formato, nunca uma geração nova por rede.

Próximos passos

Testar variações de tom por plataforma usando o próprio analytics do Passo 6. Trocar a Ayrshare pela API nativa de cada rede quando o volume justificar o trabalho extra. Fechar o loop ajustando PLATFORM_CONFIGS automaticamente a partir do engajamento, em vez de na mão.

A automação de conteúdo não substitui a aprovação humana — apenas automatiza a escrita da primeira versão.