06 — Videos YouTube + Catálogo de Marca (scraping + procesamiento + clipping)
Índice de la página
- 01Cliente: Martín Rieznik / LevantArte
- Área: Contenido & Ads (Cortex domina)
- 020. Definición de "done" para esta checklist
- 031. Pre-requisitos
- 042. Tareas
- 2.1 Setup de carpetas y herramientas
- 2.2 YouTube — descarga completa del catálogo
- 2.3 YouTube — INDEX + tagging
- 2.4 Instagram
- 2.5 TEDx Las Aguas + entrevistas externas
- 2.6 Análisis y extracción — Avatar profundo
- 2.7 Análisis y extracción — Mecanismo único
- 2.8 Análisis y extracción — Top 30 hooks candidatos
- 2.9 Análisis y extracción — Top 10 objeciones
- 2.10 Análisis y extracción — Stack de oferta histórico
- 2.11 Clipping para CAPTACIÓN (60-120 clips)
- 2.12 Clipping para RETARGETING (input directo a 05_ANUNCIOS_RETARGETING.md)
- 2.13 Mirror Drive + handoff final
- 053. Variables y posibilidades a anticipar
- 064. Multi-tenant: cómo se replica al cliente #2
- 075. Recursos y archivos relacionados
- 086. Notas y aprendizajes (post-mortem)
- 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(channelUCCjrYNYSdbz5niVK5wWa_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.mdcon 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 contree. - 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.m4acon modelolarge-v3omedium(según lengua/calidad), output.srt+.txt+.mdcon metadata. R: Cortex. Done cuando: script ejecuta sobre 1 archivo de prueba sin errores.
2.2 YouTube — descarga completa del catálogo
- 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 enyoutube/videos/+_descargados.txtactualizado. - 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-subesté ausente o de mala calidad. R: Cortex. Done cuando: 100% videos tienen.srtlegible (auto o Whisper). - Generar
.mdpor video con metadata + transcripción + URL + thumbnail. R: Cortex (script_scripts/build_video_md.py). Done cuando: 1 archivo.mdpor video enyoutube/transcripciones/.
2.3 YouTube — INDEX + tagging
- Crear
youtube/INDEX_videos.mdcon 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
@martinrieznikconinstaloader:
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 usargallery-dlsi Instagram bloquea. R: Cortex. Done cuando: feed completo eninstagram/+ caption por post. - Descargar highlights destacados (instaloader
--highlights). R: Cortex. Done cuando: highlights eninstagram/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 de04_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 entedx/. - 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.mdcon ≥ 8 fuentes con URL verificada. - Descargar las 8+ entrevistas con
yt-dlp. R: Cortex. Done cuando: una carpeta por medio enentrevistas/<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.mdcon 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.mdcon: 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.mdcon 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.mdlisto. 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.mdcon cada elemento + ejemplo de cómo lo articula. Alimenta08_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.mdcon ≥ 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 enclips/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.mdlisto.
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.mdcon ≥ 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_idcliente.youtube.channel_handlecliente.instagram.usernamecliente.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.mdINDEX_posts_TEMPLATE.mdINDEX_charlas_TEMPLATE.mdAVATAR_PROFUNDO_TEMPLATE.md(con secciones predefinidas)MECANISMO_UNICO_TEMPLATE.mdHOOKS_CANDIDATOS_TOP30_TEMPLATE.mdOBJECIONES_TOP10_TEMPLATE.mdSTACK_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 comandosyt-dlp{{cliente.instagram.username}}→ reemplaza eninstaloader{{cliente.glosario_whisper}}→ string para--initial_prompt{{cliente.idioma}}→ flags de subs- Script de bootstrap:
cortex/sop/lanzar-cliente/scripts/bootstrap_recursos.pytomaclient_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.mddebe tener > N entries (umbral por cliente).
5. Recursos y archivos relacionados
agents/hook-engineer/AGENT.mdagents/redaccion-publicitaria/AGENT.mdagents/promise-engineer/AGENT.mdagents/video-editor/AGENT.mdshared/frameworks/biotipos_unani.mdshared/frameworks/schwartz_framework_completo.mdshared/frameworks/hook_engineering.mdshared/authors/martin_rieznik.md— perfil profundo02_PLAN_INTERNO_EQUIPO.md§4 — plan de scraping original03_COPIES.md,04_ANUNCIOS_CAPTACION.md,05_ANUNCIOS_RETARGETING.md,07_WEBINAR.md,09_SLIDES.md,10_BOT_WHATSAPP_1A1.md— todas estas se alimentan de los outputs de acá- Drive:
01 — CLIENTES/Martín Rieznik/R — Recursos/
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).