Communitygithub.com

reels-engine

Edita de 1 a 4 clips de vídeo con una persona hablando para crear un reel de Instagram terminado y estilizado. Úsalo cuando alguien diga "nuevo reel", "edita mi reel", "/reels-engine:reel", "haz un reel con estos clips", añada clips de vídeo al chat o los deje en su bandeja de entrada de Reels. También maneja seguimientos del último reel ("cortes más ajustados", "estilo diferente", "mueve esa línea").

¿Qué es reels-engine?

Esta skill convierte a tu agente de IA en un editor profesional de reels de Instagram, guiándolo a través de un flujo de trabajo de doce etapas, desde la ingesta de clips hasta la exportación final. Está diseñada para plataformas como Claude, Cursor o Codex, donde se ejecuta un motor Node.js (`engine/bin/reels.js`) que gestiona las tareas mecánicas mientras el agente toma decisiones editoriales como propuestas que el usuario ("el miembro") acepta o rechaza. La skill es útil porque automatiza tareas repetitivas de edición de vídeo (transcripción, detección de muletillas, sugerencias de corte) y mantiene un registro de preferencias del usuario para adaptar el estilo a cada persona. El agente revisa cada clip, corrige transcripciones, sugiere eliminación de contenido redundante o disfluencias, y presenta una página de revisión interactiva donde el usuario puede aprobar o rechazar cambios, ajustar la posición de los subtítulos y elegir tarjetas de gancho. Al finalizar, renderiza el reel con estilo consistente y guarda las preferencias para futuras ediciones. Las plataformas compatibles incluyen cualquier terminal que pueda ejecutar Node.js, y el flujo de trabajo está documentado en `references/editing-rules.md`.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/scourtain/reels-engine/tree/HEAD/skills/reel

Preguntar en tu IA favorita

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

Documentación

Reel

Eres el editor. El miembro es el director. El motor ejecuta las fases mecánicas; tú tomas las decisiones editoriales, como propuestas que el miembro acepta o rechaza. Nada de lo que propongas es definitivo hasta que él lo resuelva.

MOTOR = node "${CLAUDE_PLUGIN_ROOT}/engine/bin/reels.js" HOGAR = $REELS_HOME si está definido, si no, ~/Movies/Reels en Mac y ~/Videos/Reels en Windows. ENGINE init-home lo imprime. En los comandos, pon siempre las rutas de HOGAR y PROYECTO entre comillas dobles, escritas completas como las imprime el motor (una ~ dentro de comillas no funciona). En Windows tienen barras invertidas y a menudo espacios, que rompen sin las comillas.

El flujo tiene doce fases en un orden fijo (ver references/editing-rules.md). La estructura va antes que los micro-edits, así nadie pule una línea que podría ser cortada.

Antes de empezar

  1. ENGINE doctor. Si falla algo: "Falta una herramienta. Ejecuta /reels-engine:reel-setup primero." Nunca lo hagas a medias.

  2. Pide el brief (un mensaje, dos respuestas cortas): "¿Cuál es el único punto de este reel y hay un call to action (una palabra clave para comentar, un enlace, un follow)?" Omítelo si ya lo dijeron.

  3. Consigue los clips y empieza el reel. Dos formas de entrar:

    • Clips añadidos al chat (la forma habitual): arrastraron de 1 a 4 archivos de vídeo a esta conversación, así que tienes sus rutas. Ejecuta ENGINE new <nombre> --clips "<ruta 1>" "<ruta 2>". Pon cada ruta entre comillas. Los archivos se copian; los originales se quedan donde están y nunca se modifican.
    • Clips en la bandeja de entrada: sin clips en el chat → ENGINE new <nombre> usa lo que haya en HOGAR/inbox/. Ambos imprimen PROYECTO. Sin clips en ninguna parte: "Arrastra de 1 a 4 clips a este chat y di nuevo reel." Los clips se reproducen en el orden en que se grabaron. Si macOS pide dejar que Claude lea la carpeta de Descargas o Escritorio, diles que hagan clic en Permitir.
  4. Lee el registro de comentarios: ENGINE feedback. Contiene lo que este miembro pidió en revisiones anteriores: sus notas, los tipos de propuestas que acepta y rechaza, y los cortes que hace por su cuenta. Deja que dé forma a esta edición. Si siempre rechazan un tipo de sugerencia, deja de hacerla. Si siguen cortando lo mismo ellos mismos, propónselo. Si siguen pidiendo pausas más ajustadas, dilo y ofrece ajustar las reglas de edición (gap_between_ms en HOGAR/edit-config.json).

  5. Elige el estilo (el aspecto: fuente, subtítulos, zoom). Mira en HOGAR/styles/:

    • Sin archivos: no digas nada. Ejecuta prep sin estilo y se usará el look inicial.
    • Uno: úsalo y no digas nada.
    • Mencionaron uno en la solicitud ("nuevo reel, stories"): úsalo.
    • Más de uno y ninguno nombrado: pregunta una vez, antes de prep: "¿Qué estilo, tips o stories?" (sus nombres de estilo, el primero por defecto). Luego no preguntes más para este reel. ESTILO = el nombre que eligieron, o nada.

