Empaquetado estilo 小Lin说 (Xiao Lin Shuo)
Empaqueta un conjunto de clips de entrevista en pantalla (A-roll) con su diálogo en un vídeo explicativo al estilo de Xiao Lin Shuo. Los clips de entrevista se generan o graban con otras herramientas. Este skill se encarga de buscar los datos necesarios para el empaquetado, así como de crear las explicaciones visuales, subtítulos, transiciones y sonido.
Si existe design-aesthetic-standard, las decisiones creativas visuales y de sonido también deben seguirlo. Si existe video-generation, la generación y edición de los clips de entrevista se realiza allí.
Documentos de referencia (leer según sea necesario)
references/style-bible.md: Su lenguaje gráfico, 6 reglas estrictas, paleta de colores, tipografía, imagen dentro de imagen, estadísticas de transiciones, niveles de sonido. Debe leerse antes de planificar escenas.references/research.md: Qué datos buscar para cada diseño, jerarquía de fuentes, dónde buscar, derechos de imagen. Leer al planificar escenas.references/layouts.md: Parámetros de cada componente de diseño, ejemplos de uso y trampas. Leer al escribir el storyboard.references/storyboard-api.md: Formatos detimeline.jsonyproject.json, API de storyboard, temporización por palabras clave, comandos de revisión y renderizado. Leer al configurar el proyecto por primera vez.
Entorno
- Node ≥ 18, ffmpeg, python3 (con numpy y Pillow). Se necesita conexión a Internet para
npm instally el primer renderizado (Remotion descargará Chrome). - Solo se ha probado en macOS (Apple Silicon). En otros sistemas se usará el renderizado por software
swanglede forma predeterminada; se puede cambiar con la variable de entornoREMOTION_GL. - Fuentes: La plantilla incluye 6 fuentes con licencia SIL OFL (ver
templates/engine/public/fonts/LICENSES.txt). La fuente YouShe (título en negrita) (YouShe.ttf) puede no estar incluida.new_project.shbuscará en$YOUSHE_TTFy en directorios de fuentes comunes; si no la encuentra, pedirá al usuario que la descargue desde https://www.uisdc.com/uisdc-first-free-font y la guarde comopublic/fonts/YouShe.ttf. Si falta esta fuente, los títulos y subtítulos usarán la variante más gruesa (900) de fuente Noto Sans SC, sin inclinación, y el estilo se verá notablemente reducido. - Licencia de Remotion: Personas individuales, empresas con hasta 3 empleados y organizaciones sin fines de lucro pueden usar Remotion de forma gratuita, incluido uso comercial. Empresas con 4 o más empleados deben adquirir una licencia corporativa (https://www.remotion.pro/license).
Flujo de trabajo
1. Preparar entrada
- Clips de entrevista: Un mp4 de 1920×1080 por cada línea de diálogo, colocado en
public/clips/<id>.mp4. - Diálogo: Cada línea tiene un texto de lectura
say(escritura china) y un texto de subtítulosub. - Archivo de hechos: Copia de
templates/facts_template.md. Escribe primero los hechos y fuentes ya existentes; los que falten se buscarán en el paso 4. - Opcional: Imágenes reales o generadas por IA (
public/broll/), fotos (public/photos/), música (public/music/), nuevos iconos (public/icons/).
2. Configurar proyecto
<skill>/scripts/new_project.sh <directorio_del_proyecto> # con --demo genera 4 clips falsos y un storyboard de ejemplo para pruebas de humo
Luego escribe timeline.json. Transcribe cada clip de entrevista, determina tin/tout, recorta el silencio al inicio y final; los errores de dicción intermedios se escriben en cuts. Modifica brand y music en project.json.
3. Planificar escenas (primero tabla, luego código)
Lee style-bible.md y research.md, luego elabora una tabla: nombre de escena | qué líneas cubre | diseño | fondo oscuro o blanco | modo de imagen dentro de imagen | datos necesarios. Verifica estos 5 puntos:
- Una escena cubre de 2 a 8 líneas, no una página por línea.
- Cada escena puede indicar "sujeto recortado" o "sujeto ocupa más del 60 % del encuadre" (R1).
- Por cada 2–3 escenas de fondo oscuro hay 1 escena de fondo blanco (R2).
- Donde se cita texto original, se usa
docpage, y el texto original es una cita literal verificable. - Deja los ganchos de apertura, frases clave, puntos de inflexión y cierre para la entrevista a pantalla completa, sin cubrir todo con imágenes explicativas.
4. Buscar datos
Busca cada elemento de la columna "datos necesarios" de la tabla de escenas según el método de research.md. Cada resultado se escribe en el archivo de hechos, con número, texto original, enlace de fuente y fecha. Usa scripts/commons_photo.py para buscar y descargar fotos.
Después de buscar, revisa la tabla de escenas: si no se encuentra el texto original literal, no uses docpage; si no se pueden reunir datos con el mismo criterio, no uses paper. Si los números en el diálogo no coinciden con el archivo de hechos, primero cambia el diálogo, luego genera o edita los clips de entrevista.
5. Escribir storyboard
Copia el estilo de templates/scenes_example.py. Cada escena debe:
- Alinear la entrada de elementos con palabras clave:
S.k('palabra clave', -0.15). - El elemento actual se ilumina, los demás se atenúan (
focus/hl/lit). La cámara sigue al elemento actual (sc.cam/look). - Registrar al menos 1 fotograma clave de revisión con
KF.append((etiqueta, momento)).
Ejecuta python3 story_core.py timeline.json scenes.py, confirma gaps/overlaps [].
6. Revisión de fotogramas clave (al menos 2 rondas)
python3 -c "import json;print(' '.join(str(f) for _,f in json.load(open('keyframes.json'))))" | xargs node render.mjs stills stills/k1
python3 <skill>/scripts/sheet.py stills/k1 keyframes.json 6
Revisa cada imagen de la composición, modifica según la lista de verificación, y vuelve a renderizar los fotogramas modificados. Si existe su vídeo original, captura fotogramas del mismo diseño y compáralos lado a lado.
7. Renderizado completo, mezcla, síntesis, auditoría
<skill>/scripts/render_chunks.sh video.mp4
python3 <skill>/scripts/mix_audio.py timeline.json mix_raw.wav
<skill>/scripts/finalize.sh video.mp4 mix_raw.wav final.mp4
python3 <skill>/scripts/audit.py video.mp4 72 # compara fotograma a fotograma del vídeo con los keyframes; flagged debe ser 0
Versión para móvil: ffmpeg -i final.mp4 -c:v libx264 -crf 23 -preset medium -pix_fmt yuv420p -c:a aac -b:a 128k -movflags +faststart final_phone.mp4.
Lista de verificación de revisión
Cada fotograma clave debe verificar:
- El sujeto es lo suficientemente grande o está recortado por el borde. No hay grandes espacios vacíos alrededor.
- El elemento del que se está hablando es el más brillante, y la cámara está cerca de él.
- Como máximo 2 etiquetas en un fotograma.
- Nada está oculto por subtítulos (pantalla y 905–960), imagen dentro de imagen, logotipo del canal o marcas de IA.
- No hay caracteres con cuadrados (glifos faltantes), palabras que se hayan roto en líneas verticales, ni texto que sobresalga de las tarjetas.
- Números, unidades y texto original coinciden con el archivo de hechos; existe la línea de fuente; las fotos con licencia CC BY tienen atribución.
- Las escenas de fondo blanco y fondo oscuro se alternan.
Trampas conocidas
- Cuando la palabra clave está al inicio de una línea,
S.k(palabra, -0.3)puede ser anterior al inicio del clip. Usamax(S.t0, …)para limitarlo. - El ancho de columna de tokens de
formula6es igual aiw.iwdebe ser ≥ número de caracteres ×fs. - x de pantalla = (x del mundo − x de cámara) × s + 960.
piprectocupa x de pantalla 110–560; el sujeto debe colocarse en ≥ 600. Al cambiar la posición de la cámara, la posición del sujeto en pantalla también cambia. - El resultado unitario de
uies "yuan/mes" por defecto; usau=para cambiarlo. - La y de pantalla de la base de
paperdebe ser ≤ 900. - Las banderas de
ent6solo sonclcndefrjpus. - Si la ruta de una imagen no existe, el renderizado de ese fotograma falla (
FAIL ... Error loading image). Primero verifica conls public/<ruta>. - Que los fotogramas clave estén bien no significa que el vídeo lo esté. Después del renderizado completo, debes ejecutar
audit.py. - El texto degradado tridimensional de más de 600 px puede bloquear Chrome. No elimines el límite de capas ni de desenfoque de
GText.
Límites de uso
- Esta es una herramienta de réplica de estilo. El vídeo final debe conservar la marca
brand.label"Generado por IA · No es la persona real", sin eliminarla. brand.logoestá vacío por defecto. Rellénalo con el propio logotipo del usuario; no uses el logotipo de "Xiao Lin Shuo" ni de otros creadores reales para publicar públicamente.- No uses el retrato o la voz de creadores reales para generar clips de entrevista y luego publicarlos públicamente.
- No publiques el vídeo final como si fuera obra del creador original, ni lo uses para engañar a la audiencia.
- Todos los datos, textos originales y cláusulas reglamentarias mostrados deben poder rastrearse hasta su fuente.