Install
openclaw skills install @formula100k/tutorial-viral-f100kOrquesta un tutorial viral faceless (sin cara) de FÓRMULA 100K: de una idea o guion a un kit listo para montar. Fase 1 guion con marcas [PANTALLA]/[CARD]/[CTA]; Fase 2 brief de grabación (voz real + pantallas que graba la usuaria); Fase 3 genera cards, mockups y B-roll con Higgsfield o Gemini y capturas tipo tutorial en PNG; Fase 5 entrega GUION.md, BRIEF_GRABACION.md, MANIFEST.md (qué card entra en qué palabra) y un .zip de recursos por Telegram para montarlo en CapCut. En este agente no renderiza ni edita el video; opcional: un borrador juntando clips generados en Higgsfield. Activar cuando se diga: 'tutorial viral', 'explicación viral faceless', 'video sin cara', 'hazme un tutorial de X', 'video tipo screen recording con captions', '/tutorial <tema>'. NO usar para talking-head reels, carruseles, stories ni miniaturas.
openclaw skills install @formula100k/tutorial-viral-f100kEsta versión corre en un agente OpenClaw (servidor + Telegram), no en Claude Code. Antes de seguir, lee la skill
f100k-puente: traduce herramientas y rutas. Lo específico de esta skill:
- Fases 1, 2 y 3 corren igual. La Fase 4 (
render_tutorial.py, Remotion, corte de silencios, captions cinéticos quemados) no corre aquí y los scripts no vienen en este paquete.- Fase 2: el brief va por Telegram. La usuaria NO te manda voz ni pantallas para renderizar: las graba y las monta ella en CapCut (u otro editor) con el kit que le entregas.
- Fase 3: cards, títulos y CTA con el plugin de Higgsfield (
nano_banana_2) oGEMINI_API_KEY; capturas de terminal/pasos/callouts concapturas-tutorial-formula100k(HTML → PNG con Chromium); capturas de webs sin login con tu navegador. B-roll animado con Higgsfield (video). Todo con costo total → ✅ → generar.- Si pide «un borrador sin grabar»: genera un clip de Higgsfield por beat del guion (mismo formato 9:16 y fps) y júntalos con
ffmpeg -f concat -safe 0 -i lista.txt -c copy borrador.mp4. Nada más: sin subtítulos, sin overlays, sin mezclar voz.- Fase 5 en lugar de
BORRADOR_AUTO.mp4:GUION.md,BRIEF_GRABACION.md,MANIFEST.md(qué card entra en qué palabra) y un.zipconIA/yWEB/, enentregables/tutoriales/<fecha>_<slug>/y por Telegram. Dile que los captions los saque con los subtítulos automáticos de su editor.- Recursos web: nunca stock ni imágenes de redes con sesión iniciada; si un recurso no se pudo verificar mirándolo, no entra al MANIFEST.
Esta skill enseña un método. El método es agnóstico de industria: sirve igual para formulación cosmética, nutrición, repostería, fisioterapia, finanzas o jabonería. Los ejemplos escritos aquí abajo son ilustraciones del método, nunca del tema.
Antes de escribir nada:
[TU OFERTA], [TU RESULTADO]). Nunca asumas que el rubro es marketing.El método viaja, el rubro no. El mismo molde, vestido con rubros distintos:
| Rubro | El mismo molde |
|---|---|
| Cocina | "Así es mi cena favorita para no dormir con el azúcar alta." |
| Relaciones | "5 señales de que estás forzando una relación que ya no funciona." |
| Finanzas | "La principal causa de un divorcio no es una infidelidad." |
| Formulación cosmética | "El conservante decide si tu crema dura tres meses o te da una infección. No el aceite." |
| Jabonería | "Si tu jabón se pone blando a los dos días, no fue el aceite. Fue la sosa." |
| Fisioterapia | "Ese dolor de rodilla al bajar escaleras casi nunca nace en la rodilla." |
| Repostería | "Tu bizcocho se hunde en el centro por la temperatura, no por la harina." |
| Jardinería | "Tu planta no se está muriendo de sed. Se está ahogando." |
Mismo molde en todos; ninguno menciona reels ni embudos. Haz exactamente eso.
Pipeline de extremo a extremo para producir tutoriales cortos virales sin cara (faceless): screen recording + cards generadas por IA + captions cinéticos automáticos + voz real del usuario. De una idea a un BORRADOR_AUTO.mp4 listo para retoque en CapCut/Premiere.
La referencia de este diseño: un reel tutorial faceless con screen-recording, captions cinéticos y cards pop-in.
Cuando el usuario:
/tutorial <tema> o /tutorial-render <carpeta>editor-video-formula100kcarrusel-render-formula100khistorias-a-imagenes-nanobananaminiatura-youtube-formula100kpublicar-ig/tutorial <tema> → arranca desde Fase 1 (guion). Ejemplo: /tutorial cómo usar Claude Code/tutorial-render <carpeta> → salta directo a Fase 4 (re-render) con una carpeta ya existente que tenga MANIFEST.md, captions.json y USER/voz.*$DESTTodas las carpetas del proyecto viven en:
entregables/tutoriales/<fecha>_<slug>/
Ejemplos:
entregables/tutoriales/2026-06-18_como-usar-claude-code/entregables/tutoriales/2026-06-20_automatiza-con-ia/La skill crea la carpeta si no existe. El slug se genera del tema (minúsculas, guiones, sin tildes).
FASE 1 Guion
FASE 2 Plan + Brief de grabación ⏸ ÚNICO CHECKPOINT HUMANO
FASE 3 Generación de recursos
FASE 4 Ensamblaje + render
FASE 5 Entrega
Invocar la skill guionizacion-formula100k con estructura tutorial/explicación:
El guion lleva marcas inline que definen qué hace cada capa:
| Marca | Significado | Responsable |
|---|---|---|
[PANTALLA: descripción] | Captura o grabación de pantalla específica | el usuario graba |
[CARD: idea/concepto] | Tarjeta visual, mockup o ilustración | Skill genera |
[CTA: texto] | Tarjeta final de llamada a la acción | Skill genera |
Si el usuario trae un guion propio, la skill lo normaliza a este formato antes de continuar.
Guardar como: $DEST/GUION.md
Esta es la única pausa humana del pipeline.
La skill:
$DEST/BRIEF_GRABACION.md (ver plantilla abajo)$DEST/USER/ con instruccionesLuego espera con AskUserQuestion: "¿Ya pegaste los archivos en $DEST/USER/? Cuando estén listos seguimos con la Fase 3."
El usuario entrega:
$DEST/USER/voz.m4a (o .wav, .mp3) — su voz leyendo el guion completo de corrido$DEST/USER/pantalla_01.mov, pantalla_02.mov, … — grabaciones de pantalla mudas numeradasBRIEF_GRABACION.md# Brief de grabación — <título del video>
## 🎙️ Tu voz
Lee este guion completo de corrido y mándame el audio (un solo archivo):
<guion limpio para leer, sin las marcas [PANTALLA]/[CARD]/[CTA]>
→ Guarda como: voz.m4a (o el formato que tengas)
## 🖥️ Pantallas a grabar (mudas, sin narrar)
1. [~0:03–0:10] Abrir <herramienta> y escribir el prompt "<texto>" (~7s)
2. [~0:11–0:18] Mostrar <resultado generándose> (~7s)
3. CAPTURA (screenshot): pantalla final del resultado
## 📦 Cómo mandármelo
Pega los archivos en: $DEST/USER/
Cada pantalla numerada incluye: qué mostrar, duración aproximada, y a qué línea del guion corresponde. La duración estimada es orientativa — el ensamblaje las ancla por keyword del transcript, no por timestamp.
Con el GUION.md en mano (antes de que el usuario grabe), la skill genera todos los assets IA:
| Recurso | Herramienta | Destino |
|---|---|---|
| Cards / títulos / mockups de texto | banana (Nano Banana / Gemini) con brandkit F100K | $DEST/IA/ |
| Capturas UI y mockups de herramientas | capturas-tutorial-formula100k | $DEST/IA/ |
| Ilustraciones y B-roll generado | Higgsfield (Seedance 2.0) | $DEST/IA/ |
| Recursos web (B-roll de apoyo) | búsqueda web + descarga | $DEST/WEB/ |
La skill puede arrancar Fase 3 en paralelo mientras el usuario graba (si el usuario lo indica). Por defecto espera la confirmación del checkpoint.
Una vez que $DEST/USER/voz.* existe:
Comando único:
python3 skills/tutorial-viral-f100k/scripts/render_tutorial.py "$DEST" "$DEST/USER/voz.<ext>"
Reemplazar <ext> con la extensión real del archivo (m4a, wav, mp3).
Lo que hace internamente:
cut_silences_and_fillers.py del motor) — produce _voz_cut.m4a y captions.json (word-level timestamps). La voz es la fuente de verdad del timeline.cues.json (manifest_to_cues.py) — ancla los cues a keywords del transcript. Avisa si alguna keyword no aparece en el transcript.public/ — vincula IA/, WEB/ y el audio cortado al template Remotion.tutorial-faceless → $DEST/BORRADOR_AUTO.mp4 (1080×1920 @ 30fps).Tiempo típico: ~3–5 min por minuto de audio en Apple Silicon.
Outputs finales:
| Archivo | Descripción |
|---|---|
$DEST/BORRADOR_AUTO.mp4 | Video renderizado listo para retoque |
$DEST/MANIFEST.md | Cues keyword-based para iterar sin re-transcribir |
$DEST/captions.json | Word-timestamps (fuente de verdad del timeline) |
$DEST/GUION.md | Guion con marcas (referencia para iteración) |
$DEST/BRIEF_GRABACION.md | Archivado para referencia futura |
La skill reporta duración del borrador y abre el archivo con open "$DEST/BORRADOR_AUTO.mp4".
tutorial-faceless1080×1920 @ 30fps. Capas de fondo a frente:
object-fit: cover) con tratamiento "monitor" (rotación leve + viñeta radial), o card/B-roll generado fullscreen cuando no hay pantalla, o negro #0d0d0d en los gaps.WebkitTextStroke), spring por palabra, sincronizados con la voz vía captions.json. Generados automáticamente del transcript — cero entrada manual. Posición default: lower-third (para no tapar las cards centrales; configurable en MANIFEST).Reglas de oro:
editor-video-formula100k que va sin subtítulos)pop.wav del motor)transform y opacity (principios Emil Kowalski)Extiende el parser keyword-based existente (manifest_to_cues.py). Esqueleto mínimo:
# Tutorial — <título corto>
- **Voz fuente:** USER/voz.m4a
- **Fecha:** 2026-06-18
## Tarjeta gancho
- **Archivo:** `IA/HOOK_<slug>.png`
- **Duración:** 3.0
## Fondo
| Keyword | Archivo | Duración | Estilo |
|-------------|----------------------------|----------|-----------|
| prompt | USER/pantalla_01.mov | 7.0 | monitor |
| resultado | USER/pantalla_02.mov | 7.0 | monitor |
| herramienta | IA/card_fullscreen_01.png | 5.0 | fullscreen|
## Cards
| Keyword | Archivo | Ancho | Duración | Posición | Rotación |
|-------------|-----------------------------|-------|----------|----------|----------|
| automatiza | IA/card_automatiza.png | 800 | 2.5 | center | -2 |
| gratis | IA/card_gratis.png | 760 | 2.0 | center | 1 |
## B-roll
| Keyword | Archivo | Duración | Estilo |
|-------------|-----------------------------|----------|------------|
| internet | WEB/broll_ai_demo.mp4 | 3.0 | fullscreen |
## CTA
- **Archivo:** `IA/CTA_comenta.png`
- **Duración:** 4.0
## Captions
- **Estilo:** lower-third
- **Posición:** lower-third
- **Activar:** sí
| Sección | talking-head (editor-video) | tutorial-faceless (esta skill) |
|---|---|---|
## Header | Gancho textual 2 líneas sobre la cara | No aplica (reemplazado por ## Tarjeta gancho) |
## Énfasis | Caja blanca en zona inferior | No aplica (las cards toman el centro) |
## Overlays | Tercio inferior, no tapa la cara | ## Cards — pueden ir al centro |
## Subtítulos | Desactivados | Activados automáticamente del transcript |
## Fondo | No existe (es el video del usuario) | Segmentos de screen recording o cards fullscreen |
## Tarjeta gancho | Sticker esquina superior | Card de apertura fullscreen (2–4s) |
## CTA | No existe como sección propia | Tarjeta final dedicada |
$DEST$DEST/
├── GUION.md ← guion con marcas [PANTALLA]/[CARD]/[CTA]
├── BRIEF_GRABACION.md ← instrucciones de grabación para el usuario
├── MANIFEST.md ← cues faceless (consumido por el render)
├── USER/ ← archivos que entregal usuario
│ ├── voz.m4a
│ └── pantalla_01.mov ...
├── IA/ ← cards, mockups, ilustraciones generadas
├── WEB/ ← B-roll / recursos web
├── _voz_cut.m4a ← voz cortada (sin silencios)
├── captions.json ← word-timestamps (fuente de verdad del timeline)
├── cues.json ← input Remotion (regenerado en cada render)
└── BORRADOR_AUTO.mp4 ← OUTPUT FINAL
Esta skill reutiliza el motor de editor-video-formula100k (Node/ffmpeg/Whisper/Remotion). Si ya usas esa skill, no hay nada más que instalar.
Si es la primera vez en esta máquina:
bash skills/editor-video-formula100k/scripts/bootstrap.sh
Solo verificar sin instalar:
bash skills/editor-video-formula100k/scripts/bootstrap.sh --check
Requiere Homebrew instalado previamente en macOS. Si no lo tienes:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Cambiar un cue del MANIFEST:
$DEST/MANIFEST.md (keyword, archivo, duración, posición)python3 skills/tutorial-viral-f100k/scripts/render_tutorial.py "$DEST" "$DEST/USER/voz.<ext>"
El corte se saltea si _voz_cut.m4a ya existe.Re-grabar solo la voz (sin re-grabar las pantallas):
$DEST/USER/voz.m4a con el nuevo archivo$DEST/_voz_cut.m4a y $DEST/captions.jsonCambiar posición de captions (center ↔ lower-third):
## Captions del MANIFEST (Posición: center)Atajo conversacional de re-render:
/tutorial-render entregables/tutoriales/2026-06-18_mi-tutorial/
| Error | Acción |
|---|---|
render_tutorial.py: voz no encontrada | Verificar que el archivo exista en $DEST/USER/ con el nombre exacto indicado |
| Keyword no aparece en transcript | Editar el MANIFEST con una palabra que sí esté en el transcript (ver captions.json) |
bootstrap.sh reporta Homebrew faltante | Instalar Homebrew con el comando oficial y reintentar |
npm install falla en Remotion | Correr sudo chown -R $(whoami) ~/.npm y reintentar |
| Captions desfasados de la voz | Drift de Whisper — raro; borrar captions.json y re-render fuerza re-transcripción |
| Pantalla dura menos que su segmento | El motor hace loop/hold del último frame; ajustar duración en MANIFEST si se ve raro |