Resumen Detallado de Video
Enlace de video proporcionado por el usuario: $ARGUMENTS
Paso 0 — Determinar el tipo de entrada
-
Sin enlace, pregunta sobre videos pasados → ve a la sección "Consulta de Archivo" al final; no obtengas una nueva transcripción.
-
Enlace de video único → ve directamente al Paso 1.
-
Múltiples enlaces de video → ejecuta cada uno a través de los Pasos 1-3 en orden. Cada video recibe su propio resumen completo (mismo formato), separado por
---, y cada uno se guarda en su propio archivo. Puedes agregar una nota de 1-2 frases al final sobre lo que los videos comparten/difieren (no un informe). -
Enlace de lista de reproducción (URL que contiene
/playlist?list=y nov=) → obtén la lista primero:bash ~/.claude/skills/video-summary/fetch_transcript.sh --list "<PLAYLIST_URL>"Cada línea da
url | título | duración.- 5 videos o menos: procésalos todos en orden (como enlaces múltiples).
- Más de 5: primero muestra al usuario el conteo de videos y la lista de títulos; pregúntale si quiere todos, los primeros N, o una selección. No comiences a procesar sin confirmación.
-
URL mixta de video + lista de reproducción (
watch?v=...&list=...) → resume solo ese video individual; al final del resumen menciona en una frase que el enlace pertenece a una lista de reproducción y que puedes resumir el resto si lo desea.
Paso 1 — Obtener la transcripción
Ejecuta:
bash ~/.claude/skills/video-summary/fetch_transcript.sh "<VIDEO_URL>"
El script imprime:
=== VIDEO INFO ===— título, canal, duración, fecha=== CHAPTERS ===— lista con marcas de tiempo si el creador definió capítulos (sección ausente en caso contrario)=== TRANSCRIPT ===— transcripción limpia con marcas de tiempo
Notas:
- Los videos obtenidos previamente se leen instantáneamente del
archivo
~/VideoSummaries/transcripts/<video-id>.txt(verás una línea(Transcript read from archive: ...)) — no se necesita internet. - Si la transcripción es muy larga (la salida del script se trunca), redirige la salida a un archivo temporal y léelo en partes — no te saltes nada.
- Para videos sin subtítulos, si whisper está instalado, el script descarga el audio y lo transcribe localmente — esto puede tardar minutos, así que ejecuta el comando con un tiempo de espera largo (600000 ms). Una línea "(No subtitles — ... whisper ...)" en stderr indica este camino.
- Si devuelve "ERROR: no subtitles" + "WHISPER_SUGGESTION": dile al usuario que el video no tiene subtítulos y que instalar whisper (transmite los comandos de instalación del mensaje de error) le permitiría resumirlo también. Nunca fabriques un análisis sin una transcripción.
- Si devuelve "ERROR: could not fetch video info" + "COOKIE_SUGGESTION":
NO reintentes con cookies por tu cuenta — dile al usuario que YouTube está bloqueando
la solicitud y pregúntale si quiere reintentarlo con cookies del navegador. Si
lo aprueba, vuelve a ejecutar el mismo comando con la variable de entorno
COOKIES=1(menciona que puede aparecer una solicitud de permiso del llavero de macOS).
Paso 2 — Escribir el resumen detallado
El objetivo es un RESUMEN DETALLADO: alguien que no ha visto el video debería conocer cada tema principal, argumento y número clave — pero esto NO es una repetición de la transcripción. No omitas ningún tema principal; no transmitas cada frase o ejemplo secundario dentro de un tema.
Longitud objetivo: ~300-450 palabras en total para un video de 15 minutos; escala proporcionalmente para videos más largos pero nunca excedas una página (~700 palabras).
Idioma: escribe siempre el resumen en el idioma en el que el usuario se está comunicando (independientemente del idioma del video). Si no está claro, usa el idioma del video.
Estructura:
# <Título del Video>
**Canal:** ... · **Duración:** ... · **Fecha:** ...
## Resumen General
El tema y mensaje central del video (2-3 frases).
## Temas Principales
Una viñeta por tema principal del video (un video típico tiene 4-8):
- **[MM:SS] Título del tema** — la esencia de ese tema en 2-4 frases:
la idea principal, cualquier número/ejemplo crítico, la conclusión alcanzada.
Encabezados de sección: si la salida del script tiene `=== CHAPTERS ===`, construye
las viñetas a partir de esos capítulos y marcas de tiempo (traduce los títulos al
idioma de salida; omite capítulos sin contenido como intro/patrocinios, fusiona
varios capítulos muy cortos consecutivos en una sola viñeta). Si no hay
CHAPTERS, identifica las transiciones de tema de la transcripción tú mismo.
## Conclusión
La conclusión final del orador y la acción recomendada para el espectador
(2-4 frases). Si tienes tu propio comentario/advertencia, añádelo al final
en una sola frase, claramente separado.
Reglas:
- Nunca incluyas intros, llamadas a suscripción, lecturas de patrocinadores o anuncios.
- Toma las marcas de tiempo de los marcadores
[MM:SS]en la transcripción; nunca las inventes. - Marcas de tiempo enlazables: para videos de YouTube, convierte cada marca
[MM:SS]en un enlace a ese segundo del video:[06:09](https://youtu.be/<VIDEO_ID>?t=369)(t = segundos totales). Aplica esto tanto en la salida del chat como en el archivo guardado. Para fuentes que no sean YouTube, deja la marca como texto sin formato; no fabriques enlaces. - No agregues información que no esté en la transcripción.
- Si hay 1-2 citas realmente impactantes, inclúyelas dentro de la viñeta correspondiente; no abras una sección separada.
- Si el usuario pide "profundizar" o sobre una parte específica, la transcripción está en contexto — expande esa parte tanto como quiera.
- Sugerencia visual: si la transcripción tiene 3 o más referencias visuales ("este gráfico", "esa tabla", "en pantalla", "como puedes ver aquí", etc.), añade una línea al final del resumen: "📊 Este video parece tener mucho contenido visual — también puedo analizar sus gráficos/capturas de pantalla si lo deseas." Si el usuario lo aprueba, cambia al Modo de Análisis Visual. Si no hay referencias visuales, no agregues la nota.
Paso 3 — Guardar el resumen en el archivo
El mensaje del chat es el entregable principal: SIEMPRE primero imprime el resumen completo en la conversación. El archivo de archivo es solo una copia adicional — nunca omitas la salida del chat y solo escribas el archivo, y nunca reemplaces el resumen con un puntero al archivo.
Después de imprimir el resumen en el chat, guarda el mismo contenido con la herramienta Write en:
~/VideoSummaries/<YYYY-MM-DD>-<titulo-del-video-en-kebab-case>.md
(Fecha = hoy. Acorta el título a minúsculas, ASCII, separado por guiones; máximo 60 caracteres.)
Agrega este bloque de metadatos al principio del archivo:
> **Video:** <URL>
> **Resumido:** YYYY-MM-DD
En tu mensaje final, dile al usuario la ruta del archivo en una sola línea.
Modo de Análisis Visual — cuando el usuario lo aprueba o lo solicita directamente
Cuando el usuario aprueba el análisis visual (o lo solicita directamente con algo como "incluyendo los gráficos"), haz esto ADEMÁS del resumen de la transcripción:
-
Elige los momentos: recopila los segundos de los momentos de referencia visual de la transcripción (donde el orador dice "mira esto", "este gráfico"). Si no hay momentos claros, usa
auto(detección de cambio de escena). -
Extrae los fotogramas (puede tomar tiempo — usa un tiempo de espera de 600000 ms):
bash ~/.claude/skills/video-summary/extract_frames.sh "<URL>" "<scratchpad>/frames" "369,430,585"El último argumento es la lista de segundos; omítelo para
auto. El script imprime las rutas de los archivos de fotogramas (frame_006-09.jpg= 06:09). Se extraen como máximo 12 fotogramas. -
Visualiza los fotogramas con Read e interprétalos.
-
Escribe una sección "## Análisis Visual": para cada fotograma significativo, una marca de tiempo enlazable + lo que muestra la imagen + cómo se conecta con la afirmación del orador en ese momento. Omite fotogramas sin información (solo un rostro, una pantalla de introducción).
-
Anexa la sección al archivo de resumen guardado también (con Edit).
-
Si el script dice "ffmpeg is not installed", transmite la sugerencia
brew install ffmpeg; si dice que no se encontraron cambios de escena, dile al usuario que el video es visualmente estático (nada que analizar). -
Si el script dice "could not download" + "COOKIE_SUGGESTION": NO reintentes con cookies por tu cuenta — dile al usuario que YouTube está bloqueando la descarga y pregúntale si quiere reintentarlo con cookies del navegador. Si lo aprueba, vuelve a ejecutar el mismo comando con la variable de entorno
COOKIES=1(menciona que puede aparecer una solicitud de permiso del llavero de macOS).
Consulta de Archivo — sin enlace, pregunta sobre videos pasados
Cuando el usuario pregunta sobre videos resumidos anteriormente sin una URL ("¿qué decía el video que resumí la semana pasada sobre X?", "¿qué hay en mi archivo sobre Y?", "¿cuáles fueron los temas comunes de los videos del mes pasado?"):
- Escaneo amplio: Busca en los resúmenes
~/VideoSummaries/*.mdpor palabras clave. Además del idioma del usuario, también prueba equivalentes en inglés probables (los resúmenes siguen el idioma del usuario pero las citas/términos pueden estar en el idioma original del video). - Profundiza: Lee los resúmenes coincidentes. Si el resumen no es
suficiente (redacción exacta, contexto o un detalle que no llegó al
resumen), ve a la transcripción sin procesar del mismo video: toma el ID del video
de la URL en el bloque de metadatos del resumen y lee/busca
~/VideoSummaries/transcripts/<video-id>.txt. - Respuestas citadas: Proporciona cada hecho con su fuente — título del video, fecha del resumen, marca de tiempo. Haz que las marcas de tiempo también sean enlazables aquí (la URL del video está en el bloque de metadatos del resumen). Nunca llenes vacíos con memoria o suposiciones; si no está en el archivo, dímelo explícitamente.
- Filtros de fecha: Los nombres de archivo siguen
YYYY-MM-DD-title.md— filtra rangos como "el mes pasado" por nombre de archivo. - Este modo es completamente local: sin YouTube, sin internet.