Communitygithub.com

0xsline/openchatcut

Use quando o agente deve solicitar entrada estruturada do usuário por meio de um formulário no chat, incluindo seleção única, seleção múltipla, campos de texto, seletores de estilo ou opções de teste de voz.

O que é openchatcut?

Esta skill capacita o agente a criar formulários interativos diretamente no chat, guiando o usuário por um processo de entrada estruturada antes de executar ações. Em vez de gerar marcação manual, a skill utiliza a ferramenta `ask_followup_questions` que renderiza um cartão de formulário nativo, e a resposta do usuário retorna como a próxima mensagem no chat. Ela suporta campos de seleção única e múltipla, texto livre, seletores visuais de estilo, cartões de teste de voz e cartões de cenário de início nativos. É fundamental planejar todo o questionário antes de invocar a ferramenta e enviar um único formulário final (no máximo 12 campos), aguardando a resposta do usuário antes de prosseguir. O tom da cópia do formulário deve ser caloroso, aberto e orientado à ação, como um parceiro criativo de edição de vídeo. Funciona em agentes que implementam a chamada de ferramenta `ask_followup_questions` (como Claude Code, Cursor, Windsurf, Cline, Roo Code, entre outros) e é ideal para fluxos de descoberta criativa, planejamento de projetos e coleta de requisitos do usuário.

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

Perguntar na sua IA favorita

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

Documentação

Formulários com Widgets

Use a ferramenta de formulário em vez de escrever marcação manualmente: o chat do editor renderiza o formulário como um cartão interativo e retorna a resposta estruturada do usuário.

Regra de Execução

Chame ask_followup_questions. Ela serializa seus campos no cartão de formulário nativo do editor; a submissão do usuário volta como a próxima mensagem.

Planeje todo o questionário antes de chamar a ferramenta. Envie um formulário final, não um formulário de teste seguido de um formulário corrigido. A ferramenta suporta no máximo 12 campos; se o usuário solicitar mais perguntas, mescle prompts relacionados em campos combinados antes da primeira chamada.

Após chamar ask_followup_questions, interrompa a rodada e aguarde a resposta submetida aparecer no chat. Não aplique uma escolha, crie ativos ou continue o planejamento a partir de uma recomendação até que a seleção do usuário esteja presente na conversa.

Mapeamento de Campos Suportados

Construa um array fields. Escreva toda string visível no idioma da conversa do usuário.

  • <form-single> nativo -> { type: "single", variant: "default" }
  • <form-multi> nativo -> { type: "multi", variant: "default" }
  • <form-text> / <form-textarea> nativo -> { type: "text" }
  • <form-visual> nativo -> { type: "single", variant: "visual" }
  • Cartões de teste de voz -> { type: "single", variant: "voice" }
  • Cartões de cenário de início nativo -> { type: "single", variant: "scenario" }

Tom da Cópia do Formulário

Para o texto de nível do formulário (title, prompt, fields[].label, submitLabel e messagePrefix), escreva como se o OpenChatCut fosse um parceiro capaz de criação de vídeo convidando o usuário a descrever o que deseja, não como uma pesquisa rígida.

Busque por:

  • Tom caloroso, aberto e orientado à ação. A cópia deve sugerir "escolha a necessidade de vídeo mais próxima ou apenas me conte sua ideia; podemos descobrir juntos."
  • Texto curto e escaneável. Use uma frase natural para prompt e rótulos de perguntas concisos.
  • Enquadramento honesto de capacidades. O OpenChatCut pode ajudar com muitos fluxos de trabalho de vídeo, mas não afirme habilidades não suportadas nem garanta um resultado antes que as entradas sejam conhecidas.
  • Idioma do usuário e termos locais do produto. Mantenha "OpenChatCut", "B-roll", "Motion Graphics", "MG 动画", nomes de modelos/produtos e nomes de plataformas em suas formas estabelecidas.
  • Redação criativa voltada ao usuário. Para formulários de planejamento inicial ou captura criativa, prefira termos naturais como ideia, direção, plano, história, lista de cenas, público, clima ou necessidade de vídeo em vez de linguagem interna de documento de produção.

