Communitygithub.com

0xsline/openchatcut

Use quando um fluxo de trabalho de edição ou criação de vídeo do OpenChatCut precisar de exportação, renderização, download, compartilhamento, entrega final, exportação de arquivo de legenda, escolha de renderização, manipulação de ativos apenas locais ou explicação de fallback de exportação.

O que é openchatcut?

Esta skill gerencia todo o fluxo de exportação e entrega de projetos no OpenChatCut, centralizando operações como renderização de vídeo/áudio, exportação de legendas e XML para NLE. Ela oferece duas abordagens: uma síncrona (`submit_export`) para resultados rápidos e outra assíncrona (`submit_render_job` + `track_export`) para renders mais longos, garantindo que o usuário possa monitorar o progresso. A skill lida automaticamente com ativos que só existem localmente, faz o download dos arquivos finais para a pasta Downloads do usuário com regras de segurança para evitar sobrescrita, e exibe as prévias diretamente no chat. Suporta múltiplos formatos de exportação (h264/MP4, vp8/WebM, MP3, SRT, TXT, XML para Premiere e DaVinci Resolve) e oferece fallbacks claros para quando ativos estão faltando, como re-link ou re-download.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/0xsline/openchatcut/tree/HEAD/src/agent/skills/export

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Exportação

Use as ferramentas de exportação do OpenChatCut para entrega. Uma solicitação de exportação deve chamar submit_export (ou submit_render_job para assíncrono) e, em seguida, usar track_export para status e entrega final, quando o resultado não for retornado imediatamente.

Política padrão:

  • Prefira submit_export quando o usuário pedir para exportar/compartilhar/finalizar a timeline do OpenChatCut.
  • Mantenha os originais localmente por padrão durante a edição. Faça upload dos originais apenas quando uma exportação/prova em nuvem precisar de ativos remotos e o usuário não tiver proibido o upload.
  • Não envolva o ffmpeg do sandbox como uma ferramenta do OpenChatCut. Use o ffmpeg do sandbox para processamento completo de vídeo apenas quando o usuário solicitar explicitamente uma operação independente de arquivo local fora de um fluxo de trabalho de edição do OpenChatCut. Para tarefas de edição do OpenChatCut, não produza uma renderização local pré-editada ou achatada como a revisão principal/entregável final; use a exportação do OpenChatCut.

Exportação Durável

Use submit_export para o caminho de execução:

{
  "format": "video",
  "codec": "h264",
  "resolution": "1080p",
  "fps": 30,
  "name": "final-cut"
}

As opções de codec de vídeo são h264 (MP4, padrão) e vp8 (WebM). As opções de taxa de quadros do vídeo correspondem à IU do editor: 24, 25, 30, 50 ou 60; omita fps para corresponder à timeline. A exportação de áudio é MP3: passe "format":"audio" e omita codec / fps, a menos que você passe explicitamente "codec":"mp3".

submit_export retorna um renderId durável. Alguns tipos de exportação, como arquivos de legenda, podem ser concluídos imediatamente e retornar downloadUrl; vídeo/áudio geralmente exigem track_export para aguardar a conclusão.

Após obter cada downloadUrl:

  • Resolva a pasta Downloads do usuário: ~/Downloads no macOS/Linux, ou %USERPROFILE%\Downloads no Windows.
  • Antes de acionar qualquer download do agente/navegador, verifique a pasta Downloads em busca de artefatos de download recentes do Chrome dos últimos minutos que correspondam ao nome de exportação esperado, extensão ou nome base da URL de renderização/download. Inclua arquivos concluídos e arquivos .crdownload em andamento.
  • Se existir um .crdownload fresco correspondente, não acione outro download. Aguarde até que o Chrome remova o sufixo .crdownload e o tamanho final do arquivo pare de mudar, então use esse arquivo concluído.
  • Se um arquivo concluído fresco correspondente já existir, use-o diretamente em vez de baixar novamente.
  • Se apenas arquivos mais antigos existirem, trate-os como colisões, não como a exportação atual.
  • Não sobrescreva um arquivo existente; escolha um nome de arquivo numerado seguro, como nome (1).mp4, quando necessário.
  • Sempre baixe o arquivo de exportação finalizado na pasta Downloads, não em um diretório temporário/de trabalho.
  • Sempre mostre o vídeo baixado inline no chat. Se houver vários vídeos exportados, baixe todos e mostre todas as prévias, não apenas o primeiro.

Se o projeto contiver ativos apenas locais, faça upload/registre substitutos legíveis em nuvem antes de renderizar, ou use o caminho de Exportação CLI Local quando o usuário quiser permanecer local.

