Communitygithub.com

0xsline/openchatcut

Úsalo cuando el agente deba solicitar al usuario entrada estructurada mediante un formulario en el chat, que incluye selección única, selección múltiple, campos de texto, selectores de estilo u opciones de audición de voz.

¿Qué es openchatcut?

Esta habilidad permite que el agente de IA solicite entrada estructurada del usuario a través de formularios interactivos en el chat, utilizando la función `ask_followup_questions`. Los formularios se renderizan como tarjetas nativas en el editor, y las respuestas del usuario se devuelven como su siguiente mensaje. Soporta hasta 12 campos de distintos tipos: selección única, selección múltiple, texto, tarjetas visuales (con previsualizaciones de imagen), tarjetas de voz (con muestras de audio) y escenarios iniciales nativos de OpenChatCut. La habilidad está diseñada para plataformas que soportan MCP, como el editor de OpenChatCut. El flujo de trabajo implica planificar todo el cuestionario antes de llamar a la herramienta, detener el turno después de la llamada y esperar la respuesta del usuario. Se proporcionan pautas detalladas para el tono de los textos del formulario (cálido, orientado a la acción, en el idioma del usuario), el mapeo de tipos de campos nativos y la gestión de opciones de selección, incluyendo la opción 'otro' y placeholders. Se recomienda no incluir preguntas de carga de archivos en los formularios; si se necesitan archivos multimedia, se debe solicitar al usuario que los suba por separado. La habilidad incluye ejemplos prácticos de formularios para la ideación de videos, con opciones predefinidas y la posibilidad de describir una necesidad diferente.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Widget Forms

Usa la herramienta de formularios en lugar de escribir marcado a mano: el chat del editor renderiza el formulario como una tarjeta interactiva y devuelve la respuesta estructurada del usuario.

Regla de ejecución

Llama a ask_followup_questions. Esta serializa tus campos en la tarjeta de formulario nativa del editor; la respuesta del usuario llega como su siguiente mensaje.

Planifica todo el cuestionario antes de llamar a la herramienta. Envía un formulario final, no un formulario de prueba seguido de uno corregido. La herramienta soporta un máximo de 12 campos; si el usuario solicita más preguntas, fusiona indicaciones relacionadas en campos combinados antes de la primera llamada.

Después de llamar a ask_followup_questions, detén el turno y espera a que la respuesta enviada aparezca en el chat. No apliques una opción, crees activos ni continúes planificando a partir de una recomendación hasta que la selección del usuario esté presente en la conversación.

Mapeo de campos soportados

Construye un arreglo fields. Escribe cada cadena visible en el idioma de la conversación del usuario.

  • Nativo <form-single> -> { type: "single", variant: "default" }
  • Nativo <form-multi> -> { type: "multi", variant: "default" }
  • Nativo <form-text> / <form-textarea> -> { type: "text" }
  • Nativo <form-visual> -> { type: "single", variant: "visual" }
  • Tarjetas de audición de voz -> { type: "single", variant: "voice" }
  • Tarjetas de escenario inicial nativo -> { type: "single", variant: "scenario" }

Tono del texto del formulario

Para el texto a nivel de formulario (title, prompt, fields[].label, submitLabel y messagePrefix), escribe como si OpenChatCut fuera un compañero de creación de video capaz que invita al usuario a describir lo que quiere, no como una encuesta rígida.

Apunta a:

  • Cálido, abierto y orientado a la acción. El texto debe implicar "elige la necesidad de video más cercana o simplemente cuéntame tu idea; podemos resolverlo juntos".
  • Corto y escaneable. Usa una oración natural para prompt y etiquetas de pregunta concisas.
  • Marco de capacidades honesto. OpenChatCut puede ayudar con muchos flujos de trabajo de video, pero no afirmes habilidades no compatibles ni garantices un resultado antes de conocer las entradas.
  • El idioma del usuario y términos de producto locales. Mantén "OpenChatCut", "B-roll", "Motion Graphics", "MG 动画", nombres de modelos/productos y nombres de plataformas en sus formas establecidas.
  • Redacción creativa orientada al usuario. Para formularios de planificación inicial o creativos, prefiere términos naturales como idea, dirección, plan, historia, lista de tomas, audiencia, estado de ánimo o necesidad de video en lugar del lenguaje interno de producción de documentos.

