Communitygithub.com

depth-pov-explainer

Crea un documental de criaturas en segunda persona de 10 minutos completo en Claude Code en Windows: marca del canal, datos, guion, ritmo, voz ElevenLabs v4 con etiquetas de audio, material de archivo de Pixabay, renderizado con Remotion y miniatura.

¿Qué es depth-pov-explainer?

Depth POV Explainer es una habilidad profesional para Claude Code que permite crear documentales completos sobre criaturas en formato de video de aproximadamente 10 minutos, centrados en la pregunta "Por qué nunca querrías encontrarte con un [ANIMAL]". Está diseñado para Windows y guía al usuario desde la creación de la marca del canal hasta el renderizado final, pasando por la investigación de datos, la escritura del guion, la narración con voz realista de ElevenLabs v4, la selección de material de archivo de Pixabay y la animación con Remotion. La habilidad automatiza tareas como la sincronización de marcas, la generación de escenas y la aplicación de efectos de sonido, reduciendo drásticamente el tiempo de producción. Su estructura fija de guion garantiza videos atractivos con un ritmo consistente, mientras que la biblioteca de componentes visuales compartidos permite la reutilización y personalización entre proyectos. Es compatible con Claude Code, Remotion, ElevenLabs y Pixabay, y requiere Node.js LTS, Python con 'requests' y credenciales API de ElevenLabs y Pixabay. El flujo de trabajo detallado en 8 pasos asegura que cada video siga las mejores prácticas de narración visual, manteniendo coherencia de marca y originalidad.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LexroAI/depth-pov-explainer/tree/main

Preguntar en tu IA favorita

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

Documentación

Depth POV Explainer

Produce un video de ~10 min "Por Qué Nunca Querrías Encontrarte Con Un [ANIMAL]": gráficos de movimiento vectoriales planos animados con Remotion (todo se mueve; sin diapositivas estáticas), narrado con ElevenLabs Eleven v4, una idea visual por oración. Siempre habla al usuario en inglés, independientemente del idioma en que escriban; el guion, las etiquetas y los prompts también están en inglés de EE. UU. Escribe cada JSON/TXT/.env como UTF-8 sin BOM.

Paso 0 - Espacio de trabajo en D: (ejecutar cada vez, crear lo que falte)

Raíz: D:\DepthPOV (si D: no existe, preguntar al usuario por otra unidad).

D:\DepthPOV\.env
D:\DepthPOV\studio\            Proyecto Remotion (npx create-video@latest studio, plantilla Blank)
D:\DepthPOV\studio\src\lib\    Biblioteca visual compartida (core.tsx, sets.tsx, art.tsx, ui.tsx)
D:\DepthPOV\tools\             voice.py stock.py stock_pick.py sfx.py
D:\DepthPOV\videos\<slug>\     facts.json script.txt script_tagged.txt beats.json timing.json stock.json packaging.md voice.mp3 out.mp4 FINAL\
D:\DepthPOV\assets\stock\ music\ sfx\ thumbnails\
D:\DepthPOV\brand\brand.json

