Introducción de pódcast largo (inicio en frío)
El estilo está modelado a partir de las introducciones largas de Greg Isenberg. Lo que lo hace atractivo:
- Abrir con la línea más fuerte, sin logo primero.
- Cortar cada 3–6 s.
- Hacer que aproximadamente cada segundo clip sea una cortinilla: el orador se desliza hacia una tarjeta a la izquierda mientras un gráfico aterriza a la derecha.
- Mantener los subtítulos cortos: 1–3 palabras, con palabras clave en naranja.
- Terminar con el título: una tarjeta que muestra lo que viene.
El pipeline es pipeline/build_episode.py, impulsado por work/<ep>/episode.json → intro. El renderizado utiliza la composición Remotion IntroV2 (pipeline/remotion/src/IntroV2.tsx); los gráficos provienen de Graphics.tsx.
1. Extraer los clips del episodio (8–10 candidatos, quedarse con 7–9)
- Leer la transcripción (
work/<ep>/words-*.json, o el.txtde Descript) y listar líneas que se sostengan solas en menos de 6 s. - En orden de preferencia:
- Un número contundente: "pagar al 27% de sus empleados para que se vayan", "retención de ingresos del 900%".
- Una afirmación o predicción audaz: "los tokens se van a filtrar en todo".
- Una confesión o dolor relatable: "estoy tan cansado de pagar suscripciones".
- Una reacción divertida o emotiva: "estaría haciendo token maxing".
- Un cierre citable: "no se le puede poner precio a la superinteligencia".
- Distribuir entre temas: aproximadamente un clip por capítulo, ambos presentadores representados, al menos una risa.
- Ordenar el reel:
- El clip 1 es el gancho más fuerte, normalmente un número o una afirmación.
- Alternar oradores y energía.
- Poner la línea más citable al final, justo antes de la tarjeta de título.
- Omitir:
- líneas que necesitan contexto ("como dije", "ese gráfico");
- líneas de más de ~6 s;
- líneas con superposición de voces.
- Lenguaje soez: mantenerlo solo si el usuario está de acuerdo con una introducción explícita, y decirlo en el informe.
2. Configurar episode.json → intro
"title": "FRINGE LINES",
"subtitle": "30 de octubre de 2026",
"intro": {
"style": "v2",
"title": "Fringe Lines",
"title_seconds": 4.5,
"topics": ["El bucle matutino", "Plantilla de Microsoft", "Construir vs. comprar", "Límites de tokens", "Google vs. modo IA", "S-1 de Anthropic", "Gasto en IA"],
"emphasis": ["27%", "irse", "900%", "retención", "sql", "agentes", "tokens", "todo", "maxing"],
"clips": [
{"say": "microsoft acaba de ofrecer", "until": "empleados que se vayan", "tag": "IA y empleos", "replace": {"27": "27%"},
"graphic_on": "27%", "graphic": {"type": "stat", "kicker": "Oferta de recompra de Microsoft", "value": 27, "suffix": "%", "label": "de los empleados a quienes se les ofreció un pago para *irse*"}},
{"say": "los tokens se van a filtrar", "until": "como el internet", "tag": "Tokens por todas partes"}
]
}
say/until: las primeras y últimas palabras habladas del clip, coincidentes sin distinción de mayúsculas/minúsculas ni puntuación. La coincidencia es la primera aparición en el episodio, así que haz quesaysea distintivo (3–5 palabras). Si el otro orador habla sobre la línea, el buscador reintenta usando solo las palabras de un orador.pre: segundos opcionales de preludio antes desay.tag: la etiqueta del tema que se muestra arriba a la izquierda con su número. Usa 1–3 palabras.replace: correcciones de subtítulos, p. ej., números, "secuela"→"SQL", o"a": ""para ocultar una palabra.graphic+graphic_on: la cortinilla aterriza unos 150 ms antes de la palabra habladagraphic_on.- Opcional
graphic_off(una palabra posterior) vuelve a pantalla completa. - Sin
graphic_off, la cortinilla se mantiene hasta el final del clip.
- Opcional
- Cantidad de cortinillas: agregar cortinillas a 3–5 clips. Elegir aquellos con un número, una empresa o producto nombrado, o una línea citable. Dejar las reacciones y risas a pantalla completa.
- Tipos de gráfico (igual que en los cortos editoriales):
stat: un número de conteo con título y etiqueta;people: una cuadrícula de iconos;lines: líneas de tendencia esquemáticas;quote: una tarjeta tipo tinta;headline: una tarjeta estilo noticia con un barrido destacado;list: filas numeradas.- Usar
*palabra*para cursiva naranja.
- Honestidad: los números en pantalla deben ser lo dicho. Los gráficos son esquemáticos, nunca datos inventados.
topics: 5–7 nombres cortos de capítulos para la tarjeta de título, en orden del episodio.emphasis: 12–25 palabras clave dibujadas en naranja en los subtítulos: números, nombres, palabras de remate.title_seconds: 4–5 s. La tarjeta de título es "Fringe Lines" en serifa con la última palabra en cursiva naranja, la fecha y una lista "En este episodio".
3. Revisar el plan antes de renderizar
~/.shorts-skill/bin/python pipeline/build_episode.py --ep <ep> --stage plan
- Imprime la etiqueta, duración y texto del subtítulo de cada clip de introducción.
- Corregir cualquier
WARN intro clip not found: ajustar la redacción desay/untilpara que coincida exactamente con la transcripción. - Objetivo total: clips de 35–50 s más un título de 4.5 s. Eliminar o recortar clips de más de 6 s.
- Leer cada línea de subtítulo para detectar palabras malinterpretadas y agregar correcciones
replace.
4. Renderizar
~/.shorts-skill/bin/python pipeline/build_episode.py --ep <ep> --stage graphics # clips de introducción + IntroV2 + tercios inferiores
~/.shorts-skill/bin/python pipeline/build_episode.py --ep <ep> --stage final # unir introducción + cuerpo, capítulos, sonoridad
- Agregar
--blura ambos comandos para la versión con fondo desenfocado. Necesita las cámaras desenfocadas en~/.cache/fringe-lines-video/blur/(verpipeline/bg_blur.py) y escribe<ep>-fringe-lines-blur.mp4desde un caché separado. - El cuerpo no necesita rerenderizarse por cambios en la introducción.
- El archivo de capítulos se regenera, por lo que todas las marcas de tiempo se desplazan con la longitud de la introducción.
- Los efectos de sonido (whoosh, pop, whoosh largo hacia el título) se generan en la carpeta de gráficos y los mezcla Remotion.
5. Control de calidad (QA)
F=out/episode/<ep>-fringe-lines.mp4
ffmpeg -v error -y -i $F -t 50 -vf "fps=1,scale=320:-1,tile=8x7" -frames:v 1 /tmp/intro.png
Verificar:
- Cada tarjeta de cortinilla está completamente en pantalla, sus números coinciden con lo dicho y no hay un
*suelto. - Los subtítulos muestran palabras clave en naranja, y ningún subtítulo se superpone con el borde inferior de la tarjeta del orador.
- La tarjeta de título enumera todos los temas en orden.
- Las duraciones de video y audio coinciden (
ffprobe -show_entries stream=codec_type,duration). - El episodio se sitúa en aproximadamente −15.5 LUFS.
- El archivo de capítulos comienza con "00:00 Inicio en frío", luego la duración de la introducción, luego "Poniéndose al día".
Informar al usuario:
- la lista de clips (etiqueta + línea);
- qué clips tienen cortinillas;
- la duración de la introducción;
- cualquier lenguaje explícito;
- cualquier número que verificar.