Evita etiquetas rígidas como "Seleccionar tipo de video", "Por favor, elige el tipo de video para este proyecto" o "¿Qué tipo de video quieres hacer?" para la recepción de escenarios, a menos que el anfitrión no tenga espacio para un texto más cálido.

Para un formulario de recepción de escenarios, prefiere un texto como:

{
  "title": "¿Qué quieres crear?",
  "prompt": "Elige el escenario de video más cercano, o elige Otra cosa y describe tu idea.",
  "submitLabel": "Empezar a crear",
  "messagePrefix": "Quiero empezar con esta dirección de video:",
  "fields": [
    {
      "id": "scenario",
      "label": "¿Qué escenario se ajusta mejor a tu video?",
      "type": "single",
      "variant": "scenario",
      "otherPlaceholder": "Por ejemplo: convertir mis imágenes de viaje en un vlog atmosférico / hacer un video de lanzamiento para un nuevo producto"
    }
  ]
}

No incluyas preguntas de carga de archivos en los formularios. Si una tarea realmente necesita medios fuente y el proyecto/chat aún no los tiene, pide al usuario por separado que suba archivos en el editor (arrastrar y soltar o el botón de subida, o pegar en el compositor del chat). La carga de archivos no es un requisito previo predeterminado para cada cuestionario; solo solicítala cuando el siguiente paso de edición dependa de medios faltantes.

Para campos de opción:

  • Usa id para el valor interno que necesita la siguiente llamada a la herramienta.
  • Usa label para lo que ve el usuario.
  • Para tarjetas comunes de selección única y selección múltiple (variant: "default"), mantén las opciones solo con etiqueta. No agregues description por opción a menos que el usuario no pueda distinguir las opciones solo con las etiquetas.
  • Usa description principalmente para tarjetas de voz. Las tarjetas de estilo visual generalmente deben usar solo preview + label.
  • Cuando sea aceptable una respuesta fuera de la lista, agrega una opción explícita con id: "__other__" y un label en el mismo idioma que el resto del formulario, usando la palabra que el usuario esperaría para una respuesta fuera de la lista. El widget convertirá esta opción en una entrada de texto cuando se seleccione. Usa otherPlaceholder si la entrada de texto necesita un marcador de posición.

Para tarjetas visuales:

  • Usa URLs de imagen reales o URLs de datos de imagen en preview.
  • Para opciones del catálogo de Estilo de Diseño, primero llama a manage_design_style con action: "list", luego mapea cada preset devuelto a { id: preset.presetId, label: preset.name } (sin miniaturas en esta versión).
  • Nunca codifiques IDs de preset de catálogo a menos que el usuario ya haya seleccionado uno.

Para tarjetas de voz:

  • Usa audioUrl para el archivo de muestra.
  • Prefiere la ruta de muestra documentada como /voice-samples/doubao-liuchang.mp3 o una URL HTTPS pública. No pases URLs de muestra de localhost; los iframes del host MCP no resuelven de manera confiable los medios locales del editor.
  • Mantén las descripciones visibles para el usuario neutrales respecto al proveedor. Describe la voz de la misma manera que lo hace la interfaz nativa de audición de OpenChatCut: género / rango de edad / tono / caso de uso, como "Female / young / friendly, general" o "男 / 中年 / 低沉知识解说". No muestres nombres de proveedores como ElevenLabs o Doubao en las descripciones de las opciones.
  • Mantén el id de la opción igual al ID de voz del proveedor necesario para submit_voice.