Relate o renderId retornado quando presente. O trabalho também fica visível na fila de exportação no canto superior direito do editor, incluindo progresso e cancelamento. Use saveToMediaPool:true quando o usuário pedir para manter o resultado em Meus Materiais ou quando o fluxo de trabalho ativo padronizar explicitamente para materialização automática, como livestream-to-clips; caso contrário, o padrão permanece uma exportação normal para download. Para vídeos longos, chame track_export uma vez com action:"wait" e timeoutSeconds:20. Se retornar waitExpired:true, reporte que a renderização continua em segundo plano e encerre o turno. Verifique mais tarde com action:"status"; esperas repetidas só mantêm o turno do Agente aberto. Não inicie outra exportação para a mesma timeline enquanto esta renderização estiver ativa.

Use track_export quando o usuário perguntar sobre o status da exportação/renderização, ou quando o turno atual precisar genuinamente aguardar uma renderização de vídeo/áudio enviada. Exportações de conector concluídas retornam downloadUrl; para cada entrada concluída, baixe o arquivo para Downloads usando as regras de segurança de colisão acima e mostre inline no chat:

{
  "action": "status",
  "renderIds": "abc123"
}

Para a exportação mais recente do projeto, omita renderIds e passe "latest": true. track_progress é para trabalhos de geração/transcrição/upload, não para trabalhos de renderização.

Para XML NLE, use submit_export com format:"xml":

{
  "format": "xml",
  "nleFormat": "fcp_xml_resolve",
  "timelineId": "abc123"
}

Os valores de nleFormat são fcp_xml para XML Premiere (padrão) e fcp_xml_resolve para XML DaVinci Resolve. Omita timelineId para a timeline ativa, ou passe um ID/prefixo de timeline para uma timeline não ativa. Leia e relate avisos: legendas, sólidos, SVG, atributos de clipe não suportados e gráficos em movimento não renderizados podem ser descartados pelo formato XML. Gráficos em movimento são representados no XML apenas quando um fluxo de exportação de MG transparente em ProRes fornece motionGraphicRenderKeys; caso contrário, o exportador os relata como descartados.

Para download de origem do media pool, use request_asset_download em um ativo de origem baseado em arquivo. Ele retorna uma URL/caminho de download de backend protegido para a mídia de origem original. Não use pull_asset para downloads do usuário; pull_asset é apenas para sandbox.

Para arquivos de legenda, use submit_export com format:"subtitles":

{
  "format": "subtitles",
  "subtitleFormat": "srt"
}

Os formatos são srt e txt. A exportação usa o tempo real das palavras na timeline do item de legendas, escopo de origem, variantes de tradução, substituições de texto de exibição e campos de ritmo como wordsPerPage / maxCharactersPerLine, e cria um trabalho de exportação durável para download. É apropriado para arquivos de legenda para download. Ainda não reutiliza o planejador de páginas de legenda Remotion do navegador, portanto, as quebras de linha/página visuais são temporalmente corretas, mas aproximadas em vez de idênticas byte a byte à paginação de legenda queimada. Para timelines não ativas, passe timelineId de manage_timelines ou read_project.

Para um gráfico em movimento como ProRes 4444 transparente, use export_motion_graphic_prores:

{
  "itemId": "abc123",
  "filenameMode": "asset"
}

Prefira itemId ao exportar uma instância de timeline específica, porque o item carrega propertyOverrides ativas, como texto editado. Use assetId para um gráfico em movimento do media pool; o backend usará a primeira instância de timeline para esse ativo quando presente, correspondendo ao comportamento de exportação do media pool do editor. Para vários gráficos em movimento, passe itemIds ou assetIds em uma chamada. Cada gráfico em movimento ainda se torna uma renderização durável separada; use track_export com os renderIds retornados para aguardar, depois baixe através de cada caminho de download de renderização retornado.

Ao preparar XML que deve referenciar gráficos em movimento renderizados, passe "filenameMode":"xml" e o mesmo timelineId para export_motion_graphic_prores, em seguida, mantenha as motionGraphicRenderKey / motionGraphicRenderKeys retornadas; após a renderização ser concluída, passe essas chaves e o mesmo timelineId em submit_export.motionGraphicRenderKeys com format:"xml".

Renderização Local (esta compilação)

