06 — Videos YouTube + Catálogo de Marca (scraping + procesamiento + clipping)

Índice de la página
  1. 01Cliente: Martín Rieznik / LevantArte
  2. Área: Contenido & Ads (Cortex domina)
  3. 020. Definición de "done" para esta checklist
  4. 031. Pre-requisitos
  5. 042. Tareas
  6. 2.1 Setup de carpetas y herramientas
  7. 2.2 YouTube — descarga completa del catálogo
  8. 2.3 YouTube — INDEX + tagging
  9. 2.4 Instagram
  10. 2.5 TEDx Las Aguas + entrevistas externas
  11. 2.6 Análisis y extracción — Avatar profundo
  12. 2.7 Análisis y extracción — Mecanismo único
  13. 2.8 Análisis y extracción — Top 30 hooks candidatos
  14. 2.9 Análisis y extracción — Top 10 objeciones
  15. 2.10 Análisis y extracción — Stack de oferta histórico
  16. 2.11 Clipping para CAPTACIÓN (60-120 clips)
  17. 2.12 Clipping para RETARGETING (input directo a 05_ANUNCIOS_RETARGETING.md)
  18. 2.13 Mirror Drive + handoff final
  19. 053. Variables y posibilidades a anticipar
  20. 064. Multi-tenant: cómo se replica al cliente #2
  21. 075. Recursos y archivos relacionados
  22. 086. Notas y aprendizajes (post-mortem)
  23. 09CHANGELOG

Cliente: Martín Rieznik / LevantArte

Área: Contenido & Ads (Cortex domina)

Materia prima del lanzamiento. Scraping completo del catálogo de YouTube + Instagram + TEDx + entrevistas. Transcripciones Whisper. Análisis de avatar/mecanismo/objeciones/hooks. Clipping para captación (60-120 ads de catálogo) y retargeting (input directo a 05_ANUNCIOS_RETARGETING.md).

Última actualización: 2026-05-05
Responsable principal (R): Cortex
Aprobador (A): Jesús
Deadline: 18 may 2026 (primer paso 100%; clipping continúa hasta 31 may)
Depende de: acceso público (no bloquea — anónimo ya puede arrancar). Acceso YouTube Studio para analytics es plus, no crítico.
Bloquea a: 03_COPIES.md, 04_ANUNCIOS_CAPTACION.md, 05_ANUNCIOS_RETARGETING.md, 07_WEBINAR.md, 09_SLIDES.md, 10_BOT_WHATSAPP_1A1.md


0. Definición de "done" para esta checklist

  • 100% del catálogo de YouTube @LEVANTARTE (channel UCCjrYNYSdbz5niVK5wWa_ow) descargado, transcripto y indexado.
  • Instagram (reels + carruseles + highlights destacados) + TEDx Las Aguas + entrevistas externas (≥ 8 fuentes) descargados, transcriptos e indexados.
  • Análisis y extracción completa: avatar profundo (biotipos Unani + Schwartz), mecanismo único, top 30 frases hooks candidatos, top 10 objeciones, stack de oferta usado.
  • ≥ 60 clips de captación generados (recortes 30-90s con hooks editoriales tipo viral) listos para alimentar 04_ANUNCIOS_CAPTACION.md.
  • ≥ 28 clips de retargeting (4 cuadrantes × 7+ candidatos) entregados a 05_ANUNCIOS_RETARGETING.md.
  • INDEX_videos.md + INDEX_posts.md + INDEX_charlas.md con metadata completa (título, fecha, duración, URL, tags, transcripción).

1. Pre-requisitos

# Pre-requisito Provisto por Estado
1 yt-dlp instalado y actualizado Cortex
2 OpenAI API key (Whisper) TooAudience
3 instaloader o gallery-dl instalado Cortex
4 Almacenamiento ≥ 200 GB disponible (videos + audios + transcripciones) Cortex (disco local + Drive R/) ⚠️ verificar
5 Estructura de carpetas creada en tooaudience/clientes/martin-rieznik/recursos/ y mirror Drive R — Recursos/ Cortex ⚠️
6 Acceso YouTube Studio Martín (analytics — plus, no crítico) Martín ⚠️
7 Lista de URLs de entrevistas externas (Cortex investiga; Martín puede enriquecer) Cortex + Martín ⚠️
8 Frameworks shared/frameworks/biotipos_unani.md y schwartz_framework_completo.md shared/

2. Tareas