Incluido con esta habilidad (copiar en el espacio de trabajo cuando falte, nunca sobrescribir copias locales más nuevas): scripts/*.py -> D:\DepthPOV\tools\; remotion-lib/lib/*.tsx y brand.ts -> studio\src\lib\; remotion-lib/stills.mjs -> studio\; remotion-lib/example-blue-whale/ es un video completo terminado por el autor de la habilidad (13 archivos de capítulo, ~66 escenas persistentes, Main.tsx, Thumb.tsx) para leer como implementación de referencia, no para copiar escena por escena. La biblioteca toma el nombre del canal, los colores de acento y los colores de los personajes de studio\src\lib\brand.ts, que tools\sync_brand.py genera a partir de brand.json; nunca codificar un nombre de canal o color en una escena. Después de crear el estudio, ejecutar npx remotion add @remotion/media @remotion/google-fonts. Python necesita requests. Si falta .env, crearlo con valores vacíos y DETENERSE, indicando al usuario que lo abra en el Bloc de notas y complete las claves:

ELEVENLABS_API_KEY=
ELEVENLABS_VOICE_ID=
ELEVENLABS_MODEL_ID=eleven_v4
PIXABAY_API_KEY=

PIXABAY_API_KEY es gratuita: iniciar sesión en pixabay.com y copiar la clave que se muestra en https://pixabay.com/api/docs/ (una clave cubre tanto videos como fotos). Ignorar cualquier clave adicional que un .env anterior pueda contener. Nunca imprimir los valores de las claves. Verificar que Node.js LTS esté instalado; instalar las habilidades del agente de Remotion una vez con npx skills add remotion-dev/skills y cargarlas antes de escribir código de Remotion. Si el usuario dice "Retention", quiere decir Remotion. Mencionar una vez que Remotion es gratuito solo para individuos y empresas muy pequeñas (/remotion-license).

Paso 1 - Marca (solo en la primera ejecución, guardado en brand.json; omitir si brand.json existe)

Preguntar en orden, un mensaje cada vez, siempre con una recomendación:

  1. Nombre del canal. Preguntar si el usuario ya tiene un nombre. Si no, proponer 8 nombres en 3 estilos (misterioso, ej. "Archivos del Abismo"; explorador, ej. "Hacia lo Profundo"; directo, ej. "Por Qué Nunca Querrías"): 1-3 palabras, fáciles de decir en voz alta, sin nombres de canales grandes existentes, sin parecidos a "Depth Theory", que funcione si el canal luego sale del océano. Para cada uno, dar un @handle correspondiente. Decir al usuario que busque el nombre + handle en YouTube antes de comprometerse (Claude no puede confirmar disponibilidad). Guardar channel_name, handle, tagline.
  2. El personaje "tú", recomendar uno:
    1. Buzo (traje naranja, casco rojo) - océano; el más cercano a Depth Theory, menos distintivo.
    2. Piloto de minisubmarino - mar profundo; todo el video enmarcado por un ojo de buey redondo + HUD (profundidad, oxígeno). Recomendado para un canal solo de océano.
    3. Superviviente en balsa después de un naufragio - superficie oceánica; vista cenital de la balsa.
    4. Explorador con casco - jungla, cuevas, ríos, hielo; círculo de luz en la oscuridad. Recomendado si el canal se expande más allá del océano.
    5. Guardabosques / biólogo de campo - animales terrestres; binoculares + libreta de campo.
    6. Viajero en el tiempo - criaturas prehistóricas; contador de años (-66,000,000).
  3. Color de acento + fuente, y el estilo de apertura propio del canal (mostrar 3 muestras de aperturas en frío, el usuario elige). Guardar {channel_name, handle, tagline, character, look, signature_frame, accent {threat, safe, danger}, character_colors {suit, suit2, stripe, fins, fins_dark, lamp} (aletas en un color de alta visibilidad), font, opening_style} en brand.json, luego ejecutar python D:\DepthPOV\tools\sync_brand.py para escribir studio\src\lib\brand.ts, y reutilizarlo en cada video. La biblioteca de arte incluida dibuja al buzo; para cualquier otro personaje (piloto de submarino, explorador, guardabosques, viajero en el tiempo), construir un nuevo componente en art.tsx con las mismas reglas de anatomía (references/visual-style.md). Nunca usar la apertura "Picture this." de Depth Theory, su paleta exacta ni el diseño del buzo. Usar channel_name en: la línea de llamada cruzada entre videos ("si has estado viendo [channel_name] por un tiempo..."), la línea de CTA/pantalla final, la descripción y un pequeño logotipo en los últimos 10 s del video.

Paso 2 - Datos (antes de cualquier guion)

Buscar en la web el animal. facts.json: 25-35 elementos {id, claim, number, unit, everyday_comparison, source_url, confidence}. Ningún superlativo (más grande/más profundo/único/jamás) a menos que una fuente obtenida lo indique. Listar mitos populares y la verdad.

Paso 3 - Guion (estructura fija; leer references/script-patterns.md primero)

Usar script-patterns.md para los presupuestos de sección, los dispositivos y las reglas de originalidad: aprender el ritmo de la referencia, nunca su redacción. Cada guion se escribe nuevo a partir de los datos de este animal; si el animal ya fue cubierto por la referencia (cachalote), evitar los ángulos allí listados.

  1. Apertura en frío 0:00-0:25. La línea 1 es SIEMPRE la apertura característica de la marca, corta (menos de 3 s), para que los espectadores la aprendan: "Registro de inmersión, entrada [n]. [profundidad]. Aire: [PSI]." La línea 2 en adelante es el GANCHO, aún dentro de los primeros 7 s: poner al espectador en peligro ahora mismo - algo toca, agarra, rodea o bloquea la luz, una forma parecida a un tiburón, una sombra, algo invisible - tiempo presente, sin explicación, y mostrado en pantalla en el mismo instante (silueta, tentáculo, sombra, ojo). Solo entonces el escenario (inmersión nocturna, cable, profundidad debajo), una REGLA que el espectador sabe, y una señal sensorial que la rompe y se eleva hacia ti. Nunca pasar los primeros 7 s en un paisaje tranquilo o logística. Plantar el detalle sensorial para un pago a mitad del video y hacer eco del peligro de apertura más tarde (el encuentro real, el acercamiento). Sin introducción.
  2. Replantear: animales que la gente suele temer, conceder, luego tres afirmaciones para [ANIMAL]; terminar con "...por qué nunca querrías encontrarte con uno."
  3. Cinco capítulos: TAMAÑO, COMIDA, CÓMO CAZA/SIENTE, CEREBRO/COMPORTAMIENTO, ¿ALGUNA VEZ SE HA VUELTO CONTRA LAS PERSONAS?. Cada uno termina con una pregunta que el siguiente responde. Cada número obtiene una comparación cotidiana.
  4. Pago del detalle plantado alrededor de 3:30.
  5. "¿Qué harías realmente?": 4 opciones descartadas una por una, una broma seca cada una, línea de veredicto.
  6. Giro 1: casi nunca ataca a las personas. Giro 2: el peligro real va en la otra dirección.
  7. Rol en el ecosistema. 8. Cierre: repetir la REGLA con nuevo significado. 9. CTA: preguntar qué criatura cubrir a continuación, en las propias palabras del canal desde brand.json (nunca copiar el "I do actually read them" de Depth Theory). Voz: segunda persona (más de 35 "tú"), oraciones de menos de 20 palabras, 5-7 metáforas de broma seca, 1,600-1,800 palabras a ~170 ppm. Sin "let's dive in", sin emojis. Guardar como script.txt (sin etiquetas).

Paso 4 - Escenas y ritmo (leer references/visual-style.md primero)

El video tiene alrededor de 60 ESCENAS persistentes, no una tarjeta por oración. scenes.json: {scene_id, chapter, setting (deep|mid|surface-split|paper|radar|xray|black|stock), camera (drift|push-in|follow-dive|tilt|top-down|macro), cast (sujetos ilustrados), beats:[...]}. Una escena dura 6-20 s y cubre 2-6 oraciones; cada oración AÑADE un elemento a la escena (el sujeto entra, la línea de medida se dibuja, el contador corre, la etiqueta aparece, el sello golpea, el FX se dispara) en lugar de reemplazarlo. Beat = {id, scene_id, text, add (lo que aparece/cambia), label (0-5 palabras o vacío; nunca repite la narración), label_pos (top|under-subject|near:), accent, fact_ids, stock_query?}. Usar el kit de herramientas de referencia por tipo de oración: número -> diagrama en escena (línea de medida, medidor, contador, matriz de iconos, cuadrícula, gráfico circular); comparación -> el objeto entra junto al sujeto (el autobús entra, los elefantes aparecen); historia -> accesorios de papel/sepia y conjuntos de superficie; broma -> accesorio o figura de palo (recibo, formulario, pizarra, sello, diálogo de IU); peligro -> etiqueta roja + FX de impacto; detección -> modo de radar/rayos X. El personaje "tú" aparece en la apertura en frío, el pago, el capítulo de opciones y el cierre, siempre pequeño al lado del animal.

Paso 5 - Puerta de datos (bloqueo)

Tabla: oración | fact_id | source | OK/ARREGLAR para cada oración con un número o superlativo. Arreglar todas las filas ARREGLAR y mostrar la tabla al usuario antes de gastar créditos de ElevenLabs.

Paso 6 - Voz (Eleven v4 + etiquetas de audio)

  • Crear script_tagged.txt añadiendo etiquetas de audio v4 como lo haría ElevenLabs Auto-tag: [thoughtful], [curious], [uneasy], [dry], [whispers], [short pause], [long pause]. Máximo una etiqueta cada 2-3 oraciones; susurro/pausa alrededor de revelaciones y el pago; [dry] antes de las bromas; ninguna etiqueta dentro de una oración que lleve una estadística. Mostrar una muestra de 10 líneas al usuario una vez por canal para aprobar la densidad de etiquetas.
  • Llamar POST https://api.elevenlabs.io/v1/text-to-speech/{ELEVENLABS_VOICE_ID}/with-timestamps con model_id de .env (eleven_v4). Límite de 10,000 caracteres por solicitud: dividir en límites de capítulo (generalmente 2 solicitudes), pasar previous_text/next_text para continuidad, concatenar con ffmpeg.
  • Si with-timestamps es rechazado para v4, usar el endpoint simple, luego ElevenLabs Forced Alignment (POST /v1/forced-alignment) con el audio + script.txt (etiquetas eliminadas).
  • Mapear tiempos de palabras a oraciones -> timing.json {beat_id, start_s, end_s, start_frame, end_frame} a 30 fps.

Paso 6b - Efectos de sonido (ElevenLabs Sound Effects, no se necesita CapCut)

Mantener una biblioteca de SFX reutilizable en D:\DepthPOV\assets\sfx\ generada con POST https://api.elevenlabs.io/v1/sound-generation {text, duration_seconds, prompt_influence 0.6} usando la misma ELEVENLABS_API_KEY (tools/sfx.py; solo se generan los archivos faltantes, por lo que los créditos se gastan una vez). Conjunto principal: whoosh_soft, whoosh_deep, pop_soft, tick_ui, counter_roll, stamp, paper_slide, impact_heavy, splash_big, bubbles, sonar_ping, low_hum, whale_moan, heartbeat_slow, riser_tension, scan_beep, warning_beep, strike_line, gulp, boat_motor; agregar sonidos específicos de la criatura cuando sea necesario. Normalizar las copias a -20 LUFS en studio/public/sfx/. Colocar cada SFX en la acción a la que pertenece (entrada de elemento, contador, sello, impacto, cambio de escena) con <Sfx at=... vol=...> dentro de la escena, volumen 0.3-0.6, nunca más de uno por segundo; la voz permanece encima.

Paso 7 - Material de archivo (objetivo: 6-10 clips, 3-6 s cada uno, en picos emocionales; máximo 8% del tiempo de ejecución)

Fuentes, en este orden (solo estas; nunca descargas de YouTube/TikTok, imágenes documentales o cualquier cosa marcada como "solo uso editorial"):

  1. Pixabay (automático, API). Una PIXABAY_API_KEY sirve videos https://pixabay.com/api/videos/?key=...&q=... y fotos https://pixabay.com/api/?key=...&q=.... Máximo 100 solicitudes/60 s; almacenar en caché cada respuesta durante 24 h en assets/stock/_cache; sin descargas masivas. Herramientas: tools/stock.py, tools/stock_pick.py.
  2. NOAA (manual, mejor para la especie real). NOAA no tiene API de video de archivo. Claude encuentra los clips (páginas de especies de NOAA Fisheries y galería de videos, NOAA Ocean Exploration, NOAA Photo Library, las propias cargas de NOAA en Wikimedia Commons) y le da al usuario una lista numerada: enlace de página directa, qué muestra el clip, el espacio que llena, la línea de crédito exacta y el archivo a elegir (MP4 más grande, idealmente 1080p). El usuario descarga en assets/stock//noaa/. El material filmado por el personal de NOAA es generalmente de dominio público, pero leer cada página: muchos clips de ballenas se filman bajo un permiso de investigación o por un contratista y requieren una línea de crédito como "NOAA Fisheries, permiso #XXXX" o el nombre del fotógrafo; si una página restringe la reutilización, omitir el clip. Después de la descarga, leer SIEMPRE la placa de apertura y los créditos finales del archivo: las placas B-roll de NOAA Fisheries dicen "Todo el material cortesía de NOAA... Por favor, acreditar a NOAA Fisheries" más cualquier número de permiso (seguro); las películas educativas (ej. Ocean Today) a menudo enumeran colaboradores externos como casas de producción o agencias de archivo en los créditos finales, por lo que sus tomas NO son de dominio público y deben ser rechazadas; también rechazar archivos con subtítulos o logotipos incrustados. Usar solo los segmentos cuya placa nombra la especie objetivo (los paquetes B-roll mezclan especies), y decir "NOAA no respalda este canal" en la descripción. Nunca usar el logotipo de NOAA.
  3. Pexels (enlaces manuales). La emisión de claves API estaba en pausa la última vez que se verificó (noviembre de 2026), por lo que Claude busca en pexels.com/videos (Claude en Chrome o búsqueda web) y le da al usuario enlaces de página de clip directos con qué descargar (Full HD 1920x1080) en assets/stock//pexels/. Descargar algunos clips manualmente para un video está bien bajo la licencia de Pexels (uso comercial permitido); sin scraping masivo o con scripts. Si luego aparece una PEXELS_API_KEY en .env, usar la API en su lugar (encabezado Authorization: <key>, GET https://api.pexels.com/v1/videos/search?query=...&orientation=landscape&size=medium&per_page=.., 200 solicitudes/hora).
  4. Wikimedia Commons (manual, ocasional). Solo archivos con una licencia clara PD / CC BY / CC BY-SA; registrar autor + licencia. Colocar los clips donde los pone la referencia: justo después de la apertura en frío (el animal real o un buzo), en afirmaciones "del mundo real" (salto, manada, barco, caza de ballenas, aéreo), y en el giro/ecosistema; distribuirlos (nunca 3 seguidos). Para cada espacio buscar 3-5 sinónimos, conservar solo los resultados cuyas etiquetas/títulos contengan el sujeto, luego extraer un fotograma por candidato con ffmpeg y MIRARLO; rechazar especies incorrectas (una yubarta no es una ballena azul) y tomas fuera de tema. Un clip de una especie diferente solo puede usarse para una línea general ("grandes ballenas") con una nota en pantalla "(mostrado: ballena jorobada)". Graduar los clips más oscuros/fríos para que coincidan con la paleta, fundido de 8 fotogramas dentro y fuera. Los créditos son obligatorios para cada fuente. Cada clip muestra un pequeño crédito en pantalla en la parte inferior izquierda.eeee

Skills relacionados