Communitygithub.com

courtneymgabrus-star/Video

Convierte cualquier texto —un artículo, notas, un tema, un resumen— en un vídeo explicativo sin rostro: no hay sitio web ni metraje que capturar, los visuales se inventan por escena (tipografía, gráficos abstractos, diagramas, visualización de datos). Útil para explicaciones de temas, desgloses de conceptos, tutoriales, listas. No es un vídeo construido a partir de un sitio web (/product-launch-video — promoción o tour). Si hay dudas → /hyperframes.

¿Qué es Video?

Este skill orquesta la creación de vídeos explicativos 'sin rostro' a partir de texto arbitrario utilizando HyperFrames. Es ideal para desarrolladores y agentes que necesitan convertir artículos, notas o temas en vídeos educativos sin depender de capturas de sitios web o activos reales. El flujo de trabajo consta de 7 pasos que van desde la configuración inicial (creación de BRIEF.md e inicialización del proyecto), pasando por el diseño del sistema visual (selección de un preset tipográfico y de color), la elaboración del guion gráfico y el guion narrativo (con un diseño pedagógico que reordena y condensa el contenido), la generación de audio (voz en off y música de fondo), la creación visual de cada fotograma (despachada a subagentes especializados), hasta el renderizado final. Soporta los modos colaborativo (con aprobación del usuario en pasos clave) y autónomo. Se integra con HeyGen para TTS y música, con Kokoro como motor offline para voz, y con la suite HyperFrames para la gestión de proyectos y activos. Las reglas de diseño y animación residen en skills auxiliares como hyperframes-creative y hyperframes-animation, garantizando una separación clara entre orquestación y ejecución.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/courtneymgabrus-star/Video/tree/HEAD/.agents/skills/faceless-explainer

Preguntar en tu IA favorita

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

Documentación

Instalación del plugin: Antes de ejecutar comandos de configuración o actualización, sigue las reglas de instalación de plugins cuando este skill esté dentro de un plugin de HyperFrames. Las instalaciones independientes conservan las instrucciones de actualización siguientes.

Primero, mantén este skill actualizado — confirma con el usuario antes de ejecutar: npx hyperframes skills update faceless-explainer. Es una operación rápida sin efecto cuando todo está actualizado; de lo contrario, refresca este skill y los skills principales de los que depende antes de que confíes en ellos.

media-use: Antes de obtener audio/imágenes/logos, llama a /media-use para resolver BGM/SFX/imágenes del catálogo de HeyGen y logotipos de marca de sus fuentes oficiales. Ejecuta --adopt primero para registrar los activos existentes. Consulta el skill /media-use. Cuando la aplicación anfitriona proporcione sus propias herramientas de música o efectos de sonido, úsalas para la música y los efectos de sonido.

Faceless Explainer a HyperFrames

Usa este skill para convertir un cuerpo de texto en un vídeo explicativo: elige un sistema de diseño, planifica una historia didáctica y constrúyelo fotograma a fotograma en HyperFrames. Sin rostro significa que cada visual se inventa en etapas posteriores — no hay paso de captura ni inventario de activos reales.

La puerta de entrada es /hyperframes. Tú eres el orquestador. Ejecuta cada paso, verifica su compuerta y solo entonces continúa. Este skill es para explicar un tema a partir de texto, sin producto ni sitio web que capturar. Cualquier otra intención, un simple "haz un vídeo", o cualquier incertidumbre → lee /hyperframes primero — la capa de intención posee cada decisión de ruta, y una creación nueva que llegue aquí sin BRIEF.md pasa por ella de todos modos (regla inicial de Configuración).

Tú eres el orquestador. Trabaja en videos/<proyecto>/. Ejecuta los pasos en orden y pasa cada compuerta antes de continuar. Los pasos con compuerta de usuario son el Paso 0, el Paso 3 y el Paso 6. Lee ../hyperframes/references/brief-contract.md antes del Paso 0 — define los tipos de compuerta y cómo flow/storyboard de BRIEF.md derivan el modo que rige las compuertas de los Pasos 3/4/6. Haz cada paso tú mismo excepto el Paso 5, donde despachas un subagente por fotograma. No pongas reglas de diseño o animación aquí; esas viven en el subagente trabajador de fotogramas, en ../hyperframes-animation/rules/ + ../hyperframes-animation/blueprints/ local de este skill, y en hyperframes-creative.