2.1 Setup de carpetas y herramientas

  • Crear estructura local:
    tooaudience/clientes/martin-rieznik/recursos/ ├── youtube/{videos,audios,transcripciones,thumbnails,metadata}/ ├── instagram/{reels,carruseles,highlights,metadata}/ ├── tedx/{video,audio,transcripcion}/ ├── entrevistas/{<medio>/} ├── analisis/{avatar,mecanismo,hooks,objeciones,oferta}/ ├── clips/{captacion,retargeting}/ └── INDEX_*.md
    R: Cortex. Done cuando: estructura creada y verificada con tree.
  • Verificar versiones: yt-dlp --version, whisper --help, instaloader --version, ffmpeg -version. R: Cortex. Done cuando: las 4 herramientas responden con versiones recientes.
  • Configurar Whisper batch script recursos/_scripts/whisper_batch.py: input dir → transcribir todos los .m4a con modelo large-v3 o medium (según lengua/calidad), output .srt + .txt + .md con metadata. R: Cortex. Done cuando: script ejecuta sobre 1 archivo de prueba sin errores.
  • Listar el catálogo completo del canal UCCjrYNYSdbz5niVK5wWa_ow:
    bash yt-dlp --flat-playlist --print "%(id)s,%(title)s,%(upload_date)s,%(duration)s,%(view_count)s" \ "https://www.youtube.com/channel/UCCjrYNYSdbz5niVK5wWa_ow" > youtube/_catalogo_raw.csv
    R: Cortex. Done cuando: CSV con > 100 entradas (estimado del canal).
  • Descargar TODOS los videos con auto-subs y metadata:
    bash yt-dlp \ -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]" \ --write-auto-subs --convert-subs srt \ --sub-langs "es,es-419" \ --write-info-json --write-thumbnail \ --extractor-args "youtube:lang=es" \ -o "youtube/videos/%(upload_date)s_%(id)s_%(title).100s.%(ext)s" \ --download-archive youtube/_descargados.txt \ "https://www.youtube.com/channel/UCCjrYNYSdbz5niVK5wWa_ow"
    R: Cortex. Done cuando: 100% del catálogo en youtube/videos/ + _descargados.txt actualizado.
  • Extraer audios M4A (para Whisper si auto-subs no alcanza):
    bash yt-dlp -f "bestaudio[ext=m4a]" -x --audio-format m4a \ -o "youtube/audios/%(upload_date)s_%(id)s.%(ext)s" \ --download-archive youtube/_audios.txt \ "https://www.youtube.com/channel/UCCjrYNYSdbz5niVK5wWa_ow"
    R: Cortex. Done cuando: 100% audios extraídos.
  • Reprocesar con Whisper los videos cuyo auto-sub esté ausente o de mala calidad. R: Cortex. Done cuando: 100% videos tienen .srt legible (auto o Whisper).
  • Generar .md por video con metadata + transcripción + URL + thumbnail. R: Cortex (script _scripts/build_video_md.py). Done cuando: 1 archivo .md por video en youtube/transcripciones/.

2.3 YouTube — INDEX + tagging

  • Crear youtube/INDEX_videos.md con tabla: id / fecha / título / URL / duración / views / tema / avatar / objeción rota / formato / utilidad (cap/rtg/web/no usar). R: Cortex. Done cuando: 100% del catálogo indexado.
  • Tagging por tema dominante: seducción / relaciones / autoestima / Tinder / pareja / liderazgo / divorcio / autoridad masculina / scripts conversación / etc. R: Cortex. Done cuando: cada video tiene ≥ 1 tag de tema.
  • Tagging por avatar: +35 / +40 / +50 / divorciado / soltero / recién separado / casado infeliz / introvertido / extrovertido frustrado. R: Cortex. Done cuando: cada video tiene ≥ 1 tag avatar.
  • Tagging por objeción rota: lista cerrada de 10 objeciones (ver §2.7). R: Cortex. Done cuando: videos relevantes mapeados.
  • Tagging por formato: educativo / testimonio / entrevista / reacción / Q&A / live / clip de TEDx / live de pareja con Andrés. R: Cortex. Done cuando: 100% taggeado.
  • Ranking por utilidad para ads: 1-5 estrellas (5 = winner candidato directo, 1 = no usar). R: Cortex. Done cuando: top 30 videos identificados como "high-value para clipping".

