Communitygithub.com

mhashim6/teleprompter

Teleprompter que resalta y marca el ritmo de tu guion palabra por palabra, con pausas, dos temas y memoria por presentación. Con habilidad de autoría para el agente.

¿Qué es teleprompter?

Esta habilidad permite a un agente de IA (como Claude Code) crear presentaciones completas para teleprompter con control de ritmo. El agente se encarga del trabajo creativo: entrevistar al usuario, ingerir material fuente (texto, imágenes, PDF, PowerPoint), redactar la narración en un tono específico e insertar pausas retóricas. Luego, una herramienta determinista (`tools/deck.js`) compila todo en un archivo JSON con identificación única, calculando la duración exacta basada en palabras y pausas. Soporta dos modos de contenido: narración completa (texto completo para leer) y notas de referencia (puntos breves con pausas largas para que el orador improvise). El resultado es un archivo JSON que se carga en la aplicación de teleprompter, donde el agente marca el ritmo palabra por palabra y recuerda la posición de cada presentación por dispositivo.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add mhashim6/teleprompter

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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-voice del 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 es decks/<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 .json a 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 y Schema sanitizan, 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.

Skills relacionados