Skill de Geração de Vídeo Sora
Cria ou gerencia clipes de vídeo curtos para o projeto atual (demos de produto, spots de marketing, cenas cinematográficas, mockups de UI). Usa como padrão sora-2 e um fluxo estruturado de aumento de prompt, preferindo a CLI incluída para execuções determinísticas. Nota: $sora é uma tag de skill em prompts, não um comando shell.
Quando usar
- Gerar um novo clipe de vídeo a partir de um prompt
- Remixar um vídeo existente por ID
- Consultar status, listar jobs ou baixar assets (vídeo/thumbnail/spritesheet)
- Execuções em lote (muitos prompts ou variantes)
Árvore de decisão (criar vs remixar vs status/download vs lote)
- Se o usuário tem um video id e quer uma mudança → remix
- Se o usuário tem um video id e quer status ou assets → status/poll/download
- Se o usuário precisa de muitos prompts/assets → create-batch
- Se o usuário pede duas versões com uma pequena mudança (mesmo shot, assunto/detalhe diferente) → create a base, depois remix para a variação
- Caso contrário → create (ou create-and-poll se precisarem de um asset pronto em uma etapa)
Fluxo de trabalho
- Decide a intenção: criar vs remixar vs status/download vs lote.
- Colete inputs: prompt, modelo, tamanho, segundos e qualquer imagem de referência de entrada.
- Se lote: escreva um JSONL temporário sob tmp/ (um job por linha), execute uma vez, depois delete o JSONL.
- Prefira flags de aumento da CLI (
--use-case, --scene, --camera, etc.) em vez de pré-escrever um prompt estruturado. Se você já produziu um arquivo de prompt estruturado, passe --no-augment para evitar dupla encapsulação.
- Execute a CLI incluída (
scripts/sora.py) com padrões sensatos (veja references/cli.md). Para prompts longos, prefira --prompt-file para evitar problemas de escape de shell; combine com --no-augment se o prompt já estiver estruturado.
- Para jobs assíncronos, consulte até completar (ou use create-and-poll).
- Baixe assets (vídeo/thumbnail/spritesheet) e salve localmente.
- Remova arquivos intermediários criados durante a invocação (por exemplo
prompt.txt, remix_job.json, JSONL temporário). Se a sandbox bloquear rm, pule a limpeza ou truncate os arquivos sem exibir um erro.
- Itere com uma única mudança direcionada por prompt.
Autenticação
OPENAI_API_KEY deve estar definida para chamadas de API ativas.
Se a chave estiver faltando, forneça ao usuário estas etapas:
- Crie uma chave de API na UI da plataforma OpenAI: https://platform.openai.com/api-keys
- Defina
OPENAI_API_KEY como uma variável de ambiente no seu sistema.
- Ofereça orientação sobre como definir a variável de ambiente para seu SO/shell, se necessário.
- Nunca peça ao usuário para colar a chave completa no chat. Peça que a defina localmente e confirme quando estiver pronto.
Padrões e regras
- Modelo padrão:
sora-2 (use sora-2-pro para maior fidelidade).
- Tamanho padrão:
1280x720.
- Segundos padrão:
4 (permitidos: "4", "8", "12" como strings).
- Sempre defina tamanho e segundos via parâmetros de API; prosa não os mudará.
- Use o SDK Python da OpenAI (pacote
openai); não use HTTP bruto.
- Exija
OPENAI_API_KEY antes de qualquer chamada de API ativa.
- Se falhas de permissão de cache uv ocorrerem, defina
UV_CACHE_DIR=/tmp/uv-cache.
- Imagens de referência de entrada devem ser jpg/png/webp e devem corresponder ao tamanho alvo.
- Download URLs expiram após cerca de 1 hora; copie assets para seu próprio armazenamento.
- Prefira a CLI incluída e nunca modifique
scripts/sora.py a menos que o usuário solicite.
- Sora pode gerar áudio; se um usuário solicitar voiceover/áudio, especifique explicitamente nas linhas
Audio: e Dialogue: e mantenha curto.
Limitações de API
- Modelos limitados a
sora-2 e sora-2-pro.
- Acesso de API aos modelos Sora requer uma conta verificada pela organização.
- A duração é limitada a 4/8/12 segundos e deve ser definida via parâmetro
seconds.
- A API espera
seconds como enum de string ("4", "8", "12").
- Os tamanhos de saída são limitados pelo modelo (veja
references/video-api.md para tamanhos suportados).
- Criação de vídeo é assíncrona; você deve consultar para conclusão antes de baixar.
- Limites de taxa se aplicam por tier de uso (não liste limites específicos).
- Restrições de conteúdo são aplicadas pela API (veja Guardrails abaixo).
Guardrails (deve-se executar)
- Apenas conteúdo apropriado para públicos menores de 18 anos.
- Sem personagens com direitos autorais ou música com direitos autorais.
- Sem pessoas reais (incluindo figuras públicas).
- Imagens de entrada com rostos humanos são rejeitadas.
Aumento de prompt
Reformate prompts em uma spec estruturada e orientada para produção. Apenas torne explícitos os detalhes implícitos; não invente novos requisitos criativos.
Template (inclua apenas linhas relevantes):
Caso de uso: <onde o clipe será usado>
Solicitação principal: <prompt principal do usuário>
Cena/background: <local, hora do dia, atmosfera>
Assunto: <assunto principal>
Ação: <ação única e clara>
Câmera: <tipo de shot, ângulo, movimento>
Iluminação/humor: <iluminação + humor>
Paleta de cores: <3-5 âncoras de cor>
Estilo/formato: <dicas de filme/animação/formato>
Timing/beats: <contagens ou beats>
Áudio: <dica ambiental / música / voiceover se solicitado>
Texto (verbatim): "<texto exato>"
Diálogo:
<diálogo>
- Personagem: "Linha curta."
</diálogo>
Restrições: <deve manter/deve evitar>
Evitar: <restrições negativas>
Regras de aumento:
- Mantenha curto; adicione apenas detalhes que o usuário já implícita ou explicitamente forneceu em outro lugar.
- Para remixes, liste explicitamente invariantes ("mesmo shot, mude apenas X").
- Se algum detalhe crítico estiver faltando e bloquear o sucesso, faça uma pergunta; caso contrário, prossiga.
- Se você passar um arquivo de prompt estruturado para a CLI, adicione
--no-augment para evitar que a ferramenta o re-encapsule.
Exemplos
Exemplo de geração (single shot)
Caso de uso: teaser de produto
Solicitação principal: um close-up de uma câmera preta fosca em um pedestal
Ação: órbita lenta de 30 graus em 4 segundos
Câmera: 85mm, profundidade de campo rasa, drift handheld sutil
Iluminação/humor: soft key light, rim sutil, sensação premium de estúdio
Restrições: sem logos, sem texto
Exemplo de remix (invariantes)
Solicitação principal: mesmo shot e framing, trocar paleta para azul-petróleo/areia/ferrugem com contraluz mais quente
Restrições: manter o assunto e movimento de câmera inalterados
Melhores práticas de prompt (lista curta)
- Uma ação principal + um movimento de câmera por shot.
- Use contagens ou beats para timing ("dois passos, pausa, vira").
- Mantenha texto curto e câmera travada para UI ou texto na tela.
- Adicione uma linha breve de evitar quando artefatos aparecem (flicker, jitter, movimento rápido).
- Prompts mais curtos são mais criativos; prompts mais longos são mais controlados.
- Coloque diálogo em um bloco dedicado; mantenha linhas curtas para clipes de 4-8s.
- Declare invariantes explicitamente para remixes (mesmo shot, mesmo movimento de câmera).
- Itere com follow-ups de mudança única para preservar continuidade.
Orientação por tipo de asset
Use estes módulos quando a solicitação for para um artefato específico. Eles fornecem templates direcionados e padrões.
- Shots cinematográficos:
references/cinematic-shots.md
- Anúncios sociais:
references/social-ads.md
Notas de CLI e ambiente
- Comandos de CLI + exemplos:
references/cli.md
- Referência rápida de parâmetros de API:
references/video-api.md
- Orientação de prompt:
references/prompting.md
- Prompts de exemplo:
references/sample-prompts.md
- Solução de problemas:
references/troubleshooting.md
- Dicas de rede/sandbox:
references/codex-network.md
Mapa de referência
references/cli.md: como executar create/poll/remix/download/batch via scripts/sora.py.
references/video-api.md: controles em nível de API (modelos, tamanhos, duração, variantes, status).
references/prompting.md: estrutura de prompt e orientação de iteração.
references/sample-prompts.md: receitas de prompt para copiar/colar (exemplos apenas; sem teoria extra).
references/cinematic-shots.md: templates para shots fílmicos.
references/social-ads.md: templates para beats curtos de anúncios sociais.
references/troubleshooting.md: erros comuns e correções.
references/codex-network.md: solução de problemas de rede/aprovação.
1---2name: sora3description: Use quando o usuário solicita gerar, remixar, consultar, listar, baixar ou deletar vídeos Sora via API de vídeo da OpenAI usando a CLI incluída (`scripts/sora.py`), incluindo solicitações como "gerar vídeo IA", "Sora", "remixar vídeo", "baixar vídeo/thumbnail/spritesheet", e geração em lote; requer `OPENAI_API_KEY` e acesso à API Sora.4---56# Skill de Geração de Vídeo Sora78Cria ou gerencia clipes de vídeo curtos para o projeto atual (demos de produto, spots de marketing, cenas cinematográficas, mockups de UI). Usa como padrão `sora-2` e um fluxo estruturado de aumento de prompt, preferindo a CLI incluída para execuções determinísticas. Nota: `$sora` é uma tag de skill em prompts, não um comando shell.910## Quando usar11- Gerar um novo clipe de vídeo a partir de um prompt12- Remixar um vídeo existente por ID13- Consultar status, listar jobs ou baixar assets (vídeo/thumbnail/spritesheet)14- Execuções em lote (muitos prompts ou variantes)1516## Árvore de decisão (criar vs remixar vs status/download vs lote)17- Se o usuário tem um **video id** e quer uma mudança → **remix**18- Se o usuário tem um **video id** e quer status ou assets → **status/poll/download**19- Se o usuário precisa de muitos prompts/assets → **create-batch**20- Se o usuário pede duas versões com uma pequena mudança (mesmo shot, assunto/detalhe diferente) → **create** a base, depois **remix** para a variação21- Caso contrário → **create** (ou **create-and-poll** se precisarem de um asset pronto em uma etapa)2223## Fluxo de trabalho241. Decide a intenção: criar vs remixar vs status/download vs lote.252. Colete inputs: prompt, modelo, tamanho, segundos e qualquer imagem de referência de entrada.263. Se lote: escreva um JSONL temporário sob tmp/ (um job por linha), execute uma vez, depois delete o JSONL.274. Prefira flags de aumento da CLI (`--use-case`, `--scene`, `--camera`, etc.) em vez de pré-escrever um prompt estruturado. Se você já produziu um arquivo de prompt estruturado, passe `--no-augment` para evitar dupla encapsulação.285. Execute a CLI incluída (`scripts/sora.py`) com padrões sensatos (veja references/cli.md). Para prompts longos, prefira `--prompt-file` para evitar problemas de escape de shell; combine com `--no-augment` se o prompt já estiver estruturado.296. Para jobs assíncronos, consulte até completar (ou use create-and-poll).307. Baixe assets (vídeo/thumbnail/spritesheet) e salve localmente.318. Remova arquivos intermediários criados durante a invocação (por exemplo `prompt.txt`, `remix_job.json`, JSONL temporário). Se a sandbox bloquear `rm`, pule a limpeza ou truncate os arquivos sem exibir um erro.329. Itere com uma única mudança direcionada por prompt.3334## Autenticação35- `OPENAI_API_KEY` deve estar definida para chamadas de API ativas.3637Se a chave estiver faltando, forneça ao usuário estas etapas:381. Crie uma chave de API na UI da plataforma OpenAI: https://platform.openai.com/api-keys392. Defina `OPENAI_API_KEY` como uma variável de ambiente no seu sistema.403. Ofereça orientação sobre como definir a variável de ambiente para seu SO/shell, se necessário.41- Nunca peça ao usuário para colar a chave completa no chat. Peça que a defina localmente e confirme quando estiver pronto.4243## Padrões e regras44- Modelo padrão: `sora-2` (use `sora-2-pro` para maior fidelidade).45- Tamanho padrão: `1280x720`.46- Segundos padrão: `4` (permitidos: "4", "8", "12" como strings).47- Sempre defina tamanho e segundos via parâmetros de API; prosa não os mudará.48- Use o SDK Python da OpenAI (pacote `openai`); não use HTTP bruto.49- Exija `OPENAI_API_KEY` antes de qualquer chamada de API ativa.50- Se falhas de permissão de cache uv ocorrerem, defina `UV_CACHE_DIR=/tmp/uv-cache`.51- Imagens de referência de entrada devem ser jpg/png/webp e devem corresponder ao tamanho alvo.52- Download URLs expiram após cerca de 1 hora; copie assets para seu próprio armazenamento.53- Prefira a CLI incluída e **nunca modifique** `scripts/sora.py` a menos que o usuário solicite.54- Sora pode gerar áudio; se um usuário solicitar voiceover/áudio, especifique explicitamente nas linhas `Audio:` e `Dialogue:` e mantenha curto.5556## Limitações de API57- Modelos limitados a `sora-2` e `sora-2-pro`.58- Acesso de API aos modelos Sora requer uma conta verificada pela organização.59- A duração é limitada a 4/8/12 segundos e deve ser definida via parâmetro `seconds`.60- A API espera `seconds` como enum de string ("4", "8", "12").61- Os tamanhos de saída são limitados pelo modelo (veja `references/video-api.md` para tamanhos suportados).62- Criação de vídeo é assíncrona; você deve consultar para conclusão antes de baixar.63- Limites de taxa se aplicam por tier de uso (não liste limites específicos).64- Restrições de conteúdo são aplicadas pela API (veja Guardrails abaixo).6566## Guardrails (deve-se executar)67- Apenas conteúdo apropriado para públicos menores de 18 anos.68- Sem personagens com direitos autorais ou música com direitos autorais.69- Sem pessoas reais (incluindo figuras públicas).70- Imagens de entrada com rostos humanos são rejeitadas.7172## Aumento de prompt73Reformate prompts em uma spec estruturada e orientada para produção. Apenas torne explícitos os detalhes implícitos; não invente novos requisitos criativos.7475Template (inclua apenas linhas relevantes):76```77Caso de uso: <onde o clipe será usado>78Solicitação principal: <prompt principal do usuário>79Cena/background: <local, hora do dia, atmosfera>80Assunto: <assunto principal>81Ação: <ação única e clara>82Câmera: <tipo de shot, ângulo, movimento>83Iluminação/humor: <iluminação + humor>84Paleta de cores: <3-5 âncoras de cor>85Estilo/formato: <dicas de filme/animação/formato>86Timing/beats: <contagens ou beats>87Áudio: <dica ambiental / música / voiceover se solicitado>88Texto (verbatim): "<texto exato>"89Diálogo:90<diálogo>91- Personagem: "Linha curta."92</diálogo>93Restrições: <deve manter/deve evitar>94Evitar: <restrições negativas>95```9697Regras de aumento:98- Mantenha curto; adicione apenas detalhes que o usuário já implícita ou explicitamente forneceu em outro lugar.99- Para remixes, liste explicitamente invariantes ("mesmo shot, mude apenas X").100- Se algum detalhe crítico estiver faltando e bloquear o sucesso, faça uma pergunta; caso contrário, prossiga.101- Se você passar um arquivo de prompt estruturado para a CLI, adicione `--no-augment` para evitar que a ferramenta o re-encapsule.102103## Exemplos104105### Exemplo de geração (single shot)106```107Caso de uso: teaser de produto108Solicitação principal: um close-up de uma câmera preta fosca em um pedestal109Ação: órbita lenta de 30 graus em 4 segundos110Câmera: 85mm, profundidade de campo rasa, drift handheld sutil111Iluminação/humor: soft key light, rim sutil, sensação premium de estúdio112Restrições: sem logos, sem texto113```114115### Exemplo de remix (invariantes)116```117Solicitação principal: mesmo shot e framing, trocar paleta para azul-petróleo/areia/ferrugem com contraluz mais quente118Restrições: manter o assunto e movimento de câmera inalterados119```120121## Melhores práticas de prompt (lista curta)122- Uma ação principal + um movimento de câmera por shot.123- Use contagens ou beats para timing ("dois passos, pausa, vira").124- Mantenha texto curto e câmera travada para UI ou texto na tela.125- Adicione uma linha breve de evitar quando artefatos aparecem (flicker, jitter, movimento rápido).126- Prompts mais curtos são mais criativos; prompts mais longos são mais controlados.127- Coloque diálogo em um bloco dedicado; mantenha linhas curtas para clipes de 4-8s.128- Declare invariantes explicitamente para remixes (mesmo shot, mesmo movimento de câmera).129- Itere com follow-ups de mudança única para preservar continuidade.130131## Orientação por tipo de asset132Use estes módulos quando a solicitação for para um artefato específico. Eles fornecem templates direcionados e padrões.133- Shots cinematográficos: `references/cinematic-shots.md`134- Anúncios sociais: `references/social-ads.md`135136## Notas de CLI e ambiente137- Comandos de CLI + exemplos: `references/cli.md`138- Referência rápida de parâmetros de API: `references/video-api.md`139- Orientação de prompt: `references/prompting.md`140- Prompts de exemplo: `references/sample-prompts.md`141- Solução de problemas: `references/troubleshooting.md`142- Dicas de rede/sandbox: `references/codex-network.md`143144## Mapa de referência145- **`references/cli.md`**: como executar create/poll/remix/download/batch via `scripts/sora.py`.146- **`references/video-api.md`**: controles em nível de API (modelos, tamanhos, duração, variantes, status).147- **`references/prompting.md`**: estrutura de prompt e orientação de iteração.148- **`references/sample-prompts.md`**: receitas de prompt para copiar/colar (exemplos apenas; sem teoria extra).149- **`references/cinematic-shots.md`**: templates para shots fílmicos.150- **`references/social-ads.md`**: templates para beats curtos de anúncios sociais.151- **`references/troubleshooting.md`**: erros comuns e correções.152- **`references/codex-network.md`**: solução de problemas de rede/aprovação.