2.4 Instagram

  • Descargar reels + posts del feed @martinrieznik con instaloader:
    bash instaloader --no-pictures --no-profile-pic --no-metadata-json --geotags=False \ --post-metadata-txt='{caption}' \ --filename-pattern '{date_utc:%Y-%m-%d}_{shortcode}' \ martinrieznik
    Como fallback usar gallery-dl si Instagram bloquea. R: Cortex. Done cuando: feed completo en instagram/ + caption por post.
  • Descargar highlights destacados (instaloader --highlights). R: Cortex. Done cuando: highlights en instagram/highlights/.
  • Transcribir reels con audio relevante (Whisper sobre los videos). R: Cortex. Done cuando: 100% de reels con audio tienen .srt.
  • Indexar en instagram/INDEX_posts.md: shortcode / fecha / tipo (reel/carrusel/foto) / caption / views (si visible) / tag tema / utilidad. R: Cortex. Done cuando: tabla completa.
  • Identificar TOP 30 reels por engagement (views + saves + share). R: Cortex. Done cuando: shortlist en instagram/_TOP30_VIRALES.md (alimenta Pipeline B de 04_ANUNCIOS_CAPTACION.md).

2.5 TEDx Las Aguas + entrevistas externas

  • Descargar TEDx "Seducir para ser feliz": yt-dlp <url_TEDx>. Transcribir con Whisper. R: Cortex. Done cuando: video + srt + md en tedx/.
  • Investigar y listar entrevistas externas:
  • La Nación+
  • Los 40 Principales
  • Mañanas Públicas (con Andrés)
  • Final Feliz / Blender
  • Todo Pasa
  • Algún podcast con Andrés Rieznik
  • YouTube de podcasts varios donde aparece
    R: Cortex (búsqueda activa). Done cuando: entrevistas/_INDEX_FUENTES.md con ≥ 8 fuentes con URL verificada.
  • Descargar las 8+ entrevistas con yt-dlp. R: Cortex. Done cuando: una carpeta por medio en entrevistas/<medio>/ con video + audio.
  • Transcribir con Whisper. R: Cortex. Done cuando: cada entrevista tiene .srt + .md.
  • Indexar en entrevistas/INDEX_charlas.md: medio / programa / fecha / duración / link / tema dominante / autoridad cruzada (sí/no) / utilidad. R: Cortex. Done cuando: tabla firmada.

2.6 Análisis y extracción — Avatar profundo

  • Ejecutar análisis avatar sobre toda la transcripción acumulada (YouTube + IG + TEDx + entrevistas). Usar framework biotipos Unani + Schwartz. R: Cortex (con agents/redaccion-publicitaria/ + agents/promise-engineer/). Done cuando: analisis/avatar/AVATAR_PROFUNDO.md con secciones:
  • Perfil demográfico (edad, ocupación, ubicación, ingresos)
  • Biotipo Unani dominante (colérico/sanguíneo/flemático/melancólico) — y sub-segmentos
  • Schwartz: distribución del avatar entre niveles (UNAWARE/PROBLEM/SOLUTION/PRODUCT/MOST AWARE)
  • Lenguaje propio del avatar (frases textuales de comments + DMs reportados por Martín)
  • Miedos profundos
  • Deseos confesos vs deseos reales
  • Identidades en tensión ("el que soy" vs "el que quiero ser")
  • Objeciones recurrentes
  • Símbolos de éxito + fracaso
  • Validar con Martín: muestra de 5 frases del avatar + 3 miedos + 3 deseos. R: Jesús + Martín. Done cuando: validación ≥ 80% concordancia.

2.7 Análisis y extracción — Mecanismo único

  • Identificar el mecanismo único que Martín usa: cómo nombra su método, qué lo hace distinto del coaching seducción genérico. R: Cortex. Done cuando: analisis/mecanismo/MECANISMO_UNICO.md con: nombre canónico + definición de 1 párrafo + 3 pilares + lo que rompe (vs creencia común) + ejemplos textuales del catálogo donde Martín lo articula.
  • Validar con Martín que el naming + definición es fiel. R: Martín. Done cuando: firmado en CHANGELOG.

2.8 Análisis y extracción — Top 30 hooks candidatos

  • Extraer 30 frases textuales del catálogo (YouTube + TEDx + entrevistas) que serían hooks ganadores: contrarian / dato impactante / pregunta directa / promesa concreta / pattern interrupt. R: Cortex (agents/hook-engineer/). Done cuando: analisis/hooks/HOOKS_CANDIDATOS_TOP30.md con tabla: ranking / frase textual / categoría hook / fuente (URL + timestamp) / score hook-engineer (1-10) / nivel Schwartz sugerido.
  • Validar 30 hooks pasan score ≥ 7/10 o quedan en backlog secundario. R: Cortex. Done cuando: tabla con score firmado.