Evite rótulos rígidos como "Selecione o tipo de vídeo", "Por favor, escolha o tipo de vídeo para este projeto" ou "Que tipo de vídeo você quer fazer?" para captura de cenário, a menos que o host não tenha espaço para uma cópia mais calorosa.

Para um formulário de captura de cenário, prefira uma cópia como:

{
  "title": "O que você quer fazer?",
  "prompt": "Escolha o cenário de vídeo mais próximo, ou escolha Outra coisa e descreva sua ideia.",
  "submitLabel": "Começar a criar",
  "messagePrefix": "Quero começar com esta direção de vídeo:",
  "fields": [
    {
      "id": "scenario",
      "label": "Qual cenário se encaixa melhor no seu vídeo?",
      "type": "single",
      "variant": "scenario",
      "otherPlaceholder": "Por exemplo: transformar minhas imagens de viagem em um vlog atmosférico / fazer um vídeo de lançamento para um novo produto"
    }
  ]
}

Não inclua perguntas de upload de arquivos em formulários. Se uma tarefa realmente precisar de mídia de origem e o projeto/chat ainda não a tiver, peça ao usuário separadamente para fazer upload de arquivos no editor (arrastar e soltar ou o botão de upload, ou colar no compositor do chat). Upload de arquivo não é um pré-requisito padrão para todo questionário; só solicite quando o próximo passo de edição depender de mídia ausente.

Para campos de escolha:

  • Use id para o valor interno que a próxima chamada de ferramenta precisará.
  • Use label para o que o usuário vê.
  • Para cartões comuns de seleção única e múltipla (variant: "default"), mantenha apenas rótulos nas opções. Não adicione description por opção a menos que o usuário não consiga distinguir as escolhas apenas pelos rótulos.
  • Use description principalmente para cartões de voz. Cartões de estilo visual geralmente devem usar apenas preview + label.
  • Quando uma resposta fora da lista for aceitável, adicione uma opção explícita com id: "__other__" e um label no mesmo idioma do restante do formulário, usando a palavra que o usuário esperaria para uma resposta fora da lista. O widget transformará esta opção em uma entrada de texto quando selecionada. Use otherPlaceholder se a entrada de texto precisar de um placeholder.

Para cartões visuais:

  • Use URLs reais de imagem ou URLs de dados de imagem em preview.
  • Para escolhas do catálogo de Design Style, chame manage_design_style com action: "list" primeiro, depois mapeie cada preset retornado para { id: preset.presetId, label: preset.name } (sem miniaturas nesta versão).
  • Nunca codifique ids de preset do catálogo a menos que o usuário já tenha selecionado um.

Para cartões de voz:

  • Use audioUrl para o arquivo de amostra.
  • Prefira o caminho de amostra documentado como /voice-samples/doubao-liuchang.mp3 ou uma URL HTTPS pública. Não passe URLs de amostra localhost; os iframes do host MCP não resolvem mídia local do editor de forma confiável.
  • Mantenha as descrições visíveis ao usuário neutras em relação ao provedor. Descreva a voz da mesma forma que a UI de teste nativa do OpenChatCut: gênero / faixa etária / tom / caso de uso, como Feminina / jovem / amigável, geral ou Masculino / meia-idade / locução séria de conhecimento. Não mostre nomes de provedores como ElevenLabs ou Doubao nas descrições das opções.
  • Mantenha o id da opção igual ao id da voz do provedor necessário para submit_voice.