Flujo de trabajo: Paso 0 configuración → hyperframes.json; Paso 1 resumen → capture/extracted/; Paso 2 sistema de diseño → frame.md; Paso 3 guion gráfico/guion → STORYBOARD.md y SCRIPT.md; Paso 3.1 audio → audio_meta.json; Paso 4 diseño visual → STORYBOARD.md enriquecido; Paso 5 fotogramas → compositions/frames/NN-*.html e index.html; Paso 6 renderizado final → renders/video.mp4.


Paso 0: Configuración

Objetivo: Entrar con un resumen confirmado, crear el proyecto HyperFrames y hacer que el resumen sea duradero.

El resumen es confirmado por la capa de intención, no por preguntas aquí formuladas. Regla inicial, en orden: (1) BRIEF.md existe → léelo y no preguntes nada — el resumen está resuelto, y su flow/storyboard derivan el modo (contrato de resumen § 1). (2) No hay BRIEF.md pero el proyecto existe (hyperframes.json / STORYBOARD.md en disco) → reanuda desde el frontmatter del guion gráfico y las preferencias registradas; nunca vuelvas a interrogar un proyecto a medio construir. (3) Ninguno de los dos — una solicitud de creación nueva que llegó directamente aquí → lee /hyperframes y ejecuta su capa de intención (references/intent-interview.md): verifica recetas y valores predeterminados recordados, realiza las preguntas de esta ruta (../hyperframes/references/routes/faceless-explainer.md), y devuelve el resumen bloqueado. Las solicitudes de edición saltan todo esto — ve a hacer la edición.

Inicializa solo si falta hyperframes.json. Nombra <proyecto> a partir del tema en kebab-case, por ejemplo compound-interest-explained; nunca uses el nombre del espacio de trabajo ni la marca de tiempo.

npx hyperframes init "videos/<proyecto>" --non-interactive --example=blank --skill=faceless-explainer — init verifica los skills instalados contra los últimos en GitHub y actualiza el conjunto global si alguno está desactualizado.

Después de init, que <PROJECT_ROOT> sea videos/<proyecto> y ejecuta cada comando de ruta relativa posterior con ese directorio como su directorio de trabajo. En los comandos a continuación, . significa <PROJECT_ROOT>; nunca escribas .media, capture, o archivos de salida en el directorio de la llamada.

Escribe BRIEF.md inmediatamente después de init (nunca antes — init rechaza un directorio no vacío): el resumen bloqueado de la capa de intención, con la forma según ../hyperframes/references/brief-format.md. Resuelve <MEDIA_DIR> como el directorio del skill /media-use instalado. Luego registra cada respuesta respaldada por preferencias con node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes . (brief-format.md nombra el subconjunto). Si la capa de intención adoptó una receta, ejecuta node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes . --name <nombre>; copia su frame.md en el proyecto (el Paso 2 se omite entonces) y devuelve los esqueletos a partir de los cuales se redacta el Paso 3. Una receta completa respuestas, no aprobaciones; las compuertas de revisión aún se ejecutan.

Muestra el estado de inicio de sesión antes de proceder más allá de la Configuración — ejecuta npx hyperframes auth status y transmite su salida textualmente. Informa si la voz/BGM usará HeyGen o motores locales y, cuando no haya sesión iniciada, cómo iniciarla. Aplica una rama:

  • Colaborativo: espera a que el usuario inicie sesión o elija explícitamente offline / go.
  • Autónomo: indica el estado y continúa a través de los motores locales disponibles.

No omitas silenciosamente una capacidad requerida cuando no exista un proveedor fuera de línea; muestra el bloqueador. No incluyas esta decisión en otra pregunta ni escribas claves en un .env por repositorio. Propiedad de autenticación y alternativas fuera de línea: /media-use references/setup-providers.md § Proveedores.

Compuerta: existen hyperframes.json y BRIEF.md; se registraron las respuestas respaldadas por preferencias (contrato de resumen § 2); se mostró el estado de inicio de sesión (sesión iniciada, o continuando sin conexión).


Paso 1: Resumen (sin captura)

Objetivo: Incorporar el texto del usuario en el proyecto como fuente de información. No hay captura de sitio web ni activos reales — esto es un explicador sin rostro.

Guarda la entrada completa del usuario textualmente, luego crea el paquete de captura sintético manualmente:

  • capture/extracted/visible-text.txt — el artículo / notas / tema / resumen completo, textual. Esta es la fuente de información, no una plantilla de historia (el Paso 3 la reforma).
  • capture/extracted/tokens.json — { "title": "", "description": "", "colors": [], "fonts": [] }. Completa title/description a partir del resumen. Deja colors/fonts vacíos a menos que el usuario haya dado explícitamente colores o fuentes de marca — entonces agrégalos (el preset de diseño proporciona una paleta completa independientemente).