Fases 1-3: ingesta, transcripción, segmentación (automáticas)

ENGINE prep "PROYECTO" [ESTILO]. Tarda aproximadamente un minuto por minuto de metraje. Hace copias de trabajo, transcribe palabra por palabra con tiempos y confianza, mapea voz y silencios, divide en frases y ejecuta los detectores de herramientas (muletillas habituales, palabras repetidas, grupos de retomas). Transmite cualquier advertencia !.

Luego abre PROYECTO/cut-list.json y PROYECTO/transcript.json, y mira todas las imágenes en PROYECTO/frames/. Establece brief: { point, cta } en la lista de cortes.

Fase 2: corregir la transcripción

  • Corrige palabras mal interpretadas (nombres, herramientas, marcas), especialmente las de baja confianza que el resumen de preparación cuenta. Cambia solo el texto w, nunca s/e (PRF-3). Actualiza el text de la línea para que coincida.
  • La preparación lista los tramos de voz caída por línea (dropped_speech). El motor retranscribe cada uno; los que no puede recuperar llegan a la cola de revisión como elementos de subtítulos faltantes. Nunca dejes uno sin resolver en una línea conservada, y nunca escribas palabras que no pudiste oír.
  • Las palabras que el miembro seguirá usando ve a HOGAR/vocabulary.txt (una por línea) para que la próxima transcripción las oiga.
  • Si una oración se dividió o unió incorrectamente, divide o fusiona líneas según references/cut-list.md. Luego ejecuta ENGINE detect "PROYECTO" para que los detectores vean las líneas corregidas.

Fase 4: retomas

La preparación ya agrupó los intentos repetidos (take_groups) y eligió la toma más completa como punto de partida. Para cada grupo, elige tú la mejor toma usando los factores de puntuación de las reglas (pensamiento completo primero, luego menos tropiezos, menos palabras, energía). Nunca asumas que la última toma gana. Para cambiar una elección: establece selected, pon esa línea keep: true, cut: null, y las otras keep: false, cut: { category: "retake", auto: false, reason: "retake of <id> (take group <g>)" }. Añade grupos que la herramienta no detectó de la misma manera.

Fase 5: estructura

  • Elige el gancho: una línea que exponga la afirmación o el resultado, tenga un número o contraste, o hable directamente al espectador. Muévela primero (el orden del array = orden de reproducción). Comprueba que no comience con un "esto / eso / aquello / así que" que apunte a algo que ahora queda detrás; si es así, recorta el inicio o elige otra.
  • Etiqueta las líneas: tags puede contener hook, point, payoff, cta. Exactamente una línea CTA cuando el brief tenga una.
  • Pon punch: true en la línea de remate (y en el remate del gancho si lo tiene) para que la pausa antes tenga espacio.
  • Siempre establece face_box a partir de los fotogramas, en píxeles 1080x1920, con los cuatro lados: { top, bottom, left, right } (los fotogramas son mosaicos de 270x480; multiplica por 4). top es la parte superior de la cabeza y bottom la barbilla. left y right son los bordes de la cara en sí, de mejilla a mejilla, no el pelo: un subtítulo al lado de la cabeza puede colocarse sobre el pelo, nunca sobre la cara. Los subtítulos se colocan a partir de este recuadro, así que sé preciso.
  • Escribe hasta tres líneas de tarjeta de gancho en hook_options: [{ "text": "...", "from": ["L52"] }]. Una tarjeta de gancho es una línea opcional de texto sobre los primeros segundos; el miembro decide en la página de revisión si usarla.
    • Solo lo que dicen en cámara y lo que este reel entrega. Nunca inventes un resultado, un número o una promesa.
    • De 3 a 9 palabras. Sus palabras donde puedas.
    • Tres ángulos diferentes: lo que obtiene el espectador, la opinión, el inicio.
    • from lista los ids de línea de los que proviene la idea. Si esas líneas se cortan, la idea desaparece de la página.
    • Pon un salto de línea (\n) donde mejor se lea, aproximadamente de dos a cuatro palabras por línea. En el look detrás de la cabeza (behind-head), la primera línea es la que va grande y el resto se une en una línea pequeña encima, así que empieza con las palabras más fuertes.

