Importação de Ativos
Esta compilação executa o editor e seu servidor de mídia localmente. Não há API de importação hospedada, nem CLI, nem OAuth: a mídia entra no projeto através da interface do editor ou das ferramentas do agente abaixo. Escolha o caminho com base em onde os bytes estão localizados.
Caminho 1 — arquivos locais do usuário (principal)
Peça ao usuário para arrastar os arquivos para o editor (canvas de pré-visualização ou painel "Meus Ativos") ou usar o botão de upload. O pipeline local então é executado automaticamente: gravação em stream para /media/uploads/, transcodificação condicional (borda longa ≤1920, codec compatível com navegador, ~8Mbps), extração de áudio e transcrição automática (ASR inicia no upload). Não peça ao usuário para pré-converter, pré-cortar ou transcodificar nada — o pipeline cuida disso.
O agente não pode ler o sistema de arquivos do usuário. Se o usuário fornecer um caminho /Users/... ou C:\..., diga a ele para soltar o arquivo no editor; você não pode buscá-lo.
Caminho 2 — URLs públicas (orientado pelo agente)
Use download_media com uma única URL ou um array em lote. O servidor busca, armazena em /media/uploads/ e registra os ativos no pool. Prefira este caminho para mídia de banco de imagens/web que o usuário indicar. Após o download, o ativo se comporta como qualquer outro ativo do pool de mídia.
Caminho 3 — transferência de host externo
Chame import_media com {"action":"create_session", "assetType":..., "filename":..., "contentType":..., "size":...}. Ele retorna um slot de upload de curta duração vinculado ao projeto atual, sessão, identidade do ativo, nome base, POST, tipo MIME e contagem exata de bytes. Um script do host pode fazer upload para essa URL exata com os cabeçalhos declarados. O sandbox do agente não pode alcançar o localhost do usuário, portanto não tente a transferência a partir de run_code.
A resposta de upload bem-sucedida retorna um comprovante opaco, assetType ecoado e caminho enviado. Consulte o caminho enviado quando duração exata, dimensões, fps ou presença de áudio forem necessários; em seguida, chame finalize_uploaded_asset com o comprovante, assetType ecoado, metadados de mídia medidos e durationInSeconds para áudio/vídeo/gif. O servidor resolve o hash autoritativo, caminho, tamanho, nome do arquivo e ID do ativo. Finalizar confirma o ativo, mas nunca inicia o ASR; após colocar um ativo de áudio/vídeo em uma trilha, invoque transcribe_track separadamente se a transcrição for desejada. O ativo não está presente nem utilizável antes de finalizar ser bem-sucedido. Para substituição de mídia ausente, passe o assetId existente para import_media; omita-o para um novo ativo. Nunca construa /media/uploads/... você mesmo e nunca afirme que os bytes estão prontos antes da resposta de upload.
Disciplina de edição
Para edições com múltiplas fontes, construa trabalho revisável a partir de ativos de origem originais na linha do tempo do OpenChatCut. Não concatene, pré-corte, pré-componha, queime legendas ou achate a mídia localmente antes da importação — importe os originais e faça toda a composição na linha do tempo para que cada etapa permaneça revisável e desfazível.
Para ativos de código, como gráficos em movimento criados manualmente, use o skill create-motion-graphics (create_motion_graphic_from_code para novos ativos, atualizações de código de ativos para edições) — o código MG não é um arquivo importado.
Notas de armazenamento
- Os bytes residem no disco local (
/media/uploads/), servidos diretamente com suporte a Range. Se o Cloudflare R2 estiver configurado, os uploads são espelhados no R2 e outros dispositivos podem hidratar a partir dele; sem R2, o projeto é apenas local. - Apenas local é um estado final válido: pré-visualização, edição e exportação leem do disco. O espelhamento em nuvem é necessário apenas para acesso entre dispositivos.