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
prompty 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
idpara el valor interno que necesita la siguiente llamada a la herramienta. - Usa
labelpara 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 agreguesdescriptionpor opción a menos que el usuario no pueda distinguir las opciones solo con las etiquetas. - Usa
descriptionprincipalmente para tarjetas de voz. Las tarjetas de estilo visual generalmente deben usar solopreview+label. - Cuando sea aceptable una respuesta fuera de la lista, agrega una opción explícita con
id: "__other__"y unlabelen 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. UsaotherPlaceholdersi 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_styleconaction: "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
audioUrlpara el archivo de muestra. - Prefiere la ruta de muestra documentada como
/voice-samples/doubao-liuchang.mp3o 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
idde la opción igual al ID de voz del proveedor necesario parasubmit_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,descriptiony 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. UsasubmitPromptpara la indicación de inicio traducida. Esta anulación es específica devariant: "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
previewoaudioUrlpersonalizados; 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" }
]
}
]
}