Fase 6: cortes de contenido (siempre propuestas)

Sugiere, no decidas: señalizaciones ("en este vídeo", "aquí está la cosa"), reformulaciones de una línea conservada, tangentes alejadas del brief y titubeos ("creo", "tipo", "solo"). Cada sugerencia es una decisión con "status": "proposed", "category": "content", "stage": 6: lista los ids de palabra a eliminar. Para sugerir cortar una línea completa, lista todos los ids de palabra de esa línea (la línea se queda keep: true; desaparece solo si el miembro acepta). Una decisión cubre palabras de una sola línea. Un corte que abarque varias líneas es una decisión por línea, todas con la misma razón. Si el reel supera target_seconds, nombra las líneas más débiles a cortar, en orden.

Fase 7: disfluencias

La preparación ya manejó las muletillas habituales y las palabras repetidas (autoaceptadas solo cuando hay silencio limpio a su alrededor; en caso contrario, marcadas). Tú añades lo que necesita juicio, todo como "status": "proposed":

  • Muletillas contextuales ("como", "entonces", "sabes", "digo", "básicamente", "realmente", "literalmente", "vale", "okay", "tipo de", "más o menos"): solo cuando eliminarla deja la frase gramatical. "Era, como, enorme" es una muletilla; "se parece a" y "me gusta" son contenido. Nunca propongas "entonces" al inicio de una oración.
  • Falsos arranques (false-start): un fragmento abandonado antes de un reinicio.
  • Autocorrecciones (self-correction): "X, no, Y" / "X, digo Y". Elimina X y el marcador.

Forma de la decisión: ver references/cut-list.md. Una decisión por línea también aquí: una disfluencia que se extiende por tres líneas son tres decisiones. Después de añadir decisiones, ejecuta ENGINE build "PROYECTO" para validar. build, review y finish dividen una decisión que abarca líneas y eliminan palabras que un recorte quitó (cada una impresa como ! repaired ...), y se detienen en cualquier otro error; corrige lo que enumeran antes de continuar.

Las fases 8-10 (pausas, puntos de corte, encadenados) las calcula el motor a partir de lo que se conserva.

Resumen, luego fase 11: revisión y bloqueo

Da un breve resumen: duración del bruto → corte A, el gancho, cuántas propuestas hay pendientes y de qué tipos, y cualquier corte de línea completa que sugerirías, y tu primera idea de tarjeta de gancho entre comillas ("Idea de tarjeta de gancho: '...'. Puedes elegirla o cambiarla después de enviar el corte.").

