Video Shotcraft (edición de proyecto)
La skill upstream completa se encuentra en skills/video-shotcraft/ (commit git e1d15d9, clon completo; no editar). Este archivo es un enrutador, no un reemplazo. Antes de construir, lee skills/video-shotcraft/SKILL.md en su totalidad, luego usa el mapa a continuación para acceder a cada capacidad. Las rutas son relativas a skills/video-shotcraft/ a menos que se indique lo contrario.
Valores predeterminados del proyecto (anulan "preguntar qué modo" de upstream)
- Modo: creación libre autónoma (
references/pipeline.md, etapas 0-7, sin confirmaciones etapa por etapa). Cambia solo cuando el usuario solicite: "dùng template" →template/TEMPLATE.md; "cùng làm / duyệt từng bước" →references/guided-free-creation.md; toma única → elige una tarjeta dereferences/shots/. - Las etapas 0-3 (brief del producto, dirección visual, mapeo de tomas, storyboard) están satisfechas por
docs/<video>/brief.md+script.mddel proyecto; transfiérelas a la especificación de diseño con la tabla de tomas| # | tiempo | toma | movimiento clave |. - El estilo proviene del brief, nunca de otro video ni de la plantilla Ink Press. Toma prestada la gramática de movimiento y los parámetros ajustados; cambia los colores/fuentes. El objetivo es 9:16 1080×1920, por lo que las recetas 16:9 deben rediseñarse, no copiarse píxel a píxel.
- Renderiza SOLO un archivo por video:
out/<video_id>-<voice-slug>-reel.mp4(con BGM), a través descripts/pipeline.py render. No renderices una versión sin BGM (decisión del usuario; anula la regla de dos versiones de upstream y el elemento A8 de la revisión final).
Mapa de capacidades
| Necesidad | Uso |
|---|---|
| Explorar/seleccionar tomas visualmente | Galería: cd gallery && python3 -m http.server 4178 → http://localhost:4178/library.html (150 clips ya en gallery/media/; índice en gallery/api/library.json) |
| Recetas de tomas (~124 tarjetas) | references/shots/<categoría>/ (cámara, datos, efectos, interacción, apertura, cierre, ritmo, transición, tipografía, entrada de UI); escanea el frontmatter, lee las tarjetas seleccionadas por completo |
| Código de referencia ajustado | demos/<categoría>/; lee el TSX de la demo exacta para cada tarjeta seleccionada ("参考实现" en la tarjeta). Nunca reescribas solo desde el nombre de la tarjeta; los parámetros "known pitfalls/命门" no deben debilitarse |
| Arcos de video completos | references/sequences/promo-energy-arc.md |
| Componentes reutilizables | assets/lib/ (PageCam, ClipCard, DigitRoll, FlashCut, Caption, FlatPanel, VerticalTicker, helpers). Cópialos en src/, no importes a través de ellos |
| Capturas de página reales (si el tema tiene un sitio web/app) | assets/scripts/capture-template.mjs (textura de página completa 2x + recortes de elementos + layout.json) |
| Autoverificación estética | references/aesthetic-rules.md (verifica mientras construyes, no solo al final) |
| Sonido | references/sound-design.md; audio en assets/audio/ (bgm/ 5 pistas, sfx/<categoría>/ 149 archivos; notas de licencia en assets/audio/ATTRIBUTION.md) |
| BGM con ritmo fuerte | references/music-beat-sync.md (analiza BPM primero, luego storyboard sobre los beats) |
| Revisión final independiente | references/final-review.md (subagente con contexto limpio) |
| Banco de trabajo (ajuste visual/exportación del video terminado) | references/workbench.md, node workbench/scripts/open.mjs <proyecto> → http://localhost:5198 (necesita el manifiesto src/workbench.ts; ofrecer después de la entrega) |
| Exportación de borrador Jianying | references/jianying-export.md (solo a pedido) |
| Publicar en redes sociales | references/publish-upload-post.md (solo a pedido; primero prueba en seco, nunca re-ejecutar en unknown) |
| Video completo listo + temas | template/ (Ink Press, 9 paletas, template/THEMES.md); solo a pedido |
| No para uso en producción | shot-polish/ (notas de rediseño interno de upstream), agents/openai.yaml (metadatos de UI de Codex), demos/_legacy |
Bucle de construcción (proyecto)
- Primero la línea de tiempo (
src/<nombre>Timeline.ts): duración de la toma = voz medida + ~0.5s (cierre +1.4s); los desplazamientos de SFX son relativos al inicio de la toma. - Por escena: elige tarjeta(s) de la galería/biblioteca, lee la tarjeta + demo TSX + componente(s)
assets/libnecesarios, adáptalos al estilo del brief. Registra las tarjetas elegidas endocs/<video>/design-spec.md. - Después de cada escena:
npx tsc --noEmit, luegonpx remotion still src/index.ts <CompId> out/qa/<id>-<frame>.png --frame=N(2+ fotogramas por toma) y lee los PNGs. Vuelve a renderizar las imágenes fijas después de cualquier cambio de estilo. - Audio: copia los archivos elegidos de
skills/video-shotcraft/assets/audioapublic/audio/<video_id>/, registra el origen/licencia endocs/<video>/assets-manifest.md. Mezcla según los objetivos del flujo de trabajo de producción Fase 7 (base de BGM 12–18 dB por debajo de la voz, atenuada de 4–6 dB adicionales mientras la voz habla), no un porcentaje fijo. - Renderiza a través de
python3 -I scripts/pipeline.py render <video_id>, verifica el volumen conebur128/volumedetect, y crea una hoja de contactos. - Revisión independiente por parte de un subagente con contexto limpio según
references/final-review.md+skills/viral-tech-video-creator/references/qa-checklist.md; corrige los hallazgos, vuelve a renderizar. - Después de la entrega: ofrece el banco de trabajo y (solo si se solicita) exportación Jianying / publicación.
Determinismo: no usar Date.now()/Math.random(). Zona segura: sin texto en los 210px inferiores. Los créditos del autor upstream y las invitaciones para mostrar son opcionales: mencionarlos como máximo una vez en la entrega, solo si el usuario muestra interés.