# Um vídeo vertical, quarenta contas: como um agente distribui Reels e Shorts pelo Shager

_2026-09-15 · Guia prático para agentes que distribuem vídeo curto: checagem de formato, metadados de Reels e Shorts, legenda por conta, envio escalonado e chamadas MCP._

Um agente consegue distribuir um vídeo vertical curto para dezenas de contas do Instagram, do Facebook e do YouTube enviando o arquivo uma única vez com as dimensões e a duração, criando um só post que define o formato de cada rede e escrevendo uma legenda diferente para cada conta. O Shager valida o arquivo segundo as regras de cada rede antes de enviar qualquer coisa e depois dispara conta por conta, com uma pausa aleatória entre elas. O trabalho de verdade do agente está nos metadados, não no upload.

Essa última frase resume a lição. Uma distribuição de vídeo curto raramente falha por causa do vídeo em si. Ela falha porque o agente não sabe que o vídeo tem 3 minutos e 4 segundos, ou porque quarenta contas recebem exatamente a mesma legenda, palavra por palavra.

## O que o agente precisa saber sobre o arquivo antes do upload?

Três números: largura, altura e duração. As redes classificam e aceitam vídeos curtos com base neles, e um agente que chuta vai gerar posts que caem no formato errado ou são rejeitados.

A regra do YouTube é a mais fácil de explicar. Segundo a própria página de ajuda do Google sobre [Shorts de três minutos](https://support.google.com/youtube/answer/15424877?hl=en), vídeos enviados desde 15 de outubro de 2024 com proporção quadrada ou vertical e duração de até três minutos são classificados como Shorts. Um vídeo de 3:04 em 9:16, portanto, é um vídeo comum, não um Short, não importa a intenção do agente.

O Instagram é mais flexível com a proporção, mas tem as suas preferências. A [documentação de publicação de conteúdo](https://developers.facebook.com/docs/instagram-platform/content-publishing) da Meta para a Instagram Platform lista os contêineres e codecs aceitos para Reels e recomenda 9:16 para evitar cortes ou faixas vazias. O vídeo precisa estar em uma URL acessível publicamente no momento da publicação, porque é a Meta que vai buscá-lo.

É por isso que o `upload_media_from_url` do Shager aceita os campos opcionais `width`, `height` e `duration_ms`. Se você os informar, a validação de Reels, Shorts e stories acontece no upload e de novo antes do agendamento, em vez de aparecer como um post com falha na conta número 23.

Se o agente não tiver esses números, deve obtê-los antes do upload. No Claude Code ou no Codex, basta uma chamada ao `ffprobe`:

```bash
ffprobe -v error -select_streams v:0 \
  -show_entries stream=width,height:format=duration \
  -of json launch-teaser.mp4
```

## A sequência de chamadas MCP

Esta é a sequência que um agente executa para um cliente com 38 contas conectadas, usando o servidor MCP do Shager em `https://app.shager.ai/api/mcp`. Os nomes das ferramentas são os reais; os IDs são fictícios.

1. `whoami` para confirmar a qual organização a chave pertence e se ela pode publicar.
2. `list_workspaces` para encontrar o espaço de trabalho do cliente.
3. `list_channels` desse espaço de trabalho, para ver redes, status e formatos suportados.
4. `list_groups` para encontrar o grupo que reúne as contas desta campanha.
5. `upload_media_from_url` com as dimensões e a duração.
6. `create_post` como rascunho, com legendas por conta e formato por rede.
7. `request_approval` se o cliente aprova os vídeos, ou `schedule_post` se não aprova.
8. `get_post` depois do horário agendado, para conferir o estado de cada conta.

A chamada de upload:

```json
{
  "tool": "upload_media_from_url",
  "arguments": {
    "workspace_id": "ws_example",
    "url": "https://cdn.example-agency.com/clients/aurora/launch-teaser.mp4",
    "file_name": "launch-teaser.mp4",
    "width": 1080,
    "height": 1920,
    "duration_ms": 42000
  }
}
```

O post em rascunho. Repare que o `format` é definido por canal, porque o mesmo arquivo é um `REEL` no Instagram e no Facebook e um `SHORT` no YouTube:

```json
{
  "tool": "create_post",
  "arguments": {
    "workspace_id": "ws_example",
    "caption": "Aurora opens its new showroom on Thursday. 42 seconds inside.",
    "media_ids": ["med_teaser"],
    "youtube_title": "Inside the new Aurora showroom",
    "youtube_privacy": "public",
    "cta_url": "https://aurora-example.com/showroom",
    "campaign": "showroom-launch",
    "label": "Showroom teaser, week 38",
    "per_channel": [
      { "channel_id": "ch_ig_downtown", "format": "REEL",
        "caption": "Downtown team here. Thursday we open the doors, and this is what you'll see first." },
      { "channel_id": "ch_fb_northside", "format": "REEL",
        "caption": "Northside customers asked for a showroom. Here's a 42 second look before Thursday." },
      { "channel_id": "ch_yt_main", "format": "SHORT",
        "caption": "A first look at the new Aurora showroom, opening Thursday." }
    ],
    "stagger_seconds": [45, 120]
  }
}
```

Em uma execução real, o `per_channel` tem uma entrada para cada conta, não só três. Quem escreve é o agente; não deveria ser uma pessoa.

## Por que cada conta precisa da sua própria legenda?

Porque quarenta páginas publicando o mesmo texto em menos de uma hora é justamente o padrão que os sistemas antispam foram feitos para detectar, e porque a leitura fica ruim para quem segue duas dessas páginas. O próprio [auth.md](/auth.md) do Shager orienta os agentes, com todas as letras, a variar as legendas de cada conta pelo `per_channel`.

Variar bem não é trocar palavras por sinônimos. O agente deve ancorar cada legenda em algo verdadeiro sobre aquela conta: a localização, a equipe, o público. Explicamos o método em detalhes em [variação de legenda por conta com IA](/en/blog/caption-variation-per-account-with-ai), incluindo como manter a voz da marca estável enquanto o texto muda.

No caso do vídeo curto, mantenha as legendas curtas. A mensagem está no vídeo. Uma legenda que repete a narração desperdiça o espaço.

## Onde fica o link no vídeo curto?

É aqui que os agentes mais erram, porque aplicam uma única regra a todas as redes.

No YouTube, o Google afirma na central de ajuda que [URLs nos comentários e nas descrições de Shorts não são clicáveis](https://support.google.com/youtube/answer/13748639), para reduzir o spam. Um link de captação no primeiro comentário de um Short é texto, não link. No Instagram, URLs em legendas e comentários também não viram links. Os posts de páginas do Facebook são onde um link no primeiro comentário se comporta como as pessoas esperam.

Então, numa distribuição de vídeo curto, o agente deve definir o `first_comment` por canal só onde ele for útil, e deixá-lo vazio nos Shorts. O Shager continua gerando um link curto rastreável por conta a partir do `cta_url`, e assim os dados de cliques continuam separados por conta onde quer que o link apareça. O passo a passo completo está em [links de captação no primeiro comentário com agentes](/en/blog/first-comment-lead-links-with-agents).

## Ritmo: o que o stagger_seconds realmente faz

O `stagger_seconds` é uma pausa aleatória, em segundos, entre contas da mesma rede. O padrão é `[30, 90]`. Com 38 contas divididas entre três redes, a fila de cada rede anda de forma independente: as contas do Instagram são espaçadas entre si, e os canais do YouTube entre si.

Para vídeo, eu costumo aumentar o intervalo. Uma execução de 38 contas com `[45, 120]` demora mais para terminar, mas os posts se espalham por um período que parece gente publicando, não um script. Se o cliente faz questão de que tudo esteja no ar antes de um horário específico, o agente deve agendar mais cedo em vez de apertar o escalonamento. Falamos mais sobre horários em [estratégia de agendamento para agentes](/en/blog/scheduling-strategy-for-agents).

## Conferindo o resultado

Depois do horário agendado, o agente chama `get_post`. A resposta traz o estado geral do post e o estado de cada conta: horário de publicação, URL no ar ou o erro. Os status de post incluem `PUBLISHED`, `PARTIALLY_PUBLISHED` e `FAILED`, entre outros listados no [documento OpenAPI](https://app.shager.ai/api/v1/openapi.json).

Um resultado `PARTIALLY_PUBLISHED` é normal em escala. O token de uma conta expirou; uma página perdeu uma permissão. O papel do agente é informar essas contas pelo nome à pessoa responsável, não ficar tentando de novo às cegas. Muitas vezes, a solução é um novo link de conexão do cliente só para aquela conta.

## Uma versão REST para scripts

Se o pipeline roda a partir de um script, e não de um agente em chat, os mesmos dois passos via REST ficam assim:

```bash
curl -s https://app.shager.ai/api/v1/workspaces/ws_example/media \
  -H "Authorization: Bearer $SHAGER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example-agency.com/clients/aurora/launch-teaser.mp4",
       "file_name":"launch-teaser.mp4","width":1080,"height":1920,"duration_ms":42000}'

curl -s https://app.shager.ai/api/v1/workspaces/ws_example/posts \
  -H "Authorization: Bearer $SHAGER_API_KEY" \
  -H "Content-Type: application/json" \
  -d @teaser-post.json
```

As respostas voltam como `{ "data": ... }`, e os erros como `{ "error": { "code", "message" } }`. O limite é de 120 requisições por minuto por chave, e uma execução de um único vídeo nunca chega perto disso.

## Perguntas frequentes

### O agente pode publicar um vídeo horizontal como Short?

Não. O YouTube classifica os Shorts pela proporção e pela duração, então um vídeo horizontal sobe como vídeo comum, seja qual for o `format` que você pedir. Peça ao editor uma versão vertical, ou publique a versão horizontal com o `format` definido como `VIDEO` no YouTube e deixe os Reels para a vertical.

### O mesmo vídeo deve ir para todas as contas no mesmo dia?

Pode ir, com legendas variadas e um escalonamento amplo. Em grupos grandes, muitas agências dividem a execução em dois ou três dias, para que o público de cada conta não veja o mesmo vídeo compartilhado por uma página vizinha no mesmo horário. O agente pode fazer isso criando posts separados por grupo, com valores diferentes de `schedule_at`.

### O que acontece se uma conta rejeitar o vídeo?

O Shager verifica cada conta segundo as regras da sua rede antes de enviar, então a maioria dos problemas aparece já no agendamento, com um motivo claro. Se algo ainda falhar na hora da publicação, o `get_post` mostra qual conta falhou e por quê, e o resto da execução não é afetado.

## Para onde ir agora

Se o seu agente ainda não está conectado, comece pela [porta de entrada para agentes](/en/agents), que cobre o servidor MCP, a API REST e o autocadastro. Depois, distribua um vídeo curto para um grupo pequeno antes de apontá-lo para a lista inteira de clientes.

---
Source: https://shager.ai/pt/blog/agent-short-video-distribution