Para tarjetas de escenario inicial nativo:

  • Usa esto cuando el usuario deba elegir qué flujo de trabajo de video de OpenChatCut iniciar, como edición de talking head, animación MG, video largo a cortos, promoción de producto/app, cortometraje AI o video explicativo.
  • Preséntalos como necesidades/escenarios de video comunes, no como los únicos flujos de trabajo de video posibles. El formulario también debe permitir que el usuario describa una necesidad de video diferente.
  • Usa exactamente un campo de selección única con variant: "scenario".
  • Proporciona opciones usando los IDs canónicos a continuación y etiquetas localizadas en el idioma del usuario. Incluye id: "__other__" solo cuando necesites personalizar la etiqueta fuera de lista; de lo contrario, el backend añade una opción Otra cosa localizada.
  • Las etiquetas/descripciones/indicaciones de inicio de escenario en inglés, chino y español están integradas. Para cualquier otro idioma del usuario, traduce fielmente al idioma del usuario la label, description y la indicación de inicio de cada escenario en inglés y pasa esos valores localizados en los objetos de opción. Conserva los términos de producto de OpenChatCut y el significado del flujo de trabajo; no agregues nuevos requisitos. Usa submitPrompt para la indicación de inicio traducida. Esta anulación es específica de variant: "scenario"; las tarjetas de opción comunes, tarjetas de voz y tarjetas de estilo visual ya obtienen su texto visible de los valores que pases.
  • No proporciones preview o audioUrl personalizados; el backend llena la imagen de vista previa de la primera pantalla nativa.
  • IDs canónicos: talking-head, motion-graphics, long-video-to-shorts, app-promo, ai-cinematic-short-film, explainer, más __other__ para una necesidad de video de formato libre.
  • Ejemplo de opciones: { "id": "talking-head", "label": "Edición de Talking Head" }, { "id": "motion-graphics", "label": "Motion Graphics" }, { "id": "long-video-to-shorts", "label": "Video largo a cortos" }, { "id": "app-promo", "label": "Promoción de Producto/App" }, { "id": "ai-cinematic-short-film", "label": "Cortometraje AI" }, { "id": "explainer", "label": "Video explicativo" }, { "id": "__other__", "label": "Otra cosa" }.

Brechas actuales

ask_followup_questions es solo para respuestas estructuradas. No soporta HTML personalizado nativo, puentes de parámetros de línea de tiempo, selección de elementos del editor ni campos de carga de archivos. Para archivos que ya están en poder del entorno de ejecución del agente o adjuntos directamente al chat fuera de esta tarjeta, el flujo de trabajo de importación de medios sigue siendo válido: llama a import_media y ejecuta la ruta de carga de ayuda/directa. Para archivos que el usuario quiera colocar directamente en un proyecto, pídele que use la interfaz de subida del editor de OpenChatCut.

Ejemplo

{
  "title": "Tu idea de video",
  "prompt": "Elige o completa lo que tienes en mente para que OpenChatCut pueda elegir una buena dirección inicial.",
  "submitLabel": "Enviar idea",
  "messagePrefix": "Continúa con esta dirección de video:",
  "fields": [
    {
      "id": "goal",
      "label": "¿Cuál es el objetivo principal de este video?",
      "type": "single",
      "options": [
        { "id": "product_intro", "label": "Introducción de producto" },
        { "id": "social_ad", "label": "Anuncio social" },
        { "id": "__other__", "label": "Otra cosa" }
      ]
    },
    {
      "id": "elements",
      "label": "¿Qué debería incluir? (Selecciona todas las que apliquen)",
      "type": "multi",
      "options": [
        { "id": "broll", "label": "B-roll" },
        { "id": "logo", "label": "Logotipo de marca" },
        { "id": "__other__", "label": "Otra cosa" }
      ]
    }
  ]
}

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.

Skills relacionados