Toda a renderização é local: submit_export / submit_render_job acionam o serviço de renderização local (Chrome headless sobre o mesmo estado de timeline que o editor mostra), lendo a mídia diretamente de /media/uploads/ no disco. Não há requisito de S3, CLI ou trabalho em nuvem para aguardar ativos baseados em disco.

  • submit_export: legendas/XML retornam de forma síncrona; vídeo/áudio também renderizam na chamada nesta compilação (timelines longas podem demorar — avise o usuário em vez de fazer polling).
  • submit_render_job + track_export: a rota assíncrona — retorna um renderId imediatamente, faça polling com track_export (renderIds / latest / onlyActive), depois entregue ao usuário o caminho de download retornado.
  • Ativos ainda em placeholders blob: (upload em andamento) ainda não podem ser renderizados — aguarde track_progress target=upload reportar pronto antes de enviar.

Fallbacks

Se uma renderização falhar porque os bytes de um ativo estão faltando (placeholder nunca religado, arquivo excluído do disco):

  1. Peça ao usuário para religar o ativo em 我的素材 (离线素材横幅) ou reimportar o arquivo.
  2. Para mídia com origem em URL, execute download_media novamente para restaurar os bytes, depois reenvie.

Não diga ao usuário que ele precisa entender HTML-in-Canvas, Remotion ou detalhes internos de armazenamento, a menos que esteja depurando. Explique no nível do produto:

  • "本地快速导出"
  • "素材还在上传,稍等再导"
  • "需要先重新链接本地素材"

Rastreamento de Resultados

Para submit_export, registre:

  • renderId
  • timeline/intervalo/resolução/codec/fps
  • que o usuário pode baixar do painel de trabalhos de renderização do editor

Registre IDs de ativos carregados e qualquer fallback tentado quando a exportação em nuvem foi bloqueada por ativos apenas locais.

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

0xsline/openchatcut

Connect an MCP-capable coding agent to OpenChatCut and edit local video projects. Use when the user asks to install, connect, or set up OpenChatCut; inspect or edit an OpenChatCut project; work with its timeline, transcript, captions, media, generation, motion graphics, audio, color, or export tools; or recover from an OpenChatCut MCP error.

0xsline/openchatcut

Use when acquiring or importing media into a OpenChatCut project asset library for video editing or creation, including local/attached videos, user-provided paths, public media URLs, web video/audio/image assets, upload fallback decisions, and deciding between import_media, download_media, or manual user action.

0xsline/openchatcut

AI image generation via Fal.ai, gpt-image-2, nano-banana, MiniMax image-01, and xAI Grok Imagine. Use when the user wants to generate or create an image / picture / still.

0xsline/openchatcut

Use when a OpenChatCut tool call fails or returns an unexpected shape.

0xsline/openchatcut

Music generation via Mureka, MiniMax, Atlas Cloud, and Sonilo. Use for instrumentals, songs, soundtracks, track/stem generation, covers, or video-conditioned scoring of the finished cut through `submit_music`.

0xsline/openchatcut

OpenChatCut product knowledge — UI layout, editor features, and how generation providers are configured. Use when the user asks about the product interface, how to use a feature, where to find something, or needs GUI guidance for something the agent cannot do directly. Also use as fallback when a task fails and the user needs to complete it manually in the UI. NOT for live project-state queries ("where are my folders?", "what's on my timeline?", "where is clip X?") — those are answered by `read_project`, not by this skill.

0xsline/openchatcut

AI shader generator for WebGL video effects, transitions, masks, and color grading (LUT / 调色 / 电影感 / film look). Use when the user wants a video effect (滤镜 / 特效), a transition (转场 / crossfade / wipe / cube / 3d), a mask (蒙版 / 遮罩 / reveal), a zoom / push-in (推近 / 推镜头), or a color grade — try the built-in effects (zoom, builtin LUTs) before generating a new shader.

0xsline/openchatcut

Use when checking whether agent edits are reflected in the OpenChatCut project and editor.

0xsline/openchatcut

AI video generation via Fal.ai, Seedance 2.0, Kling, MiniMax Hailuo, xAI Grok Imagine, and OFox. Use when the user wants to generate a video clip — text-to-video, image-to-video, first/last-frame transitions, reference-guided generation, multi-shot, or generatively editing / extending an existing clip.

0xsline/openchatcut

Text-to-Speech (TTS), voiceover, narration placement/sync, and custom sound effects (SFX) generator. Use when the user wants generated speech from text, wants to add/replace/align narration or voiceover for an existing video/timeline, wants to keep existing voiceover synced after visual retiming edits, needs voice audition/selection, or explicitly wants a newly generated/custom sound effect that is not available in the Sound Effects library.

0xsline/openchatcut

Use when the agent should ask the user for structured input with an in-chat form, including single-select, multi-select, text fields, style pickers, or voice audition choices.

Habilidades Relacionadas