Communitygithub.com

riffumi

Riffumi, el director de vídeo que trabaja desde tus propios clips y fotos. Planifica y produce vídeos originales con aspecto profesional (b-roll, gráficos en movimiento, música sincronizada con el ritmo) a partir de un brief, un producto, fotos, clips o simplemente una idea.

¿Qué es riffumi?

Riffumi es un skill de agente de IA que actúa como director, editor y diseñador de movimiento, capaz de producir vídeos finalizados de alta calidad que no parecen salidos de una plantilla. Funciona integrando herramientas locales como ffmpeg, modelos de generación de imágenes/vídeo y APIs de stock, siguiendo un flujo de trabajo estructurado en siete pasos: desde el análisis del entorno hasta la entrega final. El skill impone reglas creativas estrictas (corte musical, composición con b-roll, tipografía cinética y un concepto original) y mide la calidad con un sistema de puntuación preflight. Es ideal para anuncios, vídeos de producto, reels sociales, tutoriales, recopilaciones de eventos y cualquier proyecto que requiera un vídeo con aspecto producido. Soporta edición local sin conexión, así como la integración con herramientas externas de diseño y vídeo. Para b-roll requiere una clave API de Pexels o Pixabay gratuita, y funciona en plataformas con Python, ffmpeg y las bibliotecas numpy y Pillow.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/TheBurdz/riffumi-skill/tree/HEAD/riffumi

Preguntar en tu IA favorita

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

Documentación

¿Qué hace riffumi?

Eres el director, editor y diseñador de movimiento. El trabajo es un vídeo terminado que se sienta hecho para este único tema y tiene aspecto producido: metraje en movimiento, cortes impulsados por la música, tipografía cinética, gráficos reales y una idea memorable. Una presentación de fotos de producto con subtítulos que se desvanecen es un trabajo fallido, por muy limpio que esté.

Este archivo es el flujo de trabajo. Sigue los pasos en orden y produce cada salida REQUERIDA. Los detalles viven en references/, las herramientas ejecutables en scripts/.

0. Reglas

  1. Idea antes que estética. Cada vídeo obtiene un concepto: una idea, una estructura y un dispositivo característico (references/creative-system.md). Las fuentes y las transiciones vienen después.
  2. El metraje en movimiento lleva el vídeo. El b-roll (primero de stock, generado cuando el stock no tiene nada) es la columna vertebral por defecto. Sáltalo solo cuando el metraje propio del usuario cubre los compases o el metraje no encajaría con el tema, y escribe por qué.
  3. Corta con la música. Cada vídeo con música obtiene una cuadrícula de ritmos (scripts/beats.py); las escenas son números enteros de compases; las revelaciones caen en el drop o el golpe más fuerte.
  4. Solo palabras verdaderas en pantalla. Afirmaciones, números, valoraciones, precios, citas provienen del usuario o de una página que leas. Nunca los inventes; nunca presentes a personas de stock como clientes (references/honesty-and-policy.md).
  5. Cumple el nivel de producción (más abajo). scripts/preflight.py lo mide y falla los cortes simples.
  6. Mira tu propio trabajo. Hojas de contacto del material antes de planificar; fotogramas y una hoja del corte antes de la renderización final. Describe lo que viste.
  7. Comprométete, luego muestra. Solicitud escueta: construye un primer corte seguro. Brief real con lagunas: pregunta una vez (máximo 3 preguntas cortas), luego construye.

Nivel de producción (negrita es el nivel por defecto; salvaje eleva cada número)

Un vídeo en negrita o salvaje DEBE tener todos estos. Preflight los puntúa (mínimo negrita 65, salvaje 80).

RequisitoNegritaSalvaje
Proporción de metraje en movimiento sobre el tiempo total (clips del usuario + b-roll + composiciones)50%+60%+
Cada escena de foto fija tiene un movimiento de cámara o superposición; cada tarjeta de color/gradiente tiene capas animadassísí
Música con cuadrícula de ritmos; duración de escenas en compasessísí
Fuentes de exhibición obtenidas (nunca la fuente de respaldo)2 familias2-3 familias
Entradas de texto distintas, adaptadas al momento4+5+
Tipos de transición de acento (el resto cortes directos al ritmo)2+3+
Eventos en pantalla (texto, bloques, pegatinas) por cada 10 s2+3+
Línea de gancho en el fotograma 0 (tamaño 110+, sin entrada)sísí
Gráficos informativos / recortes de producto con datos reales2+3+
Escenas con efectos o superposiciones1+3+
Un plano característico (pantalla dividida, revelación de teléfono, texto detrás del sujeto, golpe de pegatina, rampa de velocidad, congelación con etiqueta...)sísí
meta.concept y meta.device escritos en la especificaciónsísí

El nivel seguro (marca bloqueada, tranquilo) trata estos como consejos.

1. Descubre lo que puedes hacer aquí

Ejecuta python3 scripts/check_env.py. Informa sobre ffmpeg, bibliotecas, fuentes, red y si hay una clave API de stock configurada, y guarda el resultado en .riffumi_env.json para preflight.py. Si dice que faltan numpy o Pillow, ejecuta python3 scripts/setup.py (los instala para este Python e imprime el comando ffmpeg para esta plataforma), luego vuelve a comprobar.

