Crear una presentación para teleprompter
Convierte material fuente en bruto en una presentación completa y bien ritmada para teleprompter. Tú (el
agente) haces el trabajo blando — entrevistar, ingerir, redactar la prosa, colocar
pausas retóricas. Una herramienta determinista comprometida (tools/deck.js) hace el trabajo duro
contractual — analizar, contar palabras, estimar la duración exacta, ensamblar el JSON, estampar una
id estable. Nunca escribas el JSON de la presentación a mano; complílalo siempre a través de la herramienta para que
el contrato y el informe de duración estén garantizados por la máquina.
Lee references/format.md para conocer el formato exacto de autoría .deck.md y la
receta de extracción de pptx antes de empezar a escribir.
Flujo de trabajo
1. Recopilar la fuente
Pregunta cuál es la fuente, luego ingiérela:
- Texto pegado / notas — úsalo directamente.
- Imágenes / capturas de pantalla — lee los archivos de imagen tú mismo (visión). Sin script.
- PDF — léelo tú mismo con la herramienta Read (soporte nativo de PDF). Sin script.
- PowerPoint (.pptx) — convierte la presentación a texto de la mejor manera posible en el
equipo del usuario (consulta
references/format.md→ "Extrayendo un .pptx"): captura el texto por diapositiva y las notas del orador, luego comprueba que la salida sea correcta antes de redactar a partir de ella. Trata el archivo como no fiable; no confirmes ningún script de extracción desechable que escribas.
Las notas del orador son el mejor material en bruto para la narración — prefierelas sobre las viñetas en la diapositiva cuando ambas existan.
2. Confirmar la intención y los metadatos (pregunta, no asumas)
Propón un esquema por diapositiva a partir de la fuente — número, título, type
(por ejemplo, content, section-divider), la indicación on-screen (lo que ve el público),
y un target aproximado en minutos por diapositiva — y confírmalo. Pregunta también:
- Duración total objetivo de la charla (determina los objetivos por diapositiva).
- Audiencia / propósito (ajusta el registro y la profundidad).
- Modo de contenido — narración completa (escribe la prosa hablada) o notas de referencia
(viñetas breves de puntos clave que el presentador amplía con sus propias palabras, con una
pausa después de cada punto para dar tiempo a hablar). Consulta
references/format.md→ "Modos de contenido". Si el usuario ya pidió notas de referencia / puntos clave / un estilo de resumen o notas, omite esta pregunta y escribe en modo notas; de lo contrario, pregunta. - Estilo de habla / voz. Ofrece la habilidad
blacktree-voicedel propio usuario si quiere usarla con su voz de blog personal, o un registro: conversacional, formal, enérgico o neutro. Aplica esa voz al redactar. (En modo notas, la voz da forma a las pocas palabras que escribes; el presentador aporta el resto en vivo). - Idioma (por defecto en-GB para coincidir con las presentaciones existentes del repositorio).
Usa AskUserQuestion para estas decisiones ramificadas en lugar de adivinar.
3. Redactar la narración
Escribe el guion hablado por diapositiva en la voz elegida. Coloca pausas rítmicas donde la
retórica las requiera — después de una revelación, antes de una lista, en un cambio de tema
marcado — usando [[pause]] (1s) o [[pause:1.5]] (personalizada). Esta colocación
semántica es tu trabajo; la herramienta solo valida e informa.
En modo notas, no escribas oraciones completas: escribe una viñeta corta de punto clave
por párrafo y termínala con una pausa de presupuesto de habla ([[pause:20]]–
[[pause:30]] para un punto sustancial, menos para otros menores), ajustando las pausas para
que sumen el target de la diapositiva. Las pocas palabras de la viñeta se leen en segundos, así que
las pausas son lo que alcanza el objetivo. Consulta references/format.md → "Modos de contenido" para
la convención y la nota de que el indicador de ritmo del informe se espera y se ignora aquí.
Escríbelo todo en decks/<slug>.deck.md en el formato de references/format.md.
Mantén cada párrafo como un latido lógico (la herramienta colapsa el ajuste automático de línea).
4. Compilar
node tools/deck.js decks/<slug>.deck.md --wpm 130
Esto escribe decks/<slug>.json e imprime un informe de duración: por diapositiva las
palabras, el recuento de pausas y los segundos añadidos, la m:ss estimada al ritmo de referencia, las
ppm implícitas frente al rango de 60–220, y la diferencia respecto al objetivo de cada diapositiva; más
el total de la presentación. Usa --wpm <n> para informar al ritmo al que realmente lee el usuario.
Opcional: --fill-beats inserta un [[pause]] estructural al final de los párrafos que
carezcan de uno (nunca en el último párrafo de una diapositiva, nunca duplicando un latido
existente). Desactivado por defecto — úsalo solo si el usuario quiere espacio para respirar automático
además de tus latidos creados.
5. Confirmar duración e iterar
Muestra el informe al usuario. Si una diapositiva excede o no alcanza su objetivo, revisa la
prosa (ajústala o amplíala) o ajusta las pausas, luego recompila. Repite hasta que el
tiempo se ajuste. El id de la presentación es estable (derivado del título / meta.id), así que
recompilar actualiza la misma presentación en el mismo lugar en lugar de generar duplicados.
6. Entregar
Confirma la presentación final e informa al usuario:
- La presentación compilada está en
decks/<slug>.json; la fuente editable esdecks/<slug>.deck.md(se puede volver a ejecutar en cualquier momento). - Para usarla: abre la aplicación → menú (abajo a la derecha) → elegir archivo y selecciona el
JSON, o arrastra el
.jsona la zona de carga.decks/no aparece automáticamente, por lo que debe cargarse una vez; a partir de entonces persiste en ese dispositivo y recuerda su posición.
Barreras de seguridad
- El JSON de la presentación siempre lo produce
tools/deck.js, nunca se escribe a mano. - Todo el texto de la presentación llega a la aplicación a través de
textContent/.value; aún así, mantén los scripts libres de caracteres de control (la herramienta ySchemasanitizan, pero mantén la limpieza). - No confirmes ningún script de extracción de pptx desechable; extrae, verifica, limpia.
- Los latidos de pausa son tiempo absoluto (no escalado al ritmo); úsalos con intención.