O que viraloop faz?
Analise qualquer site e gere um carrossel de 6 slides para TikTok/Instagram com coerência visual. Publica diretamente no seu feed (sem rascunhos) com música em alta automática. Ambas as APIs (Gemini + upload-post.com) têm planos gratuitos — não é necessário cartão de crédito para começar.
Filosofia: Loop Automático Diário
A chave para o crescimento é consistência + aprendizado. Esta skill foi projetada para ser executada todos os dias, de forma totalmente autônoma. O agente executa todo o pipeline sem pedir confirmação — desde a pesquisa até a publicação — e só notifica você no final com as URLs do TikTok e Instagram publicados.
- Poste 1 carrossel por dia - Consistência vence a viralidade
- Acompanhe tudo - Cada post gera dados
- Aprenda com os dados - Quais ganchos funcionam? Quais horários? Quais visuais?
- Itere e melhore - Cada carrossel é melhor que o anterior
Dia 1: Postar → Analisar → Aprender
Dia 2: Postar (melhorado) → Analisar → Aprender
Dia 3: Postar (melhor) → Analisar → Aprender
...
Dia 30: Você tem 30 pontos de dados e uma estratégia refinada
A skill mantém um learnings.json que acumula insights de todos os posts:
- Melhores ganchos com desempenho
- Horários ideais de postagem
- Estilos visuais que funcionam
- CTAs que convertem
Esta não é uma ferramenta de uso único. É um motor de crescimento.
Antes de Começar: Aquecimento da Conta
Se suas contas do TikTok ou Instagram são novas, não poste carrosséis no primeiro dia. Ambas as plataformas limitam o alcance de contas novas que começam a publicar conteúdo imediatamente.
TikTok (aquecimento de 7 a 14 dias)
- Passe de 30 a 60 minutos por dia usando o TikTok normalmente: role, curta (cerca de 1 em cada 10 vídeos), siga contas do seu nicho
- Espere até que sua página 'Para Você' seja dominada por conteúdo do seu nicho — isso significa que o algoritmo perfilou sua conta
- Só então comece a postar. Seus primeiros posts alcançarão o público certo em vez de serem enterrados
Instagram (aquecimento de 5 a 7 dias)
- Navegue pelos Reels e pela página Explorar diariamente, interaja com conteúdo do seu nicho
- Siga contas relevantes, curta e comente genuinamente
- Poste 2 a 3 stories antes do seu primeiro carrossel para sinalizar que a conta está ativa
Por que isso é importante
As plataformas sinalizam contas que passam de zero atividade para postagem automatizada. Uma conta aquecida tem 5 a 10 vezes mais alcance inicial do que uma fria. Esta etapa é chata, mas é a diferença entre 500 visualizações e 50.000 visualizações no seu primeiro carrossel.
Se suas contas já estão ativas e estabelecidas, pule esta etapa e vá direto para o Início Rápido.
Início Rápido
O agente deve executar o pipeline completo automaticamente. Não peça confirmação entre as etapas.
# 0. PRIMEIRO: Verifique análises de posts anteriores + aprenda
# (Pule isso apenas na primeira execução, quando ainda não houver posts)
UPLOADPOST_TOKEN="seu-token" bash {baseDir}/scripts/check-analytics.sh 7
node {baseDir}/scripts/learn-from-analytics.js
# 1. Pesquisa completa de negócios
node {baseDir}/scripts/analyze-web.js https://seu-site.com
# 2. Leia learnings.json e use os melhores ganchos/horários/estilos para este carrossel
# → Escolha um estilo de gancho de bestHooks (ou tente uma variação)
# → Use o horário de postagem recomendado
# → Aplique quaisquer insights das recomendações
# 3. Gere slides com coerência visual
GEMINI_API_KEY="sua-chave" bash {baseDir}/scripts/generate-slides.sh
# 4. Revise slides com visão → corrija automaticamente os quebrados
# O agente usa seu modelo de imagem para texto para verificar cada slide
# Se algum slide tiver problemas (texto cortado, má qualidade, ortografia errada):
# → Regere SOMENTE aquele slide automaticamente
# → Re-verifique até que todos os 6 slides passem
# 5. Publique no TikTok + Instagram
UPLOADPOST_TOKEN="seu-token" bash {baseDir}/scripts/publish-carousel.sh
O agente só notifica o usuário no final, com as URLs dos posts publicados no TikTok e Instagram. Todo o resto é executado de forma autônoma.
Como os Aprendizados Melhoram Cada Carrossel
O arquivo learnings.json fica mais inteligente a cada post. Antes de gerar os slides, o agente o lê e aplica:
- Melhores ganchos: Use estilos de gancho que tiveram mais visualizações. Tente variações dos vencedores.
- Melhores horários: Agende a publicação no horário que historicamente obtém mais alcance.
- Melhores dias: Prefira dias que tenham melhor desempenho.
- Baixo desempenho: Evite estilos de gancho que consistentemente têm desempenho inferior.
- Dicas de engajamento: Se o engajamento estiver baixo, use ganchos mais provocativos ou estilos visuais diferentes.
Isso significa que o carrossel nº 30 terá prompts dramaticamente melhores do que o carrossel nº 1.
Agenda de Execução do Agente: O agente não deve ser executado em um horário aleatório. Ele deve ler learnings.json, olhar para o array bestTimes e ajustar automaticamente seu próprio cron/agenda de automação para que a execução de amanhã ocorra exatamente no horário de publicação ideal.
Primeiras execuções (sem dados ainda): Nas primeiras vezes, não haverá dados de análise — tudo bem. O agente usa os ganchos padrão de analyze-web.js e as recomendações genéricas. Após 5 a 10 posts, learnings.json terá dados suficientes para começar a fazer recomendações significativas. Quanto mais você postar, mais inteligente ele fica.
Modelo de Imagem
Usa gemini-3.1-flash-image-preview para gerar slides.
- Script local:
{baseDir}/scripts/generate_image.py - Suporta imagem para imagem para coerência visual entre os slides
Etapa 1: Pesquisa Completa (analyze-web.js)
Realiza uma investigação COMPLETA do negócio:
1. Análise de Marca
- Nome da marca (do domínio ou título)
- Logotipo (URL ou SVG)
- Cores CSS (fundo, primária, links, títulos)
- Tipografia (fonte do corpo, fonte do título)
- Favicon
2. Análise de Conteúdo
- Manchete e slogan
- Todos os títulos (estrutura da página)
- Recursos/benefícios (título + descrição)
- Preços/planos
- Depoimentos
- Estatísticas/métricas
- CTAs
- Meta tags (título, descrição, og:image)
3. Páginas Internas
- Navega por preços, recursos, sobre, depoimentos
- Extrai conteúdo adicional de cada página
4. Detecção de Concorrentes
- Pesquisa por menções conhecidas de concorrentes no conteúdo
- Lista de 20+ concorrentes SaaS conhecidos (Buffer, Hootsuite, Later, etc.)
- Detecta seções "vs", "alternativa", "compare"
- Nenhuma pesquisa externa necessária - tudo a partir do próprio site
5. Contação de Histórias
- Detecta o tipo de negócio (SaaS, ecommerce, aplicativo)
- Detecta o nicho (social-media-tools, developer-tools, etc.)
- Gera ganchos com base nos pontos problemáticos do cliente
- Define pontos problemáticos a partir dos recursos
- Cria narrativa de transformação (antes → depois)
6. Contexto Visual
- Cores da marca em formato CSS
- Descrição das cores para prompts
- Tipografia para slides
- Temas de imagem com base no nicho
- Guia de estilo para coerência
Saída: /tmp/carousel/analysis.json
Etapa 2: Gerar Slides (generate-slides.sh)
Gera 6 slides com coerência visual usando imagem para imagem:
| Slide | Tipo | Conteúdo |
|---|---|---|
| 1 | GANCHO | Pergunta/problema que fisga. Estabelece TODO o estilo visual. |
| 2 | Problema | Agita a dor. "Você publica no TikTok... depois no Instagram..." |
| 3 | Agitação | Concorrência avançando. Urgência. |
| 4 | Solução | Apresenta o produto com sua proposta de valor. |
| 5 | Recurso | Benefício principal. |
| 6 | CTA | "Link na bio 👆" + chamada para ação. |
Coerência Visual
- O Slide 1 gera o estilo base (cores, tipografia, clima)
- Os Slides 2 a 6 usam imagem para imagem com o slide 1 como referência
- Mantém a mesma paleta de cores, fontes e estética
Prompts por Slide
Cada slide tem:
- Texto: A mensagem principal
- Cena: Descrição visual detalhada para o fundo
- Estilo: Baseado na análise da marca
Saída:
/tmp/carousel/slide-{1-6}.jpg/tmp/carousel/caption.txt
Etapa 3: Revisão com Visão (Autônoma)
Após gerar, o agente DEVE revisar cada slide usando seu modelo de visão/texto para imagem. Esta etapa é totalmente automática — não peça ao usuário para revisar.
Para cada slide, verifique:
- ✓ O texto está totalmente legível e correto
- ✓ Nenhuma palavra cortada nas bordas
- ✓ Nome do produto escrito corretamente
- ✓ Coerência visual entre todos os slides
- ✓ Nenhum texto nos 20% inferiores (área de controles do TikTok)
- ✓ Qualidade de imagem aceitável (não borrada ou distorcida)
Se algum slide falhar: Regere SOMENTE aquele slide específico automaticamente. Use a mesma imagem de entrada que foi usada quando foi gerado originalmente:
- Slide 1: nenhuma imagem de entrada (ele estabelece o estilo)
- Slides 2 a 6: sempre use
slide-1.jpgcomo--input-image(a referência original)
Re-verifique após regenerar. Repita até que todos os 6 slides passem. Não pergunte ao usuário — corrija automaticamente.
Formato da Imagem
- Resolução: 768x1376 (proporção vertical 9:16)
- Formato: JPG (o TikTok NÃO aceita PNG)
- Texto: Grande, em negrito, com sombra para legibilidade
- Fundo: Cena relevante para o negócio, não apenas cores sólidas
Etapa 4: Publicar no TikTok + Instagram (publish-carousel.sh)
Publica o carrossel diretamente no feed do TikTok e Instagram usando a API Upload-Post.
UPLOADPOST_TOKEN="seu-token" bash {baseDir}/scripts/publish-carousel.sh
Endpoint: POST /api/upload_photos
- Documentação: https://docs.upload-post.com/api/upload-photo
Parâmetros enviados:
platform[]=tiktok+platform[]=instagramauto_add_music=true- Adiciona música no TikTok automaticamentetiktok_title- Título curto (máx. 90 caracteres) + hashtagstitle- Legenda completa para o Instagramprivacy_level=PUBLIC_TO_EVERYONEmedia_type=IMAGE- Carrossel de fotos no Instagramasync_upload=true- Processar em segundo planophotos[]- Os 6 slides JPG
⚠️ IMPORTANTE Instagram: Após a publicação, o usuário deve ir ao Instagram e adicionar música viral manualmente:
- Abra o Instagram → Perfil → O post
- Editar → Adicionar música
- Pesquise por uma música em alta/viral
Saída: Salva request_id em post-info.json para rastreamento.
Etapa 5: Analisar Desempenho (check-analytics.sh)
Obtém análises do TikTok e Instagram para ver o que funciona.
UPLOADPOST_TOKEN="seu-token" bash {baseDir}/scripts/check-analytics.sh 7
Endpoints usados:
-
Análises do perfil:
GET /api/analytics/{user}?platforms=tiktok→ Seguidores, curtidas, comentários, compartilhamentos, impressões
-
Impressões totais:
GET /api/uploadposts/total-impressions/{user}?platform=tiktok&breakdown=true→ Total de visualizações por dia
-
Análises por post:
GET /api/uploadposts/post-analytics/{request_id}→ Visualizações, curtidas, comentários para o carrossel específico (TikTok + Instagram)
Documentação: https://docs.upload-post.com/api/get-analytics
Etapa 6: Aprender e Melhorar (learn-from-analytics.js)
Analisa dados e salva aprendizados para carrosséis futuros. Isso deve ser executado no INÍCIO de cada loop diário, não apenas no final.
node {baseDir}/scripts/learn-from-analytics.js
Gera/atualiza:
learnings.json- Base de conhecimento acumulada- Melhores ganchos (aqueles que geram mais visualizações)
- Horários e dias ideais de postagem
- Acompanhamento da taxa de engajamento
- Recomendações para o próximo carrossel
O agente deve ler learnings.json antes de gerar cada novo carrossel e usar os insights para escolher melhores ganchos, evitar estilos de baixo desempenho e agendar em horários ideais.
Loop Diário (Fluxo Completo)
Esta é a sequência exata que o agente executa todos os dias, de forma totalmente autônoma:
# ETAPA 0: Aprenda com posts anteriores (pule na primeira execução)
UPLOADPOST_TOKEN="..." UPLOADPOST_USER="meuusuario" bash {baseDir}/scripts/check-analytics.sh 7
node {baseDir}/scripts/learn-from-analytics.js
# → O agente lê learnings.json e escolhe o melhor estilo de gancho
# → CRÍTICO: O agente verifica bestTimes e agenda SUA PRÓXIMA EXECUÇÃO para aquela hora exata amanhã
# ETAPA 1: Pesquise o negócio
node {baseDir}/scripts/analyze-web.js https://meu-produto.com
# ETAPA 2: Gere slides (usando insights dos aprendizados)
GEMINI_API_KEY="..." bash {baseDir}/scripts/generate-slides.sh
# ETAPA 3: Revise com visão → corrija automaticamente slides quebrados
# O agente verifica cada slide, regenera qualquer um que falhe
# ETAPA 4: Publique
UPLOADPOST_TOKEN="..." UPLOADPOST_USER="meuusuario" bash {baseDir}/scripts/publish-carousel.sh
# → Notifique o usuário SOMENTE aqui, com as URLs do TikTok + Instagram
Arquivos
{baseDir}/
├── SKILL.md # Esta documentação
└── scripts/
├── analyze-web.js # Pesquisa completa de negócios
├── generate-slides.sh # Gere 6 slides com coerência
├── generate_image.py # Imagem flash Gemini 3.1
├── review-slides.js # Prepare slides para revisão
├── publish-carousel.sh # Publique via API Upload-Post
├── check-analytics.sh # Obtenha análises (TikTok + Instagram)
├── learn-from-analytics.js # Aprenda com os dados
└── search-competitors.js # Pesquisa externa opcional
Variáveis de Ambiente
| Variável | Descrição |
|---|---|
GEMINI_API_KEY | Chave da API Google para geração de imagens |
UPLOADPOST_TOKEN | Token Upload-Post para publicação e análises |
UPLOADPOST_USER | Nome de usuário Upload-Post (obrigatório) |
Exemplos de Ganchos por Nicho
| Nicho | Exemplo de Gancho |
|---|---|
| Ferramentas de Mídias Sociais | "Ainda postando nas redes sociais UMA POR UMA? 😩" |
| SaaS Geral | "Ainda fazendo isso MANUALMENTE?" |
| Ecommerce | "O produto que o TikTok não para de recomendar" |
| Aplicativo | "O aplicativo que queria ter descoberto antes" |
| Ferramentas para Desenvolvedores | "A API que vai mudar seu código" |
Por que Viraloop?
| Viraloop | Outras skills | |
|---|---|---|
| Publicação | Direto para o feed | Apenas rascunhos |
| Música | Música em alta automática | Manual |
| Plataformas | TikTok + Instagram | Plataforma única |
| Pesquisa | Análise automática de URL | Descrição manual |
| Coerência de imagem | Referência imagem para imagem | Slides independentes |
| Geração de imagem | Gemini (nível gratuito) | Provedores pagos |
| Postagem | upload-post.com (gratuito, sem CC) | Pago ou auto-hospedado |
| Sobreposição de texto | Nativo de IA (Gemini renderiza) | Scripts externos |
| Prompts | Modelos estruturados | Forma livre |
| Configuração | 3 variáveis de ambiente | Configuração complexa com várias ferramentas |
Notas
- A análise extrai concorrentes do próprio conteúdo do site (20+ SaaS conhecidos)
- Imagem para imagem mantém a coerência, mas leva cerca de 20s
…
[truncado para tradução]