Para cartões de cenário de início nativo:

  • Use isto quando o usuário deve escolher qual fluxo de trabalho de vídeo do OpenChatCut iniciar, como edição de talking head, animação MG, vídeo longo para curtas, promo de produto/app, curta-metragem de IA ou vídeo explicativo.
  • Apresente-os como necessidades/cenários comuns de vídeo, não como os únicos fluxos de trabalho de vídeo possíveis. O formulário também deve permitir que o usuário descreva uma necessidade de vídeo diferente.
  • Use exatamente um campo de seleção única com variant: "scenario".
  • Forneça opções usando os ids canônicos abaixo e rótulos localizados no idioma do usuário. Inclua id: "__other__" apenas quando precisar personalizar o rótulo da opção fora da lista; caso contrário, o backend anexa uma opção Outro localizada.
  • Rótulos/descrições/prompts iniciais de cenário em inglês, chinês e espanhol já estão embutidos. Para qualquer outro idioma do usuário, traduza fielmente o label, description e prompt inicial em inglês de cada cenário para o idioma do usuário e passe esses valores localizados nos objetos de opção. Preserve os termos do produto OpenChatCut e o significado do fluxo de trabalho; não adicione novos requisitos. Use submitPrompt para o prompt inicial traduzido. Esta substituição é específica para variant: "scenario"; cartões de opção comuns, cartões de voz e cartões de estilo visual já obtêm seu texto visível dos valores que você passa.
  • Não forneça preview ou audioUrl personalizados; o backend preenche a imagem de pré-visualização da primeira tela nativa.
  • Ids canônicos: talking-head, motion-graphics, long-video-to-shorts, app-promo, ai-cinematic-short-film, explainer, além de __other__ para uma necessidade de vídeo livre.
  • Exemplo de opções: { "id": "talking-head", "label": "Edição de Talking Head" }, { "id": "motion-graphics", "label": "Motion Graphics" }, { "id": "long-video-to-shorts", "label": "Vídeo Longo para Curtas" }, { "id": "app-promo", "label": "Promo de Produto / App" }, { "id": "ai-cinematic-short-film", "label": "Curta-Metragem de IA" }, { "id": "explainer", "label": "Vídeo Explicativo" }, { "id": "__other__", "label": "Outra coisa" }.

Lacunas Atuais

ask_followup_questions é apenas para respostas estruturadas. Ela não suporta HTML personalizado nativo, pontes de parâmetros da linha do tempo, seleção de itens do editor ou campos de upload de arquivo. Para arquivos já mantidos pelo runtime do agente ou anexados diretamente ao chat fora deste cartão, o fluxo de trabalho de importação de mídia ainda é válido: chame import_media e execute o caminho de upload auxiliar/direto. Para arquivos que o usuário deseja colocar diretamente em um projeto, peça que usem a UI de upload do editor OpenChatCut.

Exemplo

{
  "title": "Sua ideia de vídeo",
  "prompt": "Escolha ou preencha o que você tem em mente para que o OpenChatCut possa selecionar uma boa direção inicial.",
  "submitLabel": "Enviar ideia",
  "messagePrefix": "Continuar com esta direção de vídeo:",
  "fields": [
    {
      "id": "goal",
      "label": "Qual é o objetivo principal deste vídeo?",
      "type": "single",
      "options": [
        { "id": "product_intro", "label": "Apresentação de produto" },
        { "id": "social_ad", "label": "Anúncio para redes sociais" },
        { "id": "__other__", "label": "Outra coisa" }
      ]
    },
    {
      "id": "elements",
      "label": "O que deve incluir? (Selecione todos que se aplicam)",
      "type": "multi",
      "options": [
        { "id": "broll", "label": "B-roll" },
        { "id": "logo", "label": "Logotipo da marca" },
        { "id": "__other__", "label": "Outra coisa" }
      ]
    }
  ]
}

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

Use when a OpenChatCut video editing or creation workflow needs export, render, download, share, final delivery, subtitle-file export, render choice, local-only asset handling, or export fallback explanation.

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.

Habilidades Relacionadas