Vídeo com IA: Claude Code, Codex e ElevenLabs · Capítulo 1 de 25 · 20 min
Escolher uma arquitetura de vídeo com IA que funciona em outubro de 2026
Distribua cada papel do vídeo entre serviços que seguem no ar e grave um catálogo datado que recusa o Sora desligado e os previews do Veo que saem em 22/10.
Este capítulo faz parte do curso gratuito Vídeo com IA: Claude Code, Codex e ElevenLabs.
Muitos tutoriais de vídeo com IA escritos antes de setembro de 2026 ensinam a chamar serviços que já não respondem. A Videos API da OpenAI, que gerava vídeo com o Sora 2, foi desligada em 24/09/2026, e os previews do Veo 3.1 saem do Gemini API em 22/10/2026. Se o seu pipeline depende de um deles, ele quebra no meio do caminho, depois de gastar crédito nas etapas anteriores.
O prejuízo não para no erro. Você perde a tarde procurando um defeito que é, na verdade, um serviço encerrado, e pede ao agente que conserte um código que estava certo. Sem saber a data, ele inventa uma causa plausível e mexe no que funcionava.
Nesta aula você separa o vídeo em quatro papéis (direção, execução, mídia e montagem), escolhe um serviço vivo para cada um e grava a escolha num catálogo datado que um script local confere. Quando um fornecedor mudar, você troca uma linha, e não o projeto inteiro.
Carregando a vídeo-aula: A arquitetura de vídeo com IA que funciona em outubro de 2026
Carregando o podcast: A arquitetura de vídeo com IA de outubro de 2026, em conversa
Reconhecer o que saiu do ar e o que continua disponível
API é a porta de atendimento entre programas: o seu script entrega um pedido num formato combinado e recebe a resposta, como um balcão com formulário. Uma página de documentação pode continuar publicada depois que essa porta fecha, e é isso que engana. A OpenAI desligou em 24/09/2026 os modelos sora-2 e sora-2-pro, seus snapshots e a Videos API, sem substituto direto; o app e a web do Sora já tinham sido encerrados em 26/04/2026.
Isso não tira a OpenAI do curso. Ela continua entregando imagem (gpt-image-2.5-flare, lançado em 08/09/2026, para storyboard e miniatura), voz, transcrição e o Codex, o agente de programação que escreve e revisa o pipeline com o GPT-6.1 Sol (gpt-6.1-sol) no dia a dia e o GPT-6 Astra (gpt-6-astra, lançado em 03/09/2026) nos problemas que resistem. O movimento gerado passa a vir do Google: gemini-omni-1.1-flash, em GA (disponibilidade geral, a versão estável e suportada) no Gemini API desde 27/08/2026, ou o Veo estável na Gemini Enterprise Agent Platform do Google Cloud (o antigo Vertex AI), com os ids veo-3.1-generate-001 e veo-3.1-fast-generate-001. A linha do tempo abaixo junta as datas que mudam o desenho.
As datas que mudaram o vídeo com IA entre abril e novembro de 2026
- 26/04/2026Concluído
App e web do Sora encerrados
A API ainda seguiu até setembro.
- 22/08/2026Concluído
MCP local da ElevenLabs arquivado
O servidor hospedado com OAuth assume o lugar.
- 27/08/2026Concluído
Gemini Omni 1.1 Flash em GA
Id gemini-omni-1.1-flash no Gemini API; na Agent Platform o Omni 1.1 segue em Preview.
- 03/09/2026Concluído
GPT-6 Astra lançado
Modelo do Codex para os casos difíceis; o padrão é o GPT-6.1 Sol.
- 22/09/2026Concluído
Opus 5.5 vira o padrão do Claude Code
Fable 5.1 continua disponível pelo /model.
- 24/09/2026Concluído
Sora 2 e Videos API desligados
Sem substituto direto da OpenAI.
- 28/09/2026Concluído
Eleven v4 lançado
Chamado pela Text to Dialogue API, sem SSML.
- 02/10/2026Concluído
Nano Banana original desligado no Gemini API
Id gemini-2.5-flash-image; na Agent Platform a retirada passou para 15/03/2027.
- 06/10/2026Concluído
Nano Banana 2.1 em GA
Id gemini-nano-banana-2.1, US$ 0,0336 por imagem 1K; o gemini-3.1-flash-image foi depreciado sem data.
- 12/10/2026Agora
Data de referência deste curso
- 22/10/2026Previsto
Previews do Veo 3.1 podem sair do Gemini API
Data mais cedo possível, com o dia final a comunicar; inclui o gemini-omni-flash-preview.
- 17/11/2026Previsto
Veo estável na Agent Platform pode ser aposentado
A partir dessa data, sem dia fixo.
Duas outras mudanças pegam quem copia receita antiga. O Claude não gera imagem, áudio nem vídeo e não recebe MP4 na Messages API: ele lê texto e imagens (JPEG, PNG, GIF e WebP). Para revisar um vídeo, ele recebe frames extraídos do filme, e a aula de QA visual mostra como.
Na ElevenLabs, o servidor MCP local foi descontinuado e arquivado em 22/08/2026. O MCP hospedado que o substitui é documentado para agentes de voz; neste curso, narração, transcrição, música e efeitos vão por SDK ou API direta, e a aula de MCP explica o protocolo e o que conectar por ele.
Interfaces mudam, APIs são mais estáveis, e estável não quer dizer imutável. Guarde os parâmetros de entrada que o curso ensina (modelo, rota e formato) e não a cor do botão do painel. O próprio calendário prova isso: os ids estáveis do Veo na Agent Platform podem ser aposentados a partir de 17/11/2026.

Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Distribuir os papéis e comparar as unidades de cobrança
Pense no vídeo como uma pequena produtora com quatro mesas. Na direção, o Claude Code planeja e escreve o código; o padrão dele é o Opus 5.5 (claude-opus-5-5, lançado em 22/09/2026), e o Fable 5.1 entra pelo comando /model quando o trabalho pede raciocínio mais longo. Na execução, o Codex roda e revisa o mesmo código com outro modelo, o que pega erros que o primeiro agente não vê. Serviços especializados geram voz, imagem e movimento, e ferramentas locais juntam tudo num MP4.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Cada mesa cobra numa unidade diferente, e misturar unidades é o erro de orçamento mais comum. Token é o pedaço de texto ou imagem que o modelo processa, como a sílaba que o taxímetro conta; não é segundo de vídeo. A tabela reúne a escolha do curso para cada papel e a unidade que aparece na fatura.
O serviço de cada papel e como ele cobra
| Papel | Escolha do curso | Unidade de cobrança |
|---|---|---|
| Direção e código | Claude Code com claude-opus-5-5 | US$ 4 de entrada e US$ 20 de saída por milhão de tokens |
| Execução e revisão | Codex com gpt-6.1-sol (gpt-6-astra nos casos difíceis) | US$ 2 de entrada e US$ 10 de saída por milhão de tokens (Astra: US$ 10 e US$ 50) |
| Storyboard | gpt-image-2.5-flare | Por token de imagem, sem preço fixo por imagem |
| Narração | eleven_v4 pela Text to Dialogue | US$ 0,08 por mil caracteres, preço de lista |
| Transcrição | scribe_v2 | US$ 0,22 por hora de áudio |
| Movimento | gemini-omni-1.1-flash | Cerca de US$ 0,10 por segundo em 720p |
| Montagem | FFmpeg, Remotion ou HyperFrames | Sem token; usa a sua máquina |
O Eleven v4 está em promoção a US$ 0,022 por mil caracteres até 12/10/2026; orçamento recorrente usa o preço de lista.
Fonte: Tabelas de preço da Anthropic, da OpenAI, da ElevenLabs e do Gemini API, em 09/10/2026.
Três detalhes mudam a conta. Os preços do Sol e do Astra valem até 272 mil tokens de entrada; acima disso, a entrada dobra e a saída sobe 1,5 vez (no Astra, US$ 20 e US$ 75 por milhão). Assinatura e API são contas separadas: a assinatura do ChatGPT inclui o Codex, mas não inclui créditos de API. E render local não consome token, mas consome a sua máquina, energia e disco.
O curso "LLM FinOps" detalha como entrada e saída de tokens formam a fatura e por que a conta do agente não é a conta do chat. Para escolher entre Opus, Sonnet e Haiku em cada tarefa, veja como conhecer o Claude e escolher o modelo certo. O quadro abaixo junta as expectativas que mais quebram projeto e a troca que resolve cada uma.
Duas armadilhas antes de gravar o catálogo
alertTriangle Expectativa e escolha
Expectativas que quebram o projeto e a escolha que funciona em 09/10/2026
Expectativa que quebra
Coluna a evitar
- Chamar /v1/videos ou sora-2 como nos tutoriais de agosto
- Enviar o MP4 direto para o Claude revisar
- Começar projeto novo com veo-3.1-fast-generate-preview
- Orçar a narração pelo preço promocional do Eleven v4
- Gerar voz e música pelo MCP local da ElevenLabs
Escolha que funciona
Coluna recomendada
- Trocar só a etapa de geração por Gemini Omni ou Veo na Agent Platform
- Extrair quadros com FFmpeg e enviar JPEG ou PNG
- Usar gemini-omni-1.1-flash ou veo-3.1-fast-generate-001
- Orçar com US$ 0,08 por mil caracteres, preço de lista
- Usar SDK ou API direta e deixar o MCP para agentes de voz
layers Conferir o status do modelo em cada plataforma
O mesmo modelo pode ter status diferente conforme a porta por onde você entra. Desde 27/08/2026, o gemini-omni-1.1-flash está em GA no Gemini API; na Gemini Enterprise Agent Platform, o mesmo Omni continua em Preview, com o id gemini-omni-1.1-flash-preview. Quem copia o id de uma plataforma para a outra recebe erro de modelo não encontrado ou entra num preview sem perceber. As datas de saída seguem a mesma lógica: o Google trata 22/10/2026 como a data mais cedo em que os previews do Veo 3.1 podem sair do Gemini API, com o dia final a comunicar, e o catálogo recusa esses ids desde já.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Antes de gravar o catálogo, abra a página de modelos da plataforma escolhida e confira o id exato e o status escrito ao lado dele (GA, Preview ou depreciado). Se a plataforma é o Gemini API, use o id sem sufixo. Se é a Agent Platform, o Omni ainda é preview, e o movimento estável vem do Veo com final -001. Está certo quando a plataforma, o id e o campo status_na_plataforma do catálogo batem com a mesma página. O erro comum é ler o status no changelog de uma plataforma e chamar a outra; o verificador abaixo recusa movimento sem GA, e o conserto é trocar de id ou de plataforma, nunca apagar a regra.
Registrar a arquitetura num catálogo que se confere sozinho
Catálogo é a ficha técnica do projeto: um arquivo JSON (texto estruturado em pares de nome e valor, que qualquer linguagem lê) que diz qual modelo faz cada papel, em qual plataforma e em que data a escolha foi feita. Registrar a plataforma ao lado do id importa porque o mesmo modelo muda de nome conforme o revendedor: o Gemini Omni 1.1 Flash se chama gemini_omni_flash_1.1 na Runway e gemini-omni-1.1-flash no Gemini API. Na Runway, gemini_omni_flash, sem o 1.1, é a versão anterior.
Se você ainda não tem terminal, Python e editor prontos, leia esta parte agora e rode os blocos depois da aula que monta a bancada. Crie uma pasta video-ia, dentro dela a pasta config, e salve o conteúdo abaixo como config/catalogo.json.
{
"data_referencia": "2026-10-12",
"direcao": {
"ferramenta": "Claude Code",
"plataforma": "Anthropic",
"modelo": "claude-opus-5-5",
"entrada_visual": "imagens"
},
"execucao": {
"ferramenta": "Codex",
"plataforma": "OpenAI",
"modelo": "gpt-6.1-sol",
"modelo_casos_dificeis": "gpt-6-astra"
},
"storyboard": {
"plataforma": "OpenAI Image API",
"modelo": "gpt-image-2.5-flare"
},
"narracao": {
"plataforma": "ElevenLabs API",
"modelo": "eleven_v4",
"rota": "/v1/text-to-dialogue"
},
"transcricao": {
"plataforma": "ElevenLabs API",
"modelo": "scribe_v2"
},
"movimento": {
"plataforma": "Gemini API",
"modelo": "gemini-omni-1.1-flash",
"status_na_plataforma": "GA"
},
"montagem": {
"motor": "FFmpeg",
"execucao": "local"
},
"regras": {
"claude_recebe_mp4": false,
"elevenlabs_mcp_para_midia": false,
"aprovacao_antes_de_gasto": true,
"aprovacao_antes_de_publicacao": true
}
}
Agora o verificador. Ele não acessa a internet nem gasta crédito: aplica as regras desta aula ao catálogo e, em seguida, roda dois testes negativos, isto é, troca de propósito o modelo por um que deveria ser recusado e confere se a recusa acontece. Salve como scripts/validar_catalogo.py dentro de video-ia e rode python scripts/validar_catalogo.py (no macOS e no Linux, python3).
"""Confere o catálogo desta aula sem acessar a internet nem gastar crédito.
Rode na pasta video-ia: python scripts/validar_catalogo.py (macOS e Linux: python3)
"""
import copy
import json
from pathlib import Path
# Serviços que já saíram do ar ou saem em breve (datas de 12/10/2026).
DESLIGADOS = {
"sora-2": "Sora 2 e Videos API desligados em 24/09/2026.",
"sora-2-pro": "Sora 2 Pro desligado em 24/09/2026.",
}
PREVIEWS_GEMINI = {
"veo-3.1-generate-preview",
"veo-3.1-fast-generate-preview",
"veo-3.1-lite-generate-preview",
"gemini-omni-flash-preview",
}
def verificar(catalogo):
"""Devolve a lista de problemas; lista vazia quer dizer catálogo aprovado."""
erros = []
if catalogo.get("data_referencia") != "2026-10-12":
erros.append("Data de referência diferente da desta aula: revise as escolhas.")
modelo = catalogo["movimento"]["modelo"]
if modelo in DESLIGADOS or modelo.startswith("sora-"):
erros.append(DESLIGADOS.get(modelo, "Modelos Sora foram desligados em 24/09/2026."))
if modelo in PREVIEWS_GEMINI:
erros.append("Este preview pode sair do Gemini API a partir de 22/10/2026; use gemini-omni-1.1-flash.")
if catalogo["movimento"].get("status_na_plataforma") != "GA":
erros.append("Movimento sem GA nesta plataforma: troque o id ou a plataforma.")
# Cada papel precisa dizer em qual plataforma o id vale.
for papel in ("storyboard", "narracao", "transcricao", "movimento"):
if not catalogo[papel].get("plataforma"):
erros.append(f"Papel {papel} sem plataforma: o mesmo id muda entre revendedores.")
regras = catalogo["regras"]
if regras["claude_recebe_mp4"]:
erros.append("O Claude lê imagens; extraia quadros do MP4 antes de pedir revisão.")
if regras["elevenlabs_mcp_para_midia"]:
erros.append("Neste curso, voz, transcrição, música e efeitos usam SDK ou API direta.")
if not regras["aprovacao_antes_de_publicacao"]:
erros.append("Publicação sem aprovação humana não é aceita.")
return erros
catalogo = json.loads(Path("config/catalogo.json").read_text(encoding="utf-8"))
problemas = verificar(catalogo)
if problemas:
raise SystemExit("\n".join(problemas))
print("OK: catálogo aprovado pelas regras desta aula.")
# Testes negativos: trocamos o modelo de propósito e a recusa precisa acontecer.
for ruim in ("sora-2", "veo-3.1-fast-generate-preview"):
teste = copy.deepcopy(catalogo)
teste["movimento"]["modelo"] = ruim
recusas = verificar(teste)
if not recusas:
raise SystemExit(f"Falha: o verificador aceitou {ruim}.")
print(f"TESTE NEGATIVO OK: {ruim} -> {recusas[0]}")
A saída esperada tem três linhas: a aprovação do catálogo e dois TESTE NEGATIVO OK, um para sora-2 e outro para veo-3.1-fast-generate-preview. O verificador só conhece as regras escritas nele e não prova que o serviço está no ar hoje. Quando um fornecedor anunciar um desligamento, acrescente a regra e a data ao script, e o catálogo passa a recusar a escolha velha.
Montar e testar o catálogo da arquitetura
Seis passos, nenhuma chamada paga. Rode na pasta video-ia.
Passo 1: Anote a data de referência no topo do catálogo
Toda escolha de modelo vale para uma data; a deste curso é 2026-10-12.
Deu certo quando: O campo data_referencia mostra 2026-10-12.
Erro comum: Tratar página histórica como oferta vigente, como o guia do Sora.
Passo 2: Separe os quatro papéis antes de escolher fornecedor
Deu certo quando: Direção, execução, mídia e montagem têm cada uma um responsável.
Erro comum: Pedir ao Claude ou ao Astra que gere o MP4.
Passo 3: Escolha modelo e plataforma juntos
Deu certo quando: A etapa de movimento registra Gemini API, gemini-omni-1.1-flash e status GA.
Erro comum: Copiar um id da Runway para o endpoint do Google.
Passo 4: Salve config/catalogo.json dentro da pasta video-ia
Deu certo quando: O arquivo abre no editor sem aviso de JSON inválido.
Erro comum: Salvar em Downloads e rodar o script em outra pasta, o que gera arquivo não encontrado.
Passo 5: Rode o verificador
Deu certo quando: Aparecem a aprovação e dois TESTE NEGATIVO OK.
Erro comum: Achar que teste negativo é falha do projeto: ele prova que a recusa funciona.
Passo 6: Explique a escolha sem olhar o código
Deu certo quando: Você justifica por que o Sora não entra e por que o Claude recebe quadros.
Erro comum: Decorar ids sem entender o papel de cada serviço.
No fim você tem: Um catálogo datado, aprovado pelo verificador, que diz quem faz cada parte do vídeo.
Quatro decisões aparecem já no primeiro projeto. Se um tutorial usa /v1/videos, não execute: troque só a etapa de geração e preserve o resto do pipeline. Se a tarefa é revisar um MP4 com o Claude, extraia quadros antes, porque o vídeo não é uma entrada aceita. Se o orçamento é semanal, use preço de lista e deixe a promoção numa coluna à parte. Se o mesmo modelo existe em dois fornecedores, registre a plataforma junto com o id.
Para delegar a revisão do catálogo, cole o pedido abaixo no Claude Code aberto na pasta video-ia. Ele roda o verificador, explica a arquitetura e aponta riscos sem editar nada até você autorizar.
Guia prático: conferir os ids do catálogo nas listas oficiais de modelos
O verificador da aula conhece só as regras escritas nele. Este guia acrescenta a outra metade: perguntar a cada fornecedor, pela rota de listagem de modelos (a que devolve o catálogo vivo sem gerar nada), se o id gravado em config/catalogo.json ainda existe e se já tem data de saída. Você sai com scripts/conferir_ids.py, um log datado em logs/ e o hábito de rodar os dois scripts antes de agendar a semana.
Funções, casos de uso e aplicações
Funções
As listas de modelos que dizem se um id continua vivo
| Função ou recurso | O que faz | Quando usar | Desde |
|---|---|---|---|
| GET /v1/models da Anthropic | Lista cada modelo com lifecycle (active, deprecated ou retired) e retires_at, a data marcada para a aposentadoria | Antes de fixar o modelo de direção no catálogo | Campo line em 01/10/2026; capabilities em 18/03/2026 |
| Filtro lifecycle=retired | Inclui na resposta os modelos já aposentados, que a lista padrão esconde | Quando um script herdado falha com modelo não encontrado | Na referência da API em 12/10/2026 |
| GET /v1/models da OpenAI | Devolve cada id com shutdown_date, a data de desligamento anunciada, ou null | Conferir gpt-6.1-sol e gpt-image-2.5-flare | Na referência da API em 12/10/2026 |
| models.list do Gemini API | Lista name, baseModelId e supportedGenerationMethods; a chave vai no cabeçalho x-goog-api-key | Antes de cada ciclo, para conferir o id do movimento | Na referência da API em 12/10/2026 |
| GET /v1/models da ElevenLabs | Traz os modelos de voz com maximum_text_length_per_request, o limite de caracteres por pedido | Conferir eleven_v4 e o limite que o contrato da voz usa | Na referência da API em 12/10/2026 |
| Aposentadoria do Claude Sonnet 4.5 | O claude-sonnet-4-5-20250929 foi depreciado, com retirada da API marcada para 30/11/2026 | Procurar o id em scripts herdados e trocar antes da data | 30/09/2026 |
A listagem só lê o catálogo do fornecedor, sem gerar texto, voz, imagem nem vídeo.
Casos de uso
Analista de conteúdo de uma escola de idiomas online em Curitiba, que publica uma pílula de vídeo por dia no Instagram
Educação, cursos de idiomas
Dor
Um script herdado da agência anterior falhava às segundas-feiras com modelo não encontrado, e a equipe perdia a manhã desconfiando da chave.
Solução
Ela rodou o conferidor de ids, que mostrou o id antigo ausente da lista e o substituto ativo. Trocou uma linha do catálogo e passou a rodar o conferidor toda sexta, antes de agendar a semana.
Resultado
Observar, nas quatro semanas seguintes, se alguma falha de segunda-feira volta a ter a causa num id de modelo; o log datado em logs/ mostra o que mudou e quando.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Gestor de mídia de uma agência de Belo Horizonte que produz vídeos curtos para três clientes do varejo
Marketing digital, agência
Dor
Cada cliente tinha um catálogo copiado de um projeto diferente, e ninguém sabia quais ids estavam perto da aposentadoria.
Solução
Com o conferidor rodado nos três projetos, ele juntou numa planilha os campos retires_at e shutdown_date e marcou cada troca de modelo um ciclo antes da data.
Resultado
Acompanhar se as trocas acontecem antes da data de saída e se o orçamento do mês seguinte registra a diferença de preço entre o modelo antigo e o novo.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Na prática
Rode na pasta video-ia, com o .env da aula da bancada preenchido; acrescente GEMINI_API_KEY quando tiver a chave do Google. O script faz uma chamada de listagem por fornecedor, nunca em laço, e grava só o veredito por papel: nenhuma chave nem cabeçalho vai para o log. A lista da ElevenLabs traz os modelos de voz, então o scribe_v2 da transcrição fica de fora e continua sendo conferido na página de modelos. Sem a chave de um fornecedor, o papel aparece como PENDENTE em vez de erro.
"""Confere se cada id do catálogo aparece na lista oficial de modelos do fornecedor.
Rode na pasta video-ia: python scripts/conferir_ids.py (macOS e Linux: python3)
Só lê listas de modelos: não gera texto, voz, imagem nem vídeo. Grava logs/ids-AAAA-MM-DD.json.
"""
import json, os
from datetime import date
from pathlib import Path
from urllib.request import Request, urlopen
for linha in Path(".env").read_text(encoding="utf-8").splitlines() if Path(".env").exists() else []:
if "=" in linha and not linha.lstrip().startswith("#"):
k, v = linha.split("=", 1)
os.environ.setdefault(k.strip(), v.strip())
# Fornecedor: (variável da chave, URL da lista, cabeçalhos, como tirar a lista de ids)
FONTES = {
"anthropic": ("ANTHROPIC_API_KEY", "https://api.anthropic.com/v1/models?limit=1000",
lambda k: {"x-api-key": k, "anthropic-version": "2023-06-01"}, lambda d: d["data"]),
"openai": ("OPENAI_API_KEY", "https://api.openai.com/v1/models",
lambda k: {"Authorization": f"Bearer {k}"}, lambda d: d["data"]),
"google": ("GEMINI_API_KEY", "https://generativelanguage.googleapis.com/v1beta/models?pageSize=1000",
lambda k: {"x-goog-api-key": k}, lambda d: d.get("models", [])),
"elevenlabs": ("ELEVENLABS_API_KEY", "https://api.elevenlabs.io/v1/models",
lambda k: {"xi-api-key": k}, lambda d: d),
}
# A lista da ElevenLabs traz os modelos de voz; o scribe_v2 da transcrição fica fora dela.
PAPEIS = {"direcao": "anthropic", "execucao": "openai", "storyboard": "openai",
"narracao": "elevenlabs", "movimento": "google"}
catalogo = json.loads(Path("config/catalogo.json").read_text(encoding="utf-8"))
listas, relatorio = {}, {}
for papel, fornecedor in PAPEIS.items():
var, url, cab, extrair = FONTES[fornecedor]
if not os.environ.get(var):
relatorio[papel] = "PENDENTE: sem " + var + " no .env"
continue
if fornecedor not in listas: # uma chamada por fornecedor, nunca em laço
with urlopen(Request(url, headers=cab(os.environ[var])), timeout=30) as r:
listas[fornecedor] = extrair(json.load(r))
alvo = catalogo[papel]["modelo"]
achado = next((m for m in listas[fornecedor]
if alvo in (m.get("id"), m.get("model_id"), m.get("name", "").removeprefix("models/"))), None)
if achado is None:
relatorio[papel] = f"AUSENTE: {alvo} não está na lista de {fornecedor}; confira a página de modelos"
else: # Anthropic informa lifecycle e retires_at; OpenAI, shutdown_date
aviso = achado.get("retires_at") or achado.get("shutdown_date") or achado.get("lifecycle") or "sem data de saída"
relatorio[papel] = f"OK: {alvo} ({aviso})"
Path("logs").mkdir(exist_ok=True)
Path(f"logs/ids-{date.today()}.json").write_text(json.dumps(relatorio, ensure_ascii=False, indent=2), encoding="utf-8")
print("\n".join(f"{p}: {r}" for p, r in relatorio.items()))Conferir o catálogo contra as listas dos fornecedores
Cinco passos na pasta video-ia; nenhum deles gera mídia paga.
Passo 1: Rode primeiro o verificador da aula
python scripts/validar_catalogo.py
Deu certo quando: A aprovação e os dois TESTE NEGATIVO OK aparecem.
Erro comum: Gastar chamada de rede com um catálogo que já falha nas regras locais.
Passo 2: Rode o conferidor de ids
python scripts/conferir_ids.py
Deu certo quando: Cada papel aparece como OK, AUSENTE ou PENDENTE, e o log do dia existe em logs/.
Erro comum: Colar no chat a saída de um terminal que também imprimiu variáveis de ambiente.
Passo 3: Leia a data ao lado de cada OK
retires_at (Anthropic) e shutdown_date (OpenAI) aparecem no lugar de "sem data de saída" quando há aposentadoria marcada.
Deu certo quando: Nenhum id do catálogo tem data de saída a menos de 30 dias.
Erro comum: Tratar lifecycle deprecated como ativo só porque a chamada ainda responde.
Passo 4: Trate AUSENTE como pergunta em aberto
Alguns modelos de mídia ficam fora da rota de listagem; a página de modelos da plataforma decide.
Deu certo quando: Você sabe se o id saiu do ar ou só não aparece na listagem.
Erro comum: Apagar o modelo do catálogo sem abrir a página de modelos do fornecedor.
Passo 5: Guarde o log ao lado do catálogo
Deu certo quando: logs/ids-AAAA-MM-DD.json mostra a foto de cada sexta-feira.
Erro comum: Apagar os logs antigos e perder a data em que um id mudou.
No fim você tem: Um catálogo que passa nas regras locais e nas listas vivas dos fornecedores, com a foto datada em logs/.
Armadilhas
Usar a lista de modelos sem criar problema novo
Evite
Coluna a evitar
- Rodar a listagem em laço até o id aparecer
- Concluir que id ausente da lista foi desligado
- Ler o status numa plataforma e chamar outra
- Gravar em logs/ a resposta inteira, com cabeçalhos
- Descobrir o retires_at quando o pipeline já caiu
Faça assim
Coluna recomendada
- Uma chamada por fornecedor, antes de agendar a semana
- Abrir a página de modelos antes de trocar o id
- Conferir na mesma plataforma que o catálogo registra
- Gravar só o veredito por papel, sem chave nem cabeçalho
- Trocar o modelo um ciclo antes da data de saída
Na Cozinha da Rafa, o canal de receitas regionais da Rafa em Recife, com três vídeos por semana (um longo em 16:9 e dois cortes em 9:16), o catálogo fica igual para o bolo de rolo ou para o baião de dois. O Claude organiza roteiro e código, o Codex revisa, a ElevenLabs narra e transcreve, o Omni gera os poucos trechos de b-roll gerado e o FFmpeg monta. O custo da semana depende menos do número de vídeos e mais dos segundos gerados, dos descartes e das novas tentativas: um corte de 60 segundos com 10 segundos de b-roll gerado no Omni custa cerca de US$ 1,00 de vídeo gerado, antes de qualquer descarte.
Os termos novos desta aula ficam reunidos abaixo para consulta.
Glossário rápido
API
Porta de atendimento entre programas: o script pede num formato combinado e recebe a resposta, como um balcão com formulário.
token
Pedaço de texto ou imagem que o modelo processa e cobra, como a sílaba que o taxímetro conta; não é segundo de vídeo.
preview
Versão de teste de um modelo, com data para sair do ar; não serve de base para projeto novo.
GA (disponibilidade geral)
A versão estável e suportada de um modelo ou serviço, a que o fornecedor recomenda para produção.
Grave o catálogo, rode o verificador e explique a escolha em voz alta sem olhar o código. Está pronto quando o script imprime a aprovação e os dois testes negativos, nenhum serviço desligado aparece como etapa executável e você sabe dizer em que unidade cada papel cobra: token, caractere, hora de áudio ou segundo gerado. Na próxima aula, esse catálogo vira um pipeline com contratos entre as etapas.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- CursoClaude Code CLI: Programação com IA
- CursoAstra profundosugerido pelo grafoA quinta parte do Astra planeja o vídeo e edita o material bruto com o modelo dirigindo a ferramenta. O curso de vídeo com IA aprofunda esse trabalho com Claude Code, Codex e ElevenLabs, do roteiro à publicação. O grafo já sugeria esta ordem pela regra de entrada da trilha; com a ordem anterior curada, ela passa a ser declarada (Etapa 4, wave 3).
- CursoSetup Completo: do zero ao Claude Codesugerido pelo grafo7 capítulos de “Vídeo com IA: Claude Code, Codex e ElevenLabs” usam conceitos apresentados em “Setup Completo: do zero ao Claude Code”.
Depois, siga para
- CursoFrontends com Vibecodingsugerido pelo grafo21 capítulos de “Frontends com Vibecoding” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
- CursoDo Agile ao Agentic Operating Modelsugerido pelo grafo5 capítulos de “Do Agile ao Agentic Operating Model” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
- CursoAgentes de IA Autônomos: Do Conceito à Produçãosugerido pelo grafo7 capítulos de “Agentes de IA Autônomos: Do Conceito à Produção” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
- CursoLLM FinOps: o custo da IA para quem assina o orçamentosugerido pelo grafo4 capítulos de “LLM FinOps: o custo da IA para quem assina o orçamento” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Bastidores: Como Este Portal Foi ConstruídoBanca de modelos: pesquisa e redação com fonteExaminar conexões de Banca de modelos: pesquisa e redação com fonte
- Vibecoding para SEOO Manifesto Vibecoding: Programe sem ProgramarExaminar conexões de O Manifesto Vibecoding: Programe sem Programar
- Prompt Engineering para ExecutivosManter um agente de horas no rumo sem estourar a janelaExaminar conexões de Manter um agente de horas no rumo sem estourar a janela
- Software e IA para executivosA ferramenta de código com IA pode mudar de donoExaminar conexões de A ferramenta de código com IA pode mudar de dono
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Laboratórios ao vivo deste curso
Cada laboratório monta a biblioteca real dentro da aula, com controles para você mexer e o código do exemplo para copiar. O texto de reserva descreve a demonstração para quem lê sem JavaScript. O link abre o capítulo já no ponto do laboratório.
MediaRecorder, Canvas 2D e Long Animation Frames (plataforma)
Grave a cena em tempo real e veja os quadros que se perdem
Suba as partículas, force um bloqueio de 300 ms e grave seis segundos; compare com o render quadro a quadro desta aula.
Pacote
Abrir no capítuloMontar vídeo em HTML com HyperFrames e escolher entre ele e o Remotionsem pacoteMotion
Ver agentes em paralelo trocando mensagens numa linha do tempo
Reproduza a cena, percorra o tempo pelo controle e compare o tempo de parede com a soma das barras de cada agente.
Pacote
Abrir no capítuloParalelizar cenas com subagentes sem estourar o limite das APIsmotionReact (sem dependência extra), com as APIs do Veo e do fal.ai
Prompt de vídeo em cinco camadas, pronto para a API
Escolha plano, câmera, luz, ação e áudio e copie o prompt e o JSON para o Veo ou para o fal.ai.
Pacote
Abrir no capítuloEscrever prompt de vídeo em cinco camadas e manter o personagem consistentereactReact (sem dependência extra), com o comando para o FFmpeg
Corte o vídeo apagando palavras da transcrição
Aperte as palavras para removê-las, ligue a remoção de pausas e copie o comando FFmpeg e a legenda SRT gerados.
Pacote
Abrir no capítuloRemover pausas e reenquadrar o vídeo de 16:9 para 9:16 com legenda por palavrareactReact (sem dependência extra)
Quanto custa cada etapa do seu pipeline de vídeo
Troque a ferramenta de cada etapa e o percentual de b-roll e veja qual etapa pesa no custo por minuto e por vídeo.
Pacote
Abrir no capítuloOrquestrar o pipeline com etapas idempotentes e teto de gastoreact
Capítulos vizinhos em Vídeo com IA: Claude Code, Codex e ElevenLabs
- 01Escolher uma arquitetura de vídeo com IA que funciona em outubro de 2026
- 02Desenhar o pipeline de vídeo do briefing à publicação
- 03Montar a bancada de vídeo com IA mesmo sem nunca ter usado o terminal
- 04Cortar, juntar, mixar e exportar vídeo com FFmpeg sem abrir editor
- 05Montar vídeo em React com Remotion e renderizar na sua máquina ou na AWS