Locución → reel de vidrio
Una solicitud de entrada, un MP4 terminado de salida. El usuario proporciona un archivo de locución (cualquier formato de audio o video, cualquier duración hasta ~3 min) y opcionalmente el texto del guion, una nota de tema o enlaces de referencia. Tú haces todo lo demás y te detienes solo:
- una vez para descargas como logotipos. No hay presupuesto de créditos: todo se obtiene de forma gratuita (consulta
references/higgsfield.md— recetas probadas de Pixabay / Wikimedia / thesvg). Informa qué se obtuvo y de dónde, pero el dinero nunca entra en la conversación a menos que el usuario lo solicite explícitamente para el apéndice de pago.
Trabaja en el idioma del usuario en el chat. Todo lo que aparece en pantalla está en el idioma de la locución.
Lo que crea
Convierte CUALQUIER locución (y un guion opcional) en un reel documental 16:9 en After Effects con una sola solicitud. Corta las pausas y respiraciones, escribe la historia visual, busca cada imagen de forma gratuita (fotos de archivo de Wikimedia Commons, clips y retratos de Pixabay MCP, logotipos SVG mediante el MCP thesvg, movimientos Ken-Burns de ffmpeg a partir de imágenes fijas) y construye la edición nativa en After Effects. El estilo: documental de archivo oscuro, cada clip en un marco de vidrio redondeado flotante con un borde brillante delgado y una suave entrada, una rejilla de perspectiva en movimiento con palabras clave que cambian de color en la palabra, subtítulos grandes hablados, páginas de máquina de escribir / palabra gigante / tarjeta gráfica, destellos y parpadeos negativos en los cortes, efectos de sonido sintetizados. Renderiza un MP4 H.264 1080p. Úsalo cada vez que alguien dé una locución, nota de voz, narración o clip de pódcast y pida un reel, video, corto, explicativo o edición hecha a partir de eso: "haz un video con mi locución", "convierte esta narración en un reel", "edición de marco de vidrio", "un clip de una locución", "haz un reel con mi grabación de voz", "corta un video para mi voz", "marcos de vidrio y una rejilla". Esto también aplica cuando no tienen ningún metraje.
Antes de empezar (verificar una vez por Mac; dile al usuario exactamente qué arreglar si algo falla)
- macOS 26 o más reciente (transcripción en el dispositivo) con After Effects 2024 o más reciente, abierto. En AE, activa Configuración → Scripting y Expresiones → Permitir que los scripts escriban archivos y accedan a la red.
- Herramientas de línea de comandos de Xcode (
swiftc). Ejecutascripts/build_tools.sh. Compilascripts/bin/{to_wav,transcribe,facebox,frames}. Si un script falla con "permiso denegado" (una habilidad cargada puede perder el bit ejecutable), ejecutachmod +x scripts/*.shen la carpeta de esta habilidad una vez. - Obtención gratuita lista: las herramientas MCP
pixabayythesvg(search_pixabay_images,search_pixabay_videos,search_icons,list_variants,get_icon_url,get_icon) máscurlyffmpeg(ambos ya utilizados por el motor). Wikimedia Commons solo necesita internet- un User-Agent adecuado. Sin créditos, sin cuentas, sin saldos que verificar.
- La primera ejecución de
transcribepuede solicitar permiso de Reconocimiento de Voz. También puede descargar el modelo en el dispositivo una vez. - Si hay otro proyecto de AE abierto con cambios sin guardar,
build.shse negará. Pídele al usuario que lo guarde. Nunca descartes su trabajo. El registro de compilación imprimePREVIOUS_PROJECT <ruta>cuando cerró un proyecto guardado de ellos. Después del renderizado final, vuelve a abrirlo: escribe un jsx de una líneaapp.open(new File("<ruta>"));y ejecútalo conscripts/ae_run.sh.
S = la carpeta de esta habilidad. PY = /usr/bin/python3 (o cualquier Python 3.9+, solo biblioteca estándar).
Proceso
1. Carpeta del proyecto y voz
- Crea
<proj>= una nueva carpeta junto a la locución llamada<nombre_locución>_reel. - Ejecuta
PY S/scripts/reel.py prep <locución> <proy>. Convierte el audio, lo transcribe en el Mac y elimina cada pausa y respiración. Los resultados sonwork/voice_cut.wavywork/words.json(índice de palabra → tiempo del programa). - Luego ejecuta
PY S/scripts/reel.py words <proy>y lee toda la transcripción indexada. - Si el usuario proporcionó un guion, compáralo con la transcripción. Anota los nombres malinterpretados para
spell(por ejemplo"28": "Grok").
2. Historia (lee references/story.md, luego escribe <proy>/story.json)
- Decide el mundo que se ajuste al guion: época, lugar, un elenco recurrente de 2–5 personajes, 3–6 ubicaciones, B&N o color.
- Predeterminado: un documental de archivo en blanco y negro de los años 50–60, donde los temas abstractos se convierten en personas y lugares.
- Elige un aspecto para el presentador. Cuando el usuario quiera aparecer él mismo, usa su foto como referencia del presentador.
- Corta la transcripción en tomas. Cada toma comienza en un índice de palabra.
- presentador (hablando a la cámara en la TV): 3–6 tomas, 2–6 s cada una. Úsalas en el gancho, los giros y la llamada a la acción. Juntas ocupan aproximadamente el 15–20 % de la duración.
- clip (metraje generado en el marco de vidrio): la mayoría de las tomas, 1.5–3 s cada una.
- tipo (página de máquina de escribir): la pregunta inicial o títulos de sección, como máximo 6 palabras.
- gigante (una palabra enorme con una etiqueta roja y una línea secundaria serif): un concepto nombrado.
- tarjetas (2–4 tarjetas gráficas con insignias de logotipo, un nombre en cada palabra): cuando la voz enumera personas, productos o marcas. Los logotipos aparecen solo cuando se mencionan.
- lista: cuando la voz enumera 2–4 puntos, marca ese rango de palabras. Sus palabras clave cambian al color de acento en la palabra.
- claves: como máximo una por oración.
- golpes:
invertiren 3–6 cortes dramáticos,estroboscópicoen como máximo 2 momentos de "se volvió más loco",quemaren como máximo 2 picos. - Nunca muestres el mismo momento de clip dos veces.
- Escribe la lista de obtención a partir de las tomas:
- cada clip de la historia son 8–12 s de metraje de archivo (o un paneo Ken-Burns sobre una imagen fija obtenida), cubriendo tomas consecutivas,
por lo que un clip alimenta varias tomas a través de diferentes tiempos de
entrada; - retratos de tarjetas, ubicaciones y cualquier material del presentador, todo obtenido de forma gratuita;
- una pista musical opcional (o ninguna: la compilación la omite cuando
musicestá ausente).
- cada clip de la historia son 8–12 s de metraje de archivo (o un paneo Ken-Burns sobre una imagen fija obtenida), cubriendo tomas consecutivas,
por lo que un clip alimenta varias tomas a través de diferentes tiempos de
3. Obtener los activos (lee references/higgsfield.md)
- Obtén en este orden: clips de la historia → retratos de tarjetas → ubicaciones → (si se mantiene) placa de TV →
(si se mantiene) clips del presentador. Verifica cada descarga según las recetas probadas (HEAD
content-type+content-length, curl-AUA + reintentos, SHA-1 cuando Commons lo proporcione). Registra archivo → URL de origen → licencia → autor enwork/SOURCES.md. - Clips de la historia: Pixabay
search_pixabay_videos(video_type: "film", orientación coincidente, duración 8–15 s) o Commonsfiletype:video(imageinfo→ descarga con la receta de curl → transcodifica Talks.ogv/.webma MP4). Las imágenes fijas se convierten en Ken-Burns.mp4con la receta de ffmpeg. - Clips del presentador (solo si el usuario aparece en cámara él mismo):
PY S/scripts/reel.py chunks <proy>escribe un fragmento de audio por toma de presentador enwork/host/host_NN.wav;- compón el audio del fragmento en su clip de webcam y guárdalo como
assets/host/host_NN.mp4(ffmpeg -map 0:v:0 -map 1:a:0 -shortest) -reel.py alignluego empareja las palabras exactamente; PY S/scripts/reel.py align <proy>mide el desplazamiento de cada clip con respecto a las palabras. Sin metraje propio → reestructura estos compases de presentador como páginastipo/gigante/tarjetasen su lugar.
- Si se usa una placa de TV, ejecuta
PY S/scripts/reel.py screen <proy>/assets/tv_plate.png <proy>. Encuentra la pantalla verde. Si no se encuentra ninguna, repíntala (ffmpeg drawbox, §2 de la referencia) o cambia las tomas de presentador al modocompleto- no se necesita placa. - Ejecuta
PY S/scripts/reel.py sfx <proy>para sintetizar los efectos de sonido (sin licencias necesarias). - Música: omite
music(predeterminado), usa la pista del usuario o convierte un archivo de audio de Commons a MP3.
4. Compilar y verificar
- Ejecuta
PY S/scripts/reel.py plan <proy>. Escribework/plan.jsone imprime verificaciones. Corrige cada ERROR enstory.json. Toma en serio los AVISOS: clips repetidos, sincronización de labios del presentador. - Ejecuta
S/scripts/build.sh <proy>. Compila<proy>/reel.aep(comp REEL) en aproximadamente 1 min para un reel de 70 s. Lee el registro: fuentes utilizadas, advertencias. - Ejecuta
S/scripts/render.sh <proy> --halfpara una verificación rápida (~2 min). Luego verifica los fotogramas:S/scripts/bin/frames <proy>/out/reel_half.mp4 <proy>/work/check.jpg 4 <el segundo medio de ~16 tomas>;- mira
check.jpg: subtítulos legibles y no sobre caras, labios del presentador moviéndose dentro de la TV, marcos de vidrio presentes, sin espacios negros, páginas no vacías. Corrige enstory.json, luego vuelve a ejecutarplan,buildy la verificación.
- Final: ejecuta
S/scripts/render.sh <proy>. Escribe<proy>/out/reel_1080.mp4(1920×1080, 25 fps, aproximadamente 40 Mbps, con sonido). - Envía el MP4. Informa:
- su duración;
- lo que no pudiste verificar;
- el lugar para ajustar a mano (
reel.aep: cada toma es su propia composición en02_SHOTS/03_PAGES, los subtítulos están enCAPTIONS).
Reglas
- Derechos:
- Obtén todo de forma gratuita: Pixabay MCP, Wikimedia Commons (verifica la licencia de cada archivo), thesvg
MCP para logotipos, más síntesis local (ffmpeg Ken-Burns,
reel.py sfx). Sin servicio de pago por defecto; el apéndice de Higgsfield es solo para cuando el usuario lo solicite explícitamente. - Nunca rasques películas, series, anuncios u otras publicaciones sociales de personas.
- Logotipos solo del MCP thesvg o de Wikimedia Commons, y solo después de la aprobación del usuario.
- La música es opcional (omitida, pista propia del usuario o archivo de Commons convertido a MP3).
- Los efectos de sonido son sintetizados por
reel.py sfx.
- Obtén todo de forma gratuita: Pixabay MCP, Wikimedia Commons (verifica la licencia de cada archivo), thesvg
MCP para logotipos, más síntesis local (ffmpeg Ken-Burns,
- La voz es el reloj.
- Cada corte aterriza en una palabra, un fotograma antes de ella.
reel.pyhace esto. - Nunca cambies la velocidad ni las palabras.
- Los subtítulos muestran exactamente lo que se dice, aparte de las correcciones
spellde nombres malinterpretados.
- Cada corte aterriza en una palabra, un fotograma antes de ella.
- Personas:
- ropa modesta y apropiada para la época;
- adultos realistas;
- sin figuras públicas reales como personajes;
- los modelos y empresas de IA se muestran como personajes inventados y se nombran solo mediante subtítulos y logotipos.
- Las reejecuciones son económicas.
planybuildson deterministas y reconstruyenreel.aepdesde cero. Cambiastory.jsonen lugar de editarreel.aepa mano, a menos que el usuario solicite ediciones manuales. Una vez que editenreel.aepellos mismos, nunca lo reconstruyas sin preguntar. - AE ejecuta un script a la vez.
- Usa solo
scripts/ae_run.sh,build.shyrender.sh. - Salida 4 significa que AE todavía está ocupado: espera, nunca reenvíes.
- Salida 6 significa que AE no inició el script: ¿hay un cuadro de diálogo abierto?
- Usa solo
Archivos
| ruta | qué |
|---|---|
scripts/reel.py | prep / words / chunks / align / screen / sfx / plan (solo biblioteca estándar) |
scripts/build.sh, scripts/ae/build_reel.jsx, scripts/ae/reel_lib.jsx | la compilación de After Effects |
scripts/render.sh | aerender a H.264 (--half para verificaciones) |
scripts/ae_run.sh | envía un script al AE en ejecución y espera |
scripts/tools/*.swift → scripts/bin/ | conversión de audio, transcripción en el dispositivo, cuadros de cara, hojas de fotogramas |
references/story.md | formato de story.json, reglas de tomas, un ejemplo completo |
references/higgsfield.md | manual de obtención gratuita: recetas probadas de recuperación y verificación de Pixabay / Wikimedia / thesvg, mapeo por activo, apéndice de generación paga |
references/look.md | qué dibuja la compilación (tamaños, tiempos, colores) y cómo ajustarlo |
references/troubleshooting.md | errores y soluciones |
references/example_story.json | el story.json de un reel de 70 s terminado (la prueba EXPERIMENT) |
PROMPT.md | cómo instalar la habilidad y el único mensaje que enviar |