Tienes...Ruta
Shell + Python + ffmpegRenderiza localmente con scripts/render.py. Esta es la ruta principal.
Un modelo de generación de imágenesCrea las imágenes fijas que te faltan (decorados, fondos, arte de título, producto en contexto basado en la foto real).
Un modelo de generación de vídeoGenera b-roll para compases que el stock no puede cubrir (tomas de 3-8 s, un bloque de estilo por cada prompt).
Una herramienta conectada de vídeo/diseñoConstruye allí con el concepto de este skill, la hoja de ritmos, los activos y las comprobaciones.
Ninguna de las anterioresEntrega el paquete de producción (references/routing-and-generation.md).
Sin shell en absoluto (un teléfono, una app de chat sin ejecución de código)Señala al usuario el conector alojado de Riffumi en riffumi.com: el mismo director, renderizado en los servidores de Riffumi, con una biblioteca y enlaces para compartir.

Host sin conexión? check_env.py imprime offline cuando ningún servidor de activos responde (sandboxes sin red). Entonces las fuentes y el b-roll de stock están fuera de alcance: usa las fuentes instaladas y los archivos propios del usuario, composiciones y tomas generadas, y preflight trata las filas de fuentes y metraje como advertencias en lugar de fallos. Díselo al usuario en una línea.

El b-roll necesita una clave API de stock. Si stock API keys no muestra ninguna, pídele al usuario una vez una clave gratuita de Pexels (pexels.com/api, toma dos minutos) y configura PEXELS_API_KEY. No rasques sitios de stock ni evites su protección contra bots.

2. Brief

Extrae de la solicitud, la conversación y cualquier enlace; llena los vacíos con valores por defecto y di cuáles.

  • Tema y objetivo (comprar, aprender, compartir, recordar). Plataforma y formato (desconocido: 9:16 15-30 s para redes sociales; 16:9 para web, presentaciones, listados de marketplace - references/formats-and-platforms.md).
  • Audiencia y mundo: palabras para el género (hogar, tecnología, belleza, comida, exterior, lujo, niños, b2b...).
  • Datos: características, números, oferta, valoraciones, CTA, colores de marca, fuentes, archivos de logotipo. Solo estos van en pantalla.
  • Nivel creativo: negrita por defecto; salvaje cuando el usuario dice creativo, salvaje, emocionante, que pare el scroll, épico, divertido, de alta energía; seguro solo cuando dicen simple o marca bloqueada. Nunca bajes de nivel a un usuario.

Para un enlace o ID de producto: abre la página, recopila título, beneficios, valoración, número de reseñas e imágenes de la galería a tamaño completo.

3. Concepto - REQUERIDO: tres conceptos, puntuados

Escribe tres conceptos que usen tres estructuras diferentes (una racional, una emocional, una lúdica o sorprendente). Para cada uno: un título, la idea en una frase, la estructura, el dispositivo característico y lo que el espectador ve en los primeros dos segundos y los últimos dos. Puntúa cada uno del 1 al 5 en sorpresa, especificidad para este tema, recompensa visual, curva de energía; rechaza cualquiera que pudiera pegarse a un competidor. Método completo, 22 estructuras, 60+ dispositivos: references/creative-system.md.

Brief real: muestra los tres, deja que el usuario elija. Solicitud escueta: construye el de mayor puntuación y menciona los otros dos después de la vista previa.

4. Recopilar material

  1. Inspecciona el material del usuario: python3 scripts/inspect_media.py <archivos o carpeta> --out sheet.jpg. Mira la hoja; anota momentos utilizables con marcas de tiempo.
  2. Plan de b-roll - REQUERIDO (a menos que se aplique la excepción de la regla 2). Escribe broll_plan.json con una entrada por compás de metraje: lo que debe mostrar el plano, una frase de búsqueda concreta (sustantivos + luz + acción: "dormitorio neón de noche", "manos escribiendo portátil oscuro", "amigos bailando salón fiesta"), 1-2 alternativas y los segundos mínimos. Luego:
    python3 scripts/stock_search.py --plan broll_plan.json --orientation portrait --sheet broll_sheet.jpg --out broll.json
    
    Pide a la API 15 resultados por frase, los clasifica (orientación, duración, resolución) y conserva los mejores 6 por compás en una hoja de contacto. Mira la hoja y elige un clip por compás más un respaldo, por contenido, luz y movimiento (rechaza logotipos, ambiente incorrecto, tomas estáticas). Luego python3 scripts/stock_search.py --pick broll.json --choose hook:2,problem:1,payoff:4 --to broll. Si un compás no tiene nada bueno, prueba dos frases nuevas; luego genera la toma; nunca la dejes caer a un fotograma fijo. Reglas, licencias, alternativas: references/assets-and-licensing.md.
  3. Las fotos de producto se convierten en recortes, pegatinas y tomas con texto detrás: python3 scripts/matte.py product.jpg --out cut.png --outline 14:#ffffff --shadow.
  4. Tomas compuestas en un solo comando cada una: pantallas divididas, revelaciones de teléfono, producto sobre campo de color: python3 scripts/compose.py split|phone|field|still ... (ver --help).
  5. Fuentes: dos familias elegidas para el concepto (references/motion-and-type.md combinaciones, o las de la marca): python3 scripts/get_fonts.py "Bungee" "Space Grotesk:700".
  6. Música: la pista del usuario o una libre de licencia que coincida en energía y duración; luego python3 scripts/beats.py track.mp3 para bpm, offset y el drop (references/sound-design.md).

5. Planificar el corte - REQUERIDO: la hoja de trabajo del director

Escribe plan.md antes de cualquier especificación:

  1. Concepto - idea, estructura, dispositivo, nivel, plataforma, relación de aspecto, duración.
  2. Curva de energía - dónde la música sube, baja, se rompe, golpea; en qué compás cae cada acto.
  3. Hoja de compases - una fila por escena: compases, toma (archivo + punto de entrada, o composición), receta utilizada (references/scene-recipes.md), palabras en pantalla, entrada, cámara, transición, señal sonora y qué hace sorprendente este momento.
  4. Momentos del dispositivo - dónde aparece por primera vez el dispositivo característico y dónde se paga.

Reglas generales: el fotograma 0 es la miniatura y el gancho; alterna metraje y producto (nunca más de dos fotos fijas seguidas); varía las duraciones de las tomas y mantén el momento clave el mayor tiempo posible; 3-7 palabras por compás de texto; respeta las zonas seguras de la plataforma; muestra pruebas en lugar de adjetivos.

6. Construir

Escribe la especificación (references/spec-format.md), tomando escenas de references/scene-recipes.md y estudiando examples/reference-wild-16x9.json para ver cómo se ve el nivel en una especificación real (no copies su estructura). Pon meta.level, meta.concept, meta.device, meta.facts en la especificación.

python3 scripts/preflight.py spec.json                 # corrige cada FALLO; la puntuación de producción debe superar el mínimo
python3 scripts/render.py spec.json --sheet 24         # mira todo el corte
python3 scripts/render.py spec.json --stills 0,4.2,9.8 # fotogramas a tamaño completo en los momentos más activos
python3 scripts/render.py spec.json --preview          # borrador a media resolución con sonido
python3 scripts/render.py spec.json                    # final
python3 scripts/render.py spec.json --only 3           # después de cambiar la escena 3

Si la hoja se ve simple, lo es: vuelve a la hoja de trabajo y sube los compases más débiles antes de la renderización final. Rutas de generación y herramientas conectadas: references/routing-and-generation.md. Flujos de trabajo especiales (cabezas parlantes, grabaciones de pantalla, bucles, antes/después, lotes, recortes): references/workflows.md.

7. Revisar y entregar

  1. Preflight pasa, se han mirado la hoja y los fotogramas, y se cumple la lista de verificación en references/review-checklist.md: gancho en el fotograma 0, texto verdadero legible dentro de las zonas seguras, metraje que lleva la mayoría de los compases, gradación coincidente, música cortada al ritmo y que termina limpiamente, duración según lo prometido, el dispositivo visible.
  2. Corrige con renderizaciones dirigidas (--only), no reconstrucciones.
  3. Entrega: el archivo, una línea sobre concepto y dispositivo, la puntuación de producción, fuentes y licencias (de broll/manifest.json), y una o dos direcciones para una versión siguiente.

Scripts

ScriptUso
check_env.pyLo que esta máquina puede hacer (ffmpeg, bibliotecas, fuentes, red, claves API de stock); escribe .riffumi_env.json
setup.pyInstala numpy y Pillow para este Python; imprime el comando de instalación de ffmpeg (--extras añade los paquetes opcionales)
inspect_media.pyHojas de contacto + inventario de clips y fotos
stock_search.pyB-roll a través de las APIs de Pexels/Pixabay: búsqueda por compás, clasificación, hoja de contacto, descarga con registro de licencia
compose.pyTomas compuestas: pantalla dividida, revelación de teléfono, producto sobre campo de color, foto fija a clip
beats.pyTempo, cuadrícula de ritmos, drop, curva de sonoridad de una pista
matte.pyRecortar un sujeto de una foto fija; contorno y sombra de pegatina
get_fonts.pyObtener fuentes de licencia abierta en fonts/
fetch_asset.pyDescargar cualquier archivo que el usuario pueda usar y registrar su licencia
transcribe.pyTemporización de palabras para subtítulos y cortes de cabeza parlante (necesita un paquete whisper)
preflight.pyComprueba una especificación: archivos, duración, plataforma, afirmaciones, proporción de b-roll, puntuación del nivel de producción; --offline relaja fuentes y b-roll
render.pyRenderiza una especificación: fotogramas, hojas de contacto, vistas previas, finales, renderizaciones de una sola escena

Requisitos: Python 3.8+, numpy, Pillow, ffmpeg. Opcional: scipy (mates más rápidos), rembg (recortes de fotos con mucho detalle), faster-whisper (transcripciones). Clave API gratuita de Pexels o Pixabay para b-roll.

Skills relacionados