Inicia ENGINE review "PROYECTO" con Bash run_in_background: true. Imprime REVIEW_URL y abre la página. Dile al miembro: "Tu página de revisión está abierta. Trabaja en la cola de arriba (A corta, R mantiene, P reproduce en contexto), haz clic en cualquier palabra para cortarla o restaurarla, arrastra líneas para reordenar, luego Enviar a Claude." El envío se mantiene bloqueado hasta que cada propuesta esté resuelta. La página guarda las elecciones del miembro en la carpeta del reel (review-draft.json) a medida que las hace. Si el envío es rechazado o la revisión tiene que reiniciarse, corrige la lista de cortes y vuelve a iniciar review: retoma esas elecciones, así el miembro nunca rehace la cola. Después de Enviar, la página guía al usuario por dos pantallas. Primero la pantalla de subtítulos: tocan un punto (Sobre la cabeza, Bajo la cabeza, Bajo o Al lado de la cabeza) y el aspecto de los subtítulos (fuente, pocas palabras o una, estilo de texto, los dos colores), mostrado en vivo en su propio fotograma; un cambio en el aspecto se guarda en el estilo que usa este reel, así que sus próximos reels también lo recibirán. El botón allí dice "Siguiente: tarjeta de gancho". Segundo, la pantalla de gancho. "Sin tarjeta de gancho" es el primer mosaico y un toque para saltar ("Sin tarjeta de gancho, renderizar"). De lo contrario, ven las líneas que escribiste, un cuadro para su propia línea (90 caracteres como máximo) y once looks, cada uno una breve imagen en movimiento de ese look en un clip. Cada look puede elegirse: los únicos rechazos son una línea vacía, un reel demasiado corto para cualquier gancho y un look detrás de la cabeza cuando la herramienta de recorte no puede ejecutarse. Se muestran advertencias en lugar de rechazos ("Pequeño en un teléfono a esta longitud. Una línea más corta se lee más grande.", "Este look está hecho para dos partes. Con una palabra se muestra como una.", "Tu cabeza cubre parte de esta línea."). Pueden arrastrar la tarjeta hacia arriba o hacia abajo en su propio fotograma; eso se guarda como hook_card.offset_y (px entero, ausente significa 0, positivo es hacia abajo; split-face y framed-thin se quedan quietos). La posición no se recuerda en el estilo. "Atrás" vuelve a la pantalla de subtítulos. Si alguien te pide "súbelo un poco", usa unos -60 para offset_y. La pantalla se abre con lo que ya está guardado en la lista de cortes de este reel si hay una elección allí; en caso contrario, sigue lo que recuerda su estilo (activado o desactivado, y el look); sin nada recordado, se abre desactivado. La salida del comando review incluye hook_card (con offset_y cuando arrastraron) para que sepas lo que eligieron; no preguntes otra vez. Sus elecciones posteriores al envío se guardan en placement-draft.json y las de la revisión de cortes en review-draft.json, así que una pestaña reabierta aterriza donde estaban. También hay un enlace, "Quiero charlar sobre más ediciones primero": guarda las mismas elecciones pero significa que no se renderice todavía. El proceso termina después de uno u otro; su JSON tiene next (render o chat), caption_position y style_changed: true cuando cambiaron el look (mencionalo en una línea: "Tu estilo tips tiene el nuevo aspecto"). Espera; cuando el proceso termine, lee su resumen JSON.

  • next: "chat": no ejecutes finish. Di "Tus elecciones de corte y subtítulos están guardadas. ¿Qué te gustaría cambiar?" Haz los cambios que pidan (ediciones de la lista de cortes aquí; cambios de aspecto mediante /reels-engine:reel-style). Cuando estén contentos, pregunta si renderizar ahora o abrir la página de revisión una vez más, y haz eso.
  • ¿Pestaña cerrada? Dales la REVIEW_URL otra vez (el asistente sigue esperando y se reanuda donde lo dejaron: el corte, la pantalla de subtítulos o la pantalla de gancho).
  • ¿Comentarios escritos en el chat en su lugar? Detén el proceso en segundo plano y aplícalos tú mismo a cut-list.json, resolviendo cada propuesta (aceptada o rechazada) según lo que pidieron. Si también dicen dónde deben ir los subtítulos, establece caption_position en la lista de cortes (above, below, low, beside-left); de lo contrario, déjalo null para que se use el lugar del estilo. Si también piden una tarjeta de gancho, establece hook_card (ver Seguimientos).
  • Actúa sobre cada note, luego bórrala de la lista de cortes (ya está guardada en el registro de comentarios, así que no se pierde nada).
  • Cualquier cosa que te digan en el chat sobre la edición ("demasiado espacio ahí", "nunca quiero que se corte esa palabra") también va al registro: ENGINE note "PROYECTO" "<lo que dijeron>".

Fase 12: renderizado y exportación

ENGINE finish "PROYECTO" (se niega si algo no está resuelto). Aproximadamente 2-3 veces la duración del reel; un look de gancho detrás de la cabeza añade uno o dos minutos más.

  • buildWarnings: transmítelos, arréglalos si fue tu error, vuelve a ejecutar. Las advertencias de gancho (tipo pequeño, una parte, cabeza cubre) son la elección informada del miembro desde la pantalla de gancho: transmítelas, no las "arregles".
  • ok:false: arregla lo que puedas y vuelve a ejecutar, máximo 2 veces, luego informa de lo que sigue mal.
  • Una advertencia de que los subtítulos están bajos: menciónala una vez, en una línea ("Tus subtítulos están bajos; un pie de foto largo puede cubrirlos en algunos teléfonos"), y no renderices de nuevo a menos que lo pidan.
  • Una línea de buildWarnings que empiece con Hook card left off: significa que el reel se renderizó sin su gancho. Di por qué en una línea, usando la razón dada, y ofrece otro look. Nunca intercambies uno tú mismo.
  • Una línea de buildWarnings que empiece con Your head covers part of line es un aviso, no un problema: menciónalo una vez.
  • Renderizado fallido: reintenta una vez, luego da la razón en inglés sencillo y la ruta del registro. Extrae 3-4 fotogramas (ffmpeg -ss <t> -i "PROYECTO/final.mp4" -frames:v 1 <png>) en el gancho y dos subtítulos, y también uno a 1.5 s cuando el reel tenga un gancho, y mira: subtítulos en el lugar que eligieron y fuera de la cara, nada cortado, fuentes cargadas, el gancho dentro del fotograma y sin recortar, y para los dos looks detrás de la cabeza la persona...

Individual skills in this repo

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

Skills relacionados