2.9 Análisis y extracción — Top 10 objeciones

  • Extraer 10 objeciones top que Martín rompe en cámara. Para cada una: enunciado de la objeción / cómo la rompe / cita textual / fuente (URL + timestamp). R: Cortex. Done cuando: analisis/objeciones/OBJECIONES_TOP10.md listo. Esto alimenta directo a:
  • Sesión 2 con Martín (05_ANUNCIOS_RETARGETING.md §2.2)
  • Bot WhatsApp (03_COPIES.md §2.5 — 10 objeciones con guion conversacional)
  • FAQs de sales pages (03_COPIES.md §2.2)

2.10 Análisis y extracción — Stack de oferta histórico

  • Identificar stack de oferta que Martín ya usa cuando vende: bonus + garantía + urgencia + escasez + agrupamiento. R: Cortex. Done cuando: analisis/oferta/STACK_HISTORICO.md con cada elemento + ejemplo de cómo lo articula. Alimenta 08_OFERTA_Y_STACK.md.

2.11 Clipping para CAPTACIÓN (60-120 clips)

  • Plantilla de clipping _scripts/clip_template.md: criterios = duración 30-90s + hook fuerte primeros 3s + cierre con CTA implícito o tail editable. R: Cortex. Done cuando: plantilla documentada.
  • Identificar 60+ momentos clipeables del catálogo (con timestamps). R: Cortex. Done cuando: clips/captacion/_CANDIDATOS.md con ≥ 60 entries (clip_id / video fuente / timestamp inicio-fin / hook / tema / Schwartz sugerido / utilidad para Pipeline A o B).
  • Recortar los 60+ clips con ffmpeg:
    bash ffmpeg -ss <inicio> -i <input.mp4> -t <duracion> -c:v libx264 -c:a aac \ -vf "scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920" \ clips/captacion/9x16/<clip_id>.mp4
  • version 1:1 (1080x1080) + 16:9 (1920x1080).
    R: Cortex. Done cuando: 60+ clips en clips/captacion/<aspect>/.
  • Aplicar tratamiento editorial con agents/video-editor/: subtítulos quemados + lower-third + audio normalizado. R: Cortex. Done cuando: 60+ clips finales con tratamiento aplicado.
  • Entregar handoff a 04_ANUNCIOS_CAPTACION.md: índice + paths + briefs sugeridos. R: Cortex. Done cuando: clips/captacion/_HANDOFF_CAPTACION.md listo.

2.12 Clipping para RETARGETING (input directo a 05_ANUNCIOS_RETARGETING.md)

  • Identificar 28+ candidatos por cuadrante (Q1 Preguntas / Q2 Implicaciones / Q3 Expectativas / Q4 Objeciones). R: Cortex. Done cuando: clips/retargeting/_CANDIDATOS_POR_CUADRANTE.md con ≥ 7 candidatos por cuadrante = 28+ totales.
  • Recortar y entregar a 05_ANUNCIOS_RETARGETING.md. R: Cortex. Done cuando: 28+ clips raw entregados al pipeline de retargeting con sus timestamps + transcripciones.

2.13 Mirror Drive + handoff final

  • Mirror al Drive 01 — CLIENTES/Martín Rieznik/R — Recursos/. R: Cortex. Done cuando: estructura completa en Drive + verificación visual.
  • Documento ejecutivo de hallazgos analisis/_RESUMEN_EJECUTIVO.md: avatar / mecanismo / top 5 hooks / top 5 objeciones / oferta sugerida / 1 página. R: Cortex. Done cuando: doc firmado por Jesús y compartido a Martín como insumo de Sesión 1.

3. Variables y posibilidades a anticipar

