Communitygithub.com

marsik641/space-shorts

Pasos 2 a 4 del pipeline de un short: en el worktree del short, producir un vertical Short espacial (≤ 30 s, solo EN) para The Universe Inside Out — hechos, brief visual, guion, planos, hero-frames y video borrador para aprobación, luego final mediante cola común de dos PCs de render hasta release (MP4 + publish_en.md) y fusión de la rama en main. Usar para «hagamos la variante N», «/make-video», «lanza el video sobre X», «paquete para subir».

¿Qué es space-shorts?

Esta skill implementa los pasos 2 a 4 del pipeline de producción de shorts verticales para el canal The Universe Inside Out. Su propósito es tomar una selección del usuario (desde un archivo de ideas) y transformarla en un video corto de calidad cinematográfica en inglés, con una duración máxima de 30 segundos, siguiendo un proceso estructurado que incluye: investigación de hechos, creación de un brief visual detallado, diseño de guion, generación de planos y hero-frames, renderizado por lotes en una cola común de dos PCs, y finalmente liberación del producto (MP4 + archivo publish_en.md) con fusión automática de la rama. Utiliza herramientas como Blender, TTS, y una cola de render para manejar tareas pesadas de forma asíncrona, mientras el agente continúa con trabajo textual. Incluye controles de calidad (revisión de planos, aprobación del usuario, QA visual) y un manejo robusto de errores (reintentos, cancelaciones, re-render de planos defectuosos). Está diseñada para agentes como Claude Code o Codex, y requiere acceso a herramientas de render específicas y a una worktree de Git por cada short.

Compatible con✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/marsik641/space-shorts/tree/HEAD/.agents/skills/make-video

Preguntar en tu IA favorita

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

Documentación

/make-video — pasos 2 a 4: desde la selección hasta el release fusionado

Entrada: selección del usuario de un archivo de ideas de esta worktree («/make-video N» + correcciones) o un objeto nombrado por el usuario. Salida = DoD (AGENTS.md, «Pipeline de chats»): out/<ep>/release/ — master <ep>_en_1080x1920p60.mp4 y publish_en.md, dos archivos — entregados al usuario; QA visual aceptado; todo commiteado; rama fusionada en main (video_wt.py finish); worktree eliminada. Estándar — docs/quality.md: cine, no infografía; hechos — en palabras, espectáculo — en imagen; final hasta 6 h de GPU. Solo EN, objetivo 29–29.5 s, máximo 30.0 s (docs/shorts_format.md). Enlaces: proceso — docs/pipeline.md; aprobación — docs/approval.md; paquete — docs/publish.md; roles — docs/workflows.md; biblioteca — docs/spacekit.md; tiempos — docs/timings.md; cola — docs/render_queue.md; agentes, commits, gotchas — AGENTS.md. Comandos — Git Bash desde la raíz de su worktree; <ep> = epNNN_<slug>.

Paso 0 — worktree, cola, commits

  • Rama video/epNNN... después de /next-video — continuar en ella. Chat en copia principal sin /next-video — python tools/video_wt.py start → Claude EnterWorktree con path / Codex workdir.
  • Blender, TTS, música, ensamblaje — solo a través de la cola: tarea enviada — el chat continúa con trabajo textual.
  • Después de cada bloque — commit type(<ep>): ... con el modelo trailer. Fin del turno — árbol limpio.