Si el usuario pegó un guion o quiere que se mantenga su redacción, guárdalo textualmente como user_script.txt; VO_MODE (textual o reestructurado) proviene de BRIEF.md — la capa de intención lo pregunta cuando llega un guion. Pregunta una vez aquí solo si al resumen le falta, y almacena la respuesta para el Paso 3.

No ejecutes npx hyperframes capture (no hay URL). No crees asset-descriptions.md ni rellenes capture/assets/ — los visuales sin rostro se inventan en los Pasos 4-5, no se capturan. La única excepción: si el usuario proporcionó una imagen real, colócala en public/<nombrebase> y anótala para el Paso 3.

Compuerta: existen capture/extracted/visible-text.txt y capture/extracted/tokens.json; puedes indicar el tema del explicador y la audiencia en una oración clara.


Paso 2: Sistema de Diseño

Objetivo: Elegir un preset de fotograma enviado; un script lo convierte en el frame.md + piel de subtítulos de este vídeo.

Cuando BRIEF.md nombra un style_preset — el usuario lo eligió visualmente en las exhibiciones de la capa de intención — úsalo; la decisión es tuya solo cuando el resumen está en blanco. Luego haces la única llamada — qué preset: lee ../hyperframes-creative/references/design-spec.md y explora ../hyperframes-creative/frame-presets/; elige el preset cuyo aspecto se ajuste mejor al tema, tono y audiencia. Luego ejecuta:

node <SKILL_DIR>/scripts/build-frame.mjs --preset <nombre> --hyperframes .

El script hace el resto de forma determinista: copia el FRAME.md del preset → frame.md y lo remezcla sobre cualquier token de marca en capture/extracted/tokens.json (colores de marca mapeados sobre las claves de color del preset por rol; las fuentes de visualización + cuerpo del preset reemplazadas por las de la marca), copia la piel de subtítulos del preset a .hyperframes/caption-skin.html, y se autovalida (sale con 1 en un mapeo roto). Procede tan pronto como salga con 0 — sin edición manual de la especificación.

Un explicador sin rostro generalmente no tiene colores/fuentes de marca (tokens.json colors/fonts vacíos) → el script mantiene la propia paleta del preset, un diseño completo y listo para enviar. Solo cuando el usuario nombró colores/fuentes de marca, agrégalos a tokens.json antes de ejecutar, y solo ajusta frame.md manualmente después si un mapeo realmente lo necesita.

Compuerta: build-frame.mjs salió con 0 — frame.md existe a partir de un preset nombrado, y (cuando el preset incluye uno) .hyperframes/caption-skin.html existe como fuente de la piel de subtítulos; el preset elegido se registró como preferencia (--key style_preset --workflow <este flujo de trabajo>, contrato de resumen § 2).


Paso 3: Guion Gráfico y Guion

Objetivo: Convertir el texto en un plan didáctico aprobado fotograma por fotograma.

Lee ../hyperframes-creative/references/story-spine.md (lenguaje de gancho, valor antes de evidencia, guion gráfico como propuesta, visuales trazables a la fuente), references/story-design.md, ../hyperframes-animation/blueprints-index.md, ../hyperframes/references/storyboard-format.md y ../hyperframes/references/script-format.md. Úsalos para escribir STORYBOARD.md y, cuando se necesite narración, SCRIPT.md. Establece el duration: del frontmatter a partir del length del resumen — una expectativa aproximada; el ensamblaje informa dónde cae el corte en relación con ella.

Usa story-design.md para la estructura del explicador (concepto / tutorial / lista / historia), estrategia de gancho, técnicas de claridad, ritmos emocionales, el mapeo de enumeración de tipos y VO_MODE. La secuencia del vídeo proviene del diseño narrativo, no del orden de párrafos del texto de entrada — reordena, fusiona, omite, comprime. Como guía suave, consulta el menú rol→modelo en ../hyperframes-animation/blueprints-index.md: para cada ritmo, escribe la voz en off en la forma que sugiere su modelo candidato y etiqueta ese candidato con el id blueprint: cuando uno encaje. La verdad didáctica aún decide qué ritmos existen — nunca fuerces un ritmo a encajar en un modelo, y nunca inventes un ritmo solo porque una forma probada esté disponible. Los visuales sin rostro se inventan en etapas posteriores, por lo que los fotogramas no llevan un inventario de activos: deja asset_candidates vacío a menos que el usuario haya proporcionado una imagen real public/<nombrebase>. Usa los campos exactos requeridos de las referencias de guion gráfico y guion.