Escenario Plan B
YouTube rate-limita yt-dlp (HTTP 429) Usar --sleep-requests 2 + --sleep-interval 5 --max-sleep-interval 30 + cookies de cuenta logueada. Si persiste, dividir en lotes y rotar IP.
yt-dlp no descarga auto-subs porque el video los tiene desactivados Whisper sobre el audio M4A.
Instagram bloquea instaloader Cambiar a gallery-dl con cookies + user-agent rotativo. Si persiste, scraping manual con Puppeteer (mcp__puppeteer). Última opción: pedir a Martín export oficial desde su cuenta.
Whisper trastoca términos del nicho ("levantar" → "levantar", "Mariano" → "Marianopol") Diccionario custom en Whisper (--initial_prompt "Martín Rieznik, LevantArte, Andrés Rieznik, biotipos, Schwartz..."). Post-procesar con regex.
Disco lleno (>200 GB del catálogo) Comprimir audios a Opus 64kbps después de transcribir. Mover videos crudos a Drive y dejar local solo los high-value.
Catálogo del canal > 500 videos y excede tiempo razonable Priorizar TOP 100 por views + TOP 50 más recientes (últimos 6 meses). El resto en cola post-launch.
Algún video tiene música con copyright que Whisper no logra separar Aplicar audio source separation con demucs antes de transcribir.
Entrevistas externas tienen audio multi-canal (entrevistador + Martín) Whisper con --diarize o procesar con pyannote-audio para identificar quién habla. Quedarse con turnos de Martín.
Avatar extraído no coincide con lo que Martín siente como su público Sesión rápida con Martín de validación + revisar muestras de DMs/comments que él pueda compartir.
Hooks candidatos suenan a "Martín de hace 5 años" y ya no es su voz actual Priorizar hooks de los últimos 12 meses + validar con Martín antes de pasar a producción.
Mecanismo único no aparece nombrado canónicamente (Martín lo dice de 5 formas distintas) Sesión 3 (validación de oferta, 12-16 may) — definirlo formalmente con Martín y firmarlo en _BRAND_GLOSSARY.md (03_COPIES.md §2.1).
Falta tiempo para llegar al deadline 18 may Priorizar: (1) YouTube TOP 100 + INDEX, (2) Análisis avatar/mecanismo/hooks/objeciones, (3) IG TOP 30, (4) clipping captación lote 1 (30 clips), (5) clipping retargeting 28. El resto se completa hasta 31 may.

4. Multi-tenant: cómo se replica al cliente #2

  • Variables a externalizar:
  • cliente.youtube.channel_id
  • cliente.youtube.channel_handle
  • cliente.instagram.username
  • cliente.tedx.url (si tiene)
  • cliente.entrevistas[] (lista de URLs de fuentes externas, enriquecida con búsqueda activa)
  • cliente.idioma_principal (para Whisper + auto-subs)
  • cliente.glosario_whisper[] (lista de términos propios para --initial_prompt)
  • analisis.frameworks_aplicar[] (biotipos Unani, Schwartz, otros según nicho)
  • clipping.captacion_target (default 60)
  • clipping.retargeting_target_por_cuadrante (default 7)
  • prioridades_storage[] (qué se queda local, qué va a Drive, qué se comprime)
  • Templates a guardar en sop/lanzar-cliente/templates/recursos/:
  • INDEX_videos_TEMPLATE.md
  • INDEX_posts_TEMPLATE.md
  • INDEX_charlas_TEMPLATE.md
  • AVATAR_PROFUNDO_TEMPLATE.md (con secciones predefinidas)
  • MECANISMO_UNICO_TEMPLATE.md
  • HOOKS_CANDIDATOS_TOP30_TEMPLATE.md
  • OBJECIONES_TOP10_TEMPLATE.md
  • STACK_HISTORICO_TEMPLATE.md
  • _RESUMEN_EJECUTIVO_TEMPLATE.md
  • Scripts: whisper_batch.py, build_video_md.py, clip_from_timestamps.py, tag_videos.py.
  • Sustituciones automáticas (clone_client.py):
  • {{cliente.youtube.channel_id}} → reemplaza en comandos yt-dlp
  • {{cliente.instagram.username}} → reemplaza en instaloader
  • {{cliente.glosario_whisper}} → string para --initial_prompt
  • {{cliente.idioma}} → flags de subs
  • Script de bootstrap: cortex/sop/lanzar-cliente/scripts/bootstrap_recursos.py toma client_config.json → crea estructura local + dispara batch de descargas + Whisper + análisis (con human-in-the-loop al final para validar avatar/mecanismo).
  • Validación post-clonación: recursos/<cliente>/INDEX_videos.md debe tener > N entries (umbral por cliente).

5. Recursos y archivos relacionados


6. Notas y aprendizajes (post-mortem)

  • (vacío hasta primera ejecución)

CHANGELOG

  • 2026-05-05 — JT/Cortex — Creación inicial. 50 tareas en 13 sub-bloques. Deadline 18 may para core (scraping + análisis + 60+ clips captación + 28+ retargeting).