Parte A — hasta aprobación

  1. Episodio. python tools/video_wt.py claim <slug> (slug — [a-z0-9_], ≤ 16, según nombre de catálogo). Copiar episodes/_template/ → episodes/<ep>/, en episode.json — id = nombre de carpeta, languages: ["en"] (rutas frames_dir/audio_dir no establecer). Al final del archivo de ideas: Seleccionado: N, <fecha>, correcciones: …, episodio: <ep>. Commit feat(<ep>): episodio desde la variante N.
  2. Hechos: investigador + verificador (docs/workflows.md) → facts.md (cada número con enlace, referencias visuales). Commit.
  3. Brief visual visual_brief.md (rol «Director»): referencias, primer fotograma, money shot, paleta, luz, cámara y evento de cada plano, convenciones, presupuesto. Crítico «Cine/wow» sobre el brief → correcciones. Commit.
  4. Guion script_9x16.json (EN): 6–8 segmentos, anclas at (s), 29–29.5 s (≤ 30.0 estricto), ≈ 55–70 palabras; primera frase — gancho factual; última conduce al inicio (bucle). en_cap — dígitos, | — saltos manuales (docs/pipeline.md, «Títulos y subtítulos»). Voz del canal — Kokoro af_heart ×0.98. Commit.
  5. Escena y planos. system.py (parámetros reales → pantalla, convenciones — en docstring); lo faltante — módulos spacekit/ (commit separado feat(spacekit): ..., regresion tools/imgdiff.py). shots_9x16.py según brief: 6–10 planos de 2–5 s, cada uno con ≥ 3 profundidades, clave + contraluz, halo/bloom, movimiento de cámara, motion blur, fondo no vacío (docs/quality.md). episode.json (edit, overlays en, subtítulos en zonas seguras), music_cues.json (propia tonalidad/modo/tempo). Empalmes — a tope, sobre eventos; último fotograma = primero. Σ fotogramas de edición ≤ 1799 a 60 fps. python tools/check_episode.py episodes/<ep>/episode.json. Commit.
  6. Vista previa de tiempos: python tools/render_queue.py submit preview episodes/<ep>/episode.json --with-tts, estado — status --json. Hoja out/<ep>/9x16/sheet_prev.png; sin Traceback/OVERRUN, con FLASH/EVENT; lista de cues — python tools/cues.py episodes/<ep>/episode.json --logs out/<ep>/9x16/logs.
  7. Hero-frames: por plano submit preview … --hero --shots vN --frames F,F+1,F+2 (F = mejor momento del plano; 100 %, sin --samples — muestras del código del plano, como en el final) → out/<ep>/9x16/hero/, sheet_hero.png. A críticos y propietario — fotograma F; según log hero_vN.log — s/fotograma y ETA (docs/timings.md). Muestras y efectos pesados ajustados en shots_9x16.py (commit, hero de nuevo) para que el final ocupe 4–6 h, no una hora.
  8. Crítica (docs/workflows.md): «Cine/wow» (puntuación planos 1–10, < 8 — rehacer, hasta 3 rondas), composición, ritmo/gancho, hechos (solo 4 bloqueantes docs/quality.md); opc. unicidad, sonido. Correcciones → repetir 6–7. Informes — archivos en el episodio, commit por ronda fix(<ep>): correcciones según crítica, ronda K.
  9. Video borrador completo (docs/approval.md, 1a): función draft en planos + episódico preview_movie.py mediante submit task. Si no se ensambla — para aprobación sin él, en mensaje «video borrador: no».
  10. Aprobación: mensaje según plantilla docs/approval.md + archivos (hero-frames, video borrador). Commit del estado. Detente y espera respuesta. Correcciones — volver al paso necesario.

Parte B — después del «ok»: hasta DoD (sin preguntas, excepto paradas de docs/approval.md)

  1. Aprobación en el historial. Listos la lista de cues acordada y publish_en.md según docs/publish.md (convenciones — en lista). Commit chore(<ep>): aprobado para render (correcciones del usuario — en el cuerpo).
  2. Final. python tools/render_queue.py submit final episodes/<ep>/episode.json --approved 'aprobación del usuario: fecha, contexto del chat'. La bandera registra el consentimiento ya obtenido, no lo reemplaza. Al usuario — id de tarea, PC, ETA. Worker elige PC, renderiza en porciones de 120 fotogramas y ejecuta framecheck, TTS, música, mix, build_edit, ensamblaje, QA automático y release. El chat puede cerrarse.
  3. Estado y fallos. status --json (progreso — cursor/steps; fotogramas hasta el final de la tarea están en snapshot snapshot, no en out/<ep>/). failed — log del paso en snapshot; fallo temporal del entorno — retry JOB; corrección de código/guion — cancel JOB, corregir en worktree, si es necesario nueva aprobación, nueva tarea. Framecheck FAIL — analizar RERENDER, eliminar fotogramas malos en snapshot (y en remote), retry JOB --rerender-shots vN. pause/resume — entre porciones. No matar bash superior.
  4. QA visual. needs_review = verificaciones automáticas y paquete listos. PNG out/<ep>/9x16/qa_en/ y master: no peor que hero-frames (ruido, borroso, sobreexposición, parpadeo), zonas seguras, subtítulos, desincronización, bucle. Limpio — python tools/render_queue.py accept JOB; defecto — corrección y nueva tarea.
  5. Entrega. Ambos archivos out/<ep>/release/ al usuario (Claude — SendUserFile). Si los fuentes cambiaron durante el render, comparar publish del snapshot y JSON de edición antes del commit.
  6. Registro. episodes/INDEX.md (planos, técnicas, voz, tonalidad, gancho), tabla de episodios en README.md, ✅ temas en docs/channel.md, mediciones s/fotograma en docs/timings.md, lecciones — en docs pertinentes. Commit docs(<ep>): registro y lecciones (código del episodio, edit_9x16_en.json, publish_en.md; sin out/).
  7. Fusión. python tools/video_wt.py finish — limpio → release → accept → git merge main → check_episode y tests → ff main → out/<ep>/ se traslada a la copia principal. Conflicto — resolver en worktree, commit, repetir. Luego salir de worktree (Claude — ExitWorktree keep) y desde la copia principal python tools/video_wt.py remove epNNN; no eliminar worktree de la aplicación (start --here). Solo ahora — «listo».

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados