Um worker TypeScript com fila no Supabase publica em Instagram e TikTok, mais Chatwoot para atendimento. A evolução do projeto de redes da INEMA.
# instalar e rodar o worker npm install npm run dev # produção com PM2 pm2 start "npx tsx src/workers/publish-worker.ts"
A versão 2026 abandona o Postiz e fala direto com as APIs oficiais. O Publisher é um worker que processa posts agendados de uma fila no Supabase; o Chatwoot adiciona uma camada de atendimento.
Worker em TypeScript (tsx) que roda a cada 1 minuto, lê a fila no Supabase e publica via Instagram Graph API e TikTok Content Posting API.
Posts ficam num banco Postgres com status; o worker pega os agendados e publica na hora certa.
Sistema 2: atendimento self-hosted via Docker, com HTTPS obrigatório (Caddy ou Nginx + Let's Encrypt).
Você cria um post agendado via API REST; ele entra na fila no Supabase; o worker o coleta e publica direto na rede pela API oficial.
Node.js 20+, uma conta Supabase para a fila e apps de desenvolvedor no Meta (Instagram) e TikTok. Para o Chatwoot, Docker e um domínio com HTTPS.
O worker usa tsx e TypeScript 5. Confira a versão.
# engines: node >=20 node --version
Crie o projeto e rode a migration de tabelas (fila de posts).
# migration
001_create_tables.sqlApp no Meta (Instagram Graph API) e no TikTok (Content Posting API), com os tokens no .env.
# .env SUPABASE_URL=... SUPABASE_SERVICE_ROLE_KEY=...
Instale, configure o Supabase e as redes, suba o worker e crie posts agendados pela API.
Baixe o repositório e instale as dependências do Publisher.
git clone https://github.com/inematds/redessociais2026.git cd redessociais2026 && npm install
Rode a migration das tabelas e preencha o .env com as credenciais do Supabase e das redes.
# aplicar a migration 001_create_tables.sql no Supabase # preencher .env (Supabase + Instagram + TikTok)
Em desenvolvimento, use o dev (watch). Em produção, rode com PM2.
npm run dev # desenvolvimento (watch) npx tsx src/workers/publish-worker.ts # direto pm2 start "npx tsx src/workers/publish-worker.ts" --name publisher
Envie um POST para /api/posts com legenda, hashtags, data, plataformas e mídia.
curl -X POST http://localhost:3000/api/posts \ -H "Content-Type: application/json" \ -d '{ "caption":"Meu post automático!", "hashtags":["tech","automacao"], "scheduled_at":"2026-03-15T10:00:00Z", "platform_ids":["uuid-instagram","uuid-tiktok"] }'
O sistema 2 sobe por Docker com HTTPS obrigatório.
cd chatwoot && cp .env.example .env ./setup.sh # acesse via seu domínio com HTTPS
A API REST cobre criação, consulta e listagem; o worker cuida da publicação no horário agendado.
POST /api/posts com scheduled_at define a hora exata da publicação no Instagram e TikTok.
A API permite checar o status de cada post (pendente, publicado, erro) sem entrar nas redes.
Endpoint para listar as plataformas conectadas e seus IDs, usados no platform_ids do post.
Centralize conversas das redes num inbox self-hosted, separado do Publisher.
Publisher e Chatwoot já funcionam. As fases refletem os publishers implementados e o que vem a seguir.