Después del borrador, ejecuta la pasada de plan del bucle de revisión — ../hyperframes/references/review-loop.md § 1: presenta el plan como propuesta y haz las dos preguntas — aprobar o cambiar, y bocetos primero (recomendado) u omitir. La retroalimentación llega como respuesta de chat; repite hasta que se apruebe. Esta es una compuerta de punto de control (contrato de resumen § 1): en modo autónomo no hay nada que preguntar — publica el mismo resumen como aviso y continúa; los bocetos se integran en la construcción, y la vista previa final con una pregunta llega en el Paso 6.

Compuerta: existe STORYBOARD.md, cada fotograma tiene los campos narrativos requeridos, existe SCRIPT.md cuando se necesita narración, y el usuario aprobó el plan fotograma por fotograma (autónomo: el resumen se publicó como aviso).


Paso 3.1: Audio

Objetivo: Generar narración, temporización de palabras, música y metadatos de audio a partir del guion aprobado.

Inicia el audio después de la aprobación del Paso 3. Ejecútalo en segundo plano, luego continúa al Paso 4. (El estado de inicio de sesión ya se mostró en el Paso 0; el motor cae automáticamente en modo fuera de línea).

Elige la voz de narración a partir de la solicitud del usuario antes de invocarla. Si la solicitud nombró una voz, género o tono, elige un ID de voz coincidente y pásalo con --voice <id>. El valor predeterminado de la canalización es Marcia (femenino) en HeyGen / am_michael en Kokoro — por lo que una solicitud como "una voz masculina" se ignora silenciosamente a menos que pases la bandera. Los ID de voz son específicos del proveedor; resuélvelos contra el proveedor que haya seleccionado el estado de inicio de sesión del Paso 0: HeyGen (sesión iniciada) mediante node <MEDIA_DIR>/audio/scripts/heygen-tts.mjs --list (o GET /v3/voices?engine=starfish); Kokoro (fuera de línea) mediante la tabla de voces en <MEDIA_DIR>/audio/references/tts.md (prefijos am_/bm_ masculino, af_/bf_ femenino). Cuando el usuario no expresó preferencia, recurre a la voz recordada (contrato de resumen § 2) antes del valor predeterminado de la canalización, y di cuál usaste; omite --voice solo cuando ninguno nombre una. Cuando el usuario eligió explícitamente una voz en esta ejecución, regístrala (prefs.mjs record --key voice).

node <SKILL_DIR>/scripts/audio.mjs --script ./SCRIPT.md --storyboard ./STORYBOARD.md --hyperframes . --out ./audio_meta.json --voice <id-voz> &

El script de audio maneja la narración, la temporización de palabras, la búsqueda de BGM en la biblioteca musical de HeyGen y los metadatos de temporización. El estado de ánimo de BGM proviene del campo music: del guion gráfico. Esto usa la API de Audio de HeyGen para recuperación, no generación, y la misma credencial ~/.heygen que TTS. Para detalles del proveedor, lee ../media-use/audio/references/tts.md. Cuando las propias herramientas de la aplicación anfitriona generan la música o un efecto de sonido, coloca el archivo en assets/ y nómbralo en el archivo audio_meta.json marcado "source": "host": música como bgm { "path": "assets/…", "source": "host" } con music: none en el guion gráfico; un sonido como entrada sfx { "frame": <n>, "file": "assets/…", "offset_s": 0, "duration_s": <su duración>, "source": "host" }. Cada paso de audio conserva estos, y un fotograma con un sonido del anfitrión no obtiene señal buscada.

Si no hay narración y no hay SCRIPT.md, omite la generación de voz. BGM aún puede ejecutarse si el guion gráfico tiene un estado de ánimo musical.

El marcador canónico de silencio total (compartido entre los flujos de trabajo que reutilizan este modelo de audio): music: none en el bloque YAML superior de STORYBOARD.md, sin SCRIPT.md, y sin señales sfx: ni audio del anfitrión. Esa combinación marca el proyecto como silencioso.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

courtneymgabrus-star/Video

Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet `anchor` rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.

courtneymgabrus-star/Video

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

courtneymgabrus-star/Video

Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated motion-first unit, including an animated title. Route fresh creation through hyperframes before using this skill.

courtneymgabrus-star/Video

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

Skills relacionados