Video desde una frase
El usuario da una frase, y tú primero diseñas: defines el estilo, qué se ve en cada escena en la pantalla. Luego escribes un archivo video.json. Las cosas visibles en el tema las dibujas con código de escena. El script se encarga de la sincronización, la música, los subtítulos, la codificación y la autoverificación.
En los comandos siguientes, SKILL debe reemplazarse con la ruta absoluta del directorio donde se encuentra este archivo (por ejemplo, /home/me/skills/one-prompt-video). Todos los comandos se ejecutan en el directorio de trabajo actual del usuario, y las rutas de los archivos son relativas a él.
Cinco pasos
1. Preparar el entorno (ejecutar una vez por cada directorio de trabajo)
node "SKILL/scripts/setup.mjs"
Verifica Node, las bibliotecas de dibujo, ffmpeg y las fuentes chinas. Si falta algo, lo instala o te dice cómo instalarlo. Cuando todo esté [Aprobado], continúa. Si hay algún [Faltante], dile al usuario exactamente esas líneas.
2. Diseñar (no preguntes al usuario, decide tú mismo, y al final dile al usuario qué decidiste)
Crea una nueva carpeta en el directorio de trabajo actual (con el nombre del video, de ahora en adelante nombre-del-video/). Primero escribe el diseño en nombre-del-video/diseño.md, con unas pocas líneas es suficiente. Después de escribir el diseño, escribe el resto. Un video solo con tarjetas de texto es aburrido; este paso determina si el video será bueno.
Completa lo que el usuario no dijo
| Lo que el usuario no dijo | Valor por defecto |
|---|---|
| Duración | Alrededor de 30 segundos, de 5 a 8 escenas |
| Horizontal o vertical | Horizontal 16:9; si menciona móvil, vertical, Douyin, Xiaohongshu, WeChat Video, usa 9:16 |
| Idioma | El mismo que el del usuario |
| Voz en off | No. Por defecto solo subtítulos y música. Este skill no incluye servicio de locución: cuando el usuario quiera voz en off, primero dile que debe preparar su propia locución (un TTS que funcione desde la línea de comandos, o su propia grabación), y luego sigue references/voice.md para integrarlo |
Define el estilo
- Si el usuario quiere ambiente, historia, escena, personajes, o dice "no explicación", "que tenga imágenes", "como una película": este video no usará plantillas, todo será dibujado por ti. Ve a
references/film.mdy síguelo. - Para el resto de los videos, elige un paquete de estilo de la tabla siguiente. Cada paquete de estilo viene con escenas, accesorios, personajes, transiciones y efectos de sonido, las imágenes son mucho más ricas que los temas integrados. Elige según el tema: primero mira la columna "Adecuado para". Si coincide con más de uno, elige el que esté más cerca de los objetos reales del tema (manualidades, comida, cosas de la vida cotidiana elige
papercraftoclay, equipos y procesos eligeisometric, cuentas y rendimiento eligedashboard). Si el usuario menciona específicamente una apariencia ("como jugar un videojuego", "como un chat", "como un noticiero"), usa el paquete de estilo correspondiente. - Los temas integrados solo se usan en dos casos: cuando el usuario pide explícitamente algo limpio, sobrio y profesional; o cuando el contenido es serio y la decoración dificulta la lectura. En los videos con temas integrados, al menos la mitad de las escenas deben ser dibujadas por ti.
- Decide algo que recorra todo el video: un objeto real del tema (un ala de avión, un grano de café, la luna, la fachada de una tienda). Aparece al principio, luego reaparece en escenas posteriores, así el video se siente conectado.
Define cada escena
En el diseño, enumera una tabla con una fila por escena, piensa en este orden:
| Lo que esta escena debe hacer entender al espectador | Qué se ve en la pantalla | Cómo se hace (qué plantilla, o dibujado por ti) | Voz en off |
|---|
"Qué se ve en la pantalla" se refiere a la imagen: un objeto, un proceso, un gráfico, una estructura. Primero piensa en la imagen, luego en el texto. Sigue estas ocho reglas:
- Mira sin texto. Tapa todo el texto de esta escena. Si la imagen restante aún deja claro de qué se trata, la escena funciona. Si habla de un ala de avión, la imagen debe tener el ala y el flujo de aire; si habla de una suscripción de café, la imagen debe tener la caja, las bolsas de granos y las tarjetas de preparación.
- Las cosas visibles se dibujan. Los objetos reales, procesos y estructuras se dibujan usando
layout: "custom"con código de escena, segúnreferences/custom-scenes.md. La escena más importante de todo el video debe ser dibujada por ti; al menos dos escenas dibujadas por ti en un video, mejor si es más de un tercio. - Elige la plantilla según la forma de la información, deja que la plantilla muestre la relación. Compara tamaños con
bars, orden secuencial consteps, comparación de dos lados concompare, una cantidad real connumber(los números de serie, horas, identificaciones no son cantidades, no usesnumber).statementmáximo una escena en todo el video,bulletsmáximo una escena,quotesolo para citas reales. - No escribas etiquetas y explicaciones secundarias.
kicker,subtitle,note,label,ctay eltitlede cada escena no se escriben por defecto. Solo escríbelos si sin ellos el espectador no entendería la escena. La relación que ya expresa la plantilla no necesita repetirse con palabras: un gráfico de barras no necesita un título como "Comparación de cuatro trimestres", los pasos no necesitan escribir "Paso uno", la tarjeta de comparación no necesita escribir "Comparación". - La imagen y la voz en off se complementan. La voz en off (
say) usa oraciones completas, habla de lo que aparece en la pantalla; en la pantalla solo deja imágenes, palabras clave y números. La misma frase no se escribe en grande y en los subtítulos al mismo tiempo. - Dos escenas consecutivas deben ser diferentes. No uses la misma plantilla dos veces seguidas; si la escena anterior era un texto grande centrado, la siguiente debe ser una imagen o un gráfico.
- Usa los puntos destacados con moderación. Un número grande y una frase clave solo una vez en todo el video.
- Principio y final. La primera escena usa
title, y en las dos primeras escenas debe quedar claro de qué trata este video. La última escena usaend, y termina con una conclusión o una acción; el final es más pequeño y más corto que el principio: una frase, más ese objeto que recorre todo el video.
Si no puedes ver imágenes ni escribir código de escena, no puedes cumplir la regla 2: usa el paquete de estilo y las plantillas de todos modos, y al informar, dile honestamente al usuario que este video se basa principalmente en plantillas de texto.
3. Escribir video.json y el código de las escenas
Escribe nombre-del-video/video.json según el diseño:
{
"title": "Una frase, un video",
"theme": "papercraft",
"aspect": "16:9",
"seconds": 30,
"scenes": [
{ "layout": "title", "title": "Una frase, un video", "say": "Di una frase y obtén un video corto." },
{ "layout": "custom", "module": "scenes/pipeline.mjs", "seconds": 7, "cues": 3, "say": "Dices una frase, el modelo diseña, llena la tabla, el script lo convierte en video." },
{ "layout": "bars", "unit": "segundos", "items": [{ "label": "1ª vez", "value": 68 }, { "label": "2ª vez", "value": 51 }, { "label": "3ª vez", "value": 57 }], "say": "El modelo pequeño lo probó tres veces, cada vez alrededor de un minuto." },
{ "layout": "custom", "module": "scenes/laptop.mjs", "seconds": 6, "say": "Una computadora portátil normal puede generar el video." },
{ "layout": "end", "title": "Pruébalo ahora", "say": "Pruébalo ahora mismo." }
]
}
secondses la duración objetivo de todo el video, el script la usará para asignar el tiempo a cada escena, es normal que el video final se desvíe hasta 3 segundos (cada escena debe tener una cantidad entera de fotogramas, y hay un fundido de salida de más de un segundo al final). Si no se especifica, se estima automáticamente según el número de caracteres.sayes el subtítulo de esa escena (y también el guion de locución si la hay). Una oración por escena, dentro de 30 caracteres chinos (12 palabras en inglés).- Para las escenas dibujadas por ti, el código de la escena se coloca en
nombre-del-video/scenes/. Después de escribir cada escena, primero genera un fotograma fijo (--still) para ver cómo se ve; solo cuando reconozcas lo que se muestra, pasa a la siguiente. - El texto en la pantalla es para que la gente lo vea de un vistazo, debe ser corto. Si no cabe, divide la escena en dos, no llenes una escena por completo.
- No inventes hechos. Los números, citas, nombres de personas o empresas que el usuario no haya proporcionado no deben presentarse como reales. Para los números de ejemplo, explica en la voz en off que son ilustrativos. Las funciones y efectos del producto solo usan lo que el usuario ha dicho; cualquier explicación adicional que añadas, enumérala al final en el informe para que el usuario la verifique.
Un ejemplo completo con solo plantillas está en SKILL/assets/example.video.json.
4. Validar y generar el video
node "SKILL/scripts/make.mjs" nombre-del-video/video.json --check # Primero validar, unos segundos
node "SKILL/scripts/make.mjs" nombre-del-video/video.json --sheet # Generar hoja de vista previa, revisar antes de generar el video
node "SKILL/scripts/make.mjs" nombre-del-video/video.json # Generar el video
- Cuando
--checkreporta[Error], cada error dice en qué escena, qué campo y la forma correcta de escribirlo. Corrígelo y vuelve a ejecutar hasta que pase. - Si puedes ver imágenes, abre
nombre-del-video/out/sheet.jpgy revisa fotograma por fotograma. Dos fotogramas por escena: el primero es la entrada a mitad de camino, el segundo es todo presente, el segundo es el que importa. Pregunta cuatro cosas por cada fotograma: ¿se entiende de qué se trata si tapa el texto? ¿el sujeto es lo suficientemente grande (ocupa más del 60% del ancho o alto de la pantalla)? ¿hay un gran espacio vacío? ¿hay texto apiñado o una palabra dividida en dos líneas? Si algo no cumple, cámbialo y vuelve a generar la hoja de vista previa. - Después de generar el video, lee el informe que imprime (también se guarda en
nombre-del-video/out/report.txt). Si hay[Problema]o[Aviso], cámbialo y vuelve a ejecutar; el más común es "demasiado texto", acorta ese texto.
5. Informar al usuario
Dile cuatro cosas claramente: dónde está el video final (la ruta en la línea "Video final:" del informe, el nombre del archivo es title más .mp4); qué decidiste por él (duración, formato de pantalla, estilo, qué escenas están dibujadas por ti); qué contenido agregaste tú; y que no puedes juzgar si las imágenes son bonitas o la música es agradable, que él las revise. Si el video final no tiene voz en off, menciona de paso: si quiere agregar locución, debe encontrar un TTS él mismo e integrarlo.
Paquetes de estilo
Cada paquete de estilo es un conjunto completo de imágenes: las nueve plantillas se rediseñan según su propia apariencia, con sus propias escenas, accesorios, transiciones, subtítulos y efectos de sonido. Solo escribe su nombre en theme.
| theme | Apariencia | Adecuado para |
|---|---|---|
papercraft | Diorama de papel multicapa, figuras de papel, parpadeo de stop motion | Divulgación ligera, presentaciones de productos, historias cortas, estilo de vida |
clay | Stop motion de arcilla de colores cálidos, personajes pequeños y redondos | Explicaciones para principiantes, hábitos y salud, contenido para niños |
collage | Papel kraft, papel rasgado, cinta adhesiva, letras recortadas | Divulgación ligera, recopilaciones, apertura de secciones |
skit | Ilustración plana de oficina, dos personajes pequeños reaccionan al contenido | Explicar conceptos a audiencias no profesionales, temas laborales |
isometric | Máquinas 2.5D, cintas transportadoras, puestos de control | Explicar procesos, principios, cómo funciona un sistema |
cosmos | Espacio profundo, nebulosas, estrellas y órbitas brillantes | Explicar el panorama general, niveles, apertura de series |
dashboard | Panel de datos oscuro: paneles que se encienden uno a uno, arcos de instrumentos, gráficos de barras | Resultados, evaluaciones, monitoreo, costos y otros contenidos con números |
news | Estudio de televisión, barra de títulos, barra de noticias en desplazamiento | Resúmenes rápidos, informes semanales, informes de datos |
chat | Conversación de chat en un teléfono, contenido en burbujas | Explicaciones coloquiales, casos, preguntas y respuestas |
comic | Viñetas con marco negro, puntos, líneas de velocidad, onomatopeyas | Historias con giros, contrastes |
detective | Tablero de corcho, fotos Polaroid, notas adhesivas, hilo rojo | Investigación de problemas, análisis de antecedentes |
arcade | Juego de píxeles de 8 bits: ladrillos, monedas, mapa de niveles | Explicar pasos, comparar niveles, presentaciones de productos ligeras |
variety | Letras florales con borde múltiple, líneas radiales, mascota, barra de comentarios | Los videos cortos más animados, críticas, recopilaciones |
vhs | Cinta VHS: líneas de escáner, cambio de canal, televisor antiguo, contador de cinta | Nostalgia, intro y avance de programas de series |
chrome | Letras 3D cromadas, degradado líquido fluido, destellos en estrella | Frases cortas para jóvenes, temas de moda, no adecuado para contenido serio |
Las imágenes de vista previa están en SKILL/assets/styles.jpg. Si puedes ver imágenes, míralas antes de elegir. Los paquetes de estilo tienen mucha decoración, por lo que el texto en cada escena debe ser aún más corto; news organizará el contenido como un programa de noticias, si el contenido no es realmente una noticia, recuerda al usuario en el informe.
Estos son solo puntos de partida, no hay límite en los estilos: si quieres un conjunto completamente nuevo (diario, vinilo, mapa de metro, lo que sea), sigue references/style-packs.md para escribir tu propio paquete de estilo.
Doce temas integrados
Los temas solo cambian colores, fondos y líneas, no hay escenas ni accesorios en las imágenes. Las condiciones para usarlos se encuentran en el paso 2 "Define el estilo", regla 3.
| theme | Apariencia | Adecuado para |
|---|---|---|
grid | Papel cuadriculado beige, morado, tarjetas blancas | Explicar conceptos, principios |
minimal | Gran espacio en blanco, líneas finas, un punto azul | Videos de marca tranquilos y sobrios, intros |
pop | Colores contrastantes, líneas radiales, borde negro grueso | Animados, ritmo rápido, plataformas de video corto |
keynote | Degradado oscuro, tarjetas de vidrio, brillo | Nuevos productos, conclusiones importantes, temas tecnológicos |
blueprint | Papel de plano azul, líneas blancas, anotaciones amarillas | Explicar estructuras, arquitecturas, cómo ensamblar |
whiteboard | Pizarra blanca, marcador, marcos dibujados a mano | Profesor explicando mientras dibuja, procesos y causas |
chalk | Pizarra verde oscuro, líneas de tiza, marco de madera | Pizarra de clase, explicar problemas, fórmulas, pasos |
neon | Noche púrpura oscura, líneas brillantes, cuadrícula de perspectiva | Tecnología, juegos, música electrónica |
terminal | Fondo negro, texto verde, fuente monoespaciada, cursor parpadeante | Código, línea de comandos, herramientas de desarrollo |
paper | Superficie de papel beige, título grande con serifa, rojo | Comentarios, lectura, temas de humanidades |
ink | Papel de arroz, montañas lejanas, sello rojo bermellón | Cultura tradicional, poesía, historia |
bold | Negrita en blanco y negro, cortes duros, un rojo | Opiniones, lemas, listas |
Las imágenes de vista previa están en SKILL/assets/themes.jpg. Si el usuario quiere otros colores, usa colors para cambiarlos.
Plantillas
Cada escena elige una, o dibújala tú mismo. Una escena solo habla de una cosa.
| layout | Cuándo usarlo | Obligatorio | Lo que no se escribe por defecto | Limitaciones |
|---|---|---|---|---|
custom | Cosas visibles en el tema: objetos reales, procesos, estructuras | module, seconds | cues, data | Ver references/custom-scenes.md |
title | Al principio | title | subtitle, kicker | Título de 12 caracteres o menos |
bars | Comparar tamaños | items (2 a 6 elementos, cada uno con label y valor numérico value) | title, unit (se coloca después de cada número), highlight (qué barra usa el color de énfasis, contando desde 1; si no se escribe, es la barra más alta) | label de 8 caracteres o menos |
steps | Pasos secuenciales, procesos | items (2 a 5 pasos) | title | Cada paso de 12 caracteres o menos |
compare | Comparación de dos cosas | left, right (cada uno con title y de 1 a 4 items) | title | Cada elemento de 12 caracteres o menos |
number | Una cantidad real, una vez en todo el video | value | unit, label, note | value se escribe como "25", "80%", "1,280" |
statement | Una frase para recordar, máximo una escena en todo el video | text | highlight (palabra en text que se resalta) | 24 caracteres o menos |
bullets | Varios puntos paralelos, máximo una escena en todo el video | items (2 a 5 líneas de texto) | title | Cada línea de 18 caracteres o menos |
quote | Cita real | text | by | 40 caracteres o menos |
end | Al final | title | subtitle, cta (texto del botón) | Título de 14 caracteres o menos |
unites parte del número, escríbelo cuando sea necesario. Ellabeldenumbersolo se escribe cuando el número y la unidad por sí solos no dejan claro qué se está midiendo.- Cada plantilla puede añadir
say(subtítulo) yseconds(duración fija de esa escena).
Cuando el usuario proporciona material de video (grabación real, pantalla grabada, video existente), también hay un clip: inserta un segmento del material y mézclalo con las plantillas anteriores; si todo el video es clip, es una edición. Escritura: { "layout": "clip", "file": "material/entrevista.mp4", "from": 12.4, "to": 18 }. Cómo ver el material y cómo decidir qué segmento tomar, ver references/editing.md.
Para más opciones
| Necesidad | Lee |
|---|---|
| Dibujar una escena tú mismo: objetos reales, procesos, estructuras (necesario para cada video) | references/custom-scenes.md |
| El usuario quiere ambiente, historia, escena, personajes, o todo el video es diseñado por ti | references/film.md (tú escribes cómo se dibuja cada fotograma, el script maneja la cámara, la música, la generación y la autoverificación; debes poder ver imágenes) |
| Todos los campos, cambiar colores, fuentes, fijar la duración de una escena | references/video-json.md |
| Añadir voz en off (el usuario debe encontrar su propio TTS o grabar él mismo), reemplazar el archivo de música por el suyo | references/voice.md, references/video-json.md |
| El usuario proporciona material de video para incluir, o quiere editar un video existente | references/editing.md |
El usuario quiere editar en Final Cut Pro o CapCut (agrega --project al comando de generación) | references/editing.md |
| Los temas y paquetes de estilo disponibles no son adecuados, quiere un conjunto completamente nuevo | references/style-packs.md (escribe un paquete de estilo, necesitas escribir cientos de líneas de código de escena y modificarlas viendo las imágenes, primero asegúrate de que puedes hacerlo) |
| Error de instalación, recuadros en las fuentes, error de ffmpeg | references/troubleshooting.md |
| El usuario pide explícitamente escenas 3D, paisajes naturales con sombreadores de pantalla completa que no se pueden dibujar en el lienzo | references/pipelines.md (consulta las líneas de producción, necesitas escribir tu propio código, primero asegúrate de que puedes hacerlo) |
| La máquina del usuario tiene Blender, GarageBand, o una clave de API de Doubao Voice, quiere renderizado fotorrealista, música de instrumentos reales, voz humana natural | references/external-tools.md (usa herramientas externas, para modelos potentes, primero asegúrate de que puedes hacerlo) |
Lo que este skill no puede hacer: generar imágenes de personas reales o grabaciones reales de la nada (las grabaciones reales solo pueden usar el material proporcionado por el usuario), hacer ajustes de color o recortes finos en el material (exporta el proyecto para que el software de edición lo haga). Si te encuentras con estas necesidades, díselo honestamente al usuario.