CommunityRedacción y edicióngithub.com

TimeCraker/ppt

Genera presentaciones profesionales (PPT / diapositivas / decks) con código python-pptx. Ideal para crear decks desde cero o modificar pptx existentes. Si el usuario pide un video explicativo, no uses este skill solo; sigue el flujo de trabajo 'workflows/explainer-video.md' y este skill solo se encarga del material gráfico del deck.

¿Qué es ppt?

Este skill permite generar presentaciones profesionales en PowerPoint (PPTX) utilizando exclusivamente código Python y la biblioteca python-pptx, sin necesidad de arrastrar plantillas. Es ideal para desarrolladores que quieren mantener sus presentaciones bajo control de versiones (Git), repetibles con datos actualizados, y con precisión de coordenadas hasta 0.01 pulgadas. El flujo de trabajo se divide en cinco pasos: investigación y redacción de contenido (prohibido inventar datos, solo usar fuentes reales), definición del sistema de diseño (paleta de colores, tipografía, rejilla), generación de código, verificación visual automatizada con pruebas de accesibilidad y renderizado, y entrega final. Soporta plataformas como Claude Code, Cursor, Codex y otras herramientas de AI agent. Incluye funciones para animaciones (con pywin32 en Windows + MS Office), transiciones morph, y verificación de contraste WCAG. Tiene criterios estrictos contra jerga vacía, números sin contexto y listas sin narrativa. El resultado es un script Python que genera el PPTX, no el archivo binario, manteniendo la trazabilidad y repetibilidad.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/TimeCraker/vibe-studio/tree/HEAD/skills/ppt

Installed? Explore more Redacción y edición skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Preguntar en tu IA favorita

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

Documentación

ppt — Genera presentaciones profesionales con código

Dibuja la presentación con código, sin plantillas: reproducible (cambia datos y vuelve a ejecutar el script), se puede versionar en Git, coordenadas precisas hasta 0.01 pulgadas; sin WYSIWYG, la verificación se hace en el Paso 4.

Paso 1 · Investigación y redacción (prohibido inventar)

Responde primero a tres preguntas sobre la audiencia antes de escribir: ¿Para quién es (externos/internos/clientes)? ¿Qué sabe ya la audiencia sobre el proyecto? ¿Qué tres cosas debe poder repetir al terminar de ver? Escribe las respuestas al inicio del borrador de contenido; todas las decisiones posteriores se rigen por ellas.

El material solo proviene de datos reales del proyecto (README / CLAUDE.md / docs / backends de datos, según el tipo). Los números sin fuente no entran en la presentación; los hechos que la audiencia no necesita saber no van en el cuerpo — las métricas internas (número de funciones, constantes de API, nombres en clave internos) quedan fuera por defecto; solo si la audiencia es interna se conservan.

Extrae contenido, no nombres: recopilar números y nombres de funciones no es investigar. Según el tipo de presentación: técnica/producto: decisiones de diseño + comparación de resultados; portafolio: detalles de las obras y las decisiones tomadas; informe de datos: métricas y líneas base; narrativa de marca: personas, escenarios, giros.

Esquema antes que página por página: Después de la investigación, escribe primero el esquema narrativo — una línea principal (toda la presentación solo argumenta una cosa) + tres respuestas iniciales (qué es / para quién / qué resuelve) + el papel de cada página en la cadena argumental (qué conecta de la página anterior, qué prepara para la siguiente). Explica los conceptos antes de usarlos; prohibido usar referencias hacia adelante. Si dos páginas consecutivas no se conectan, reordena. El borrador página por página (título + puntos clave + guion oral; el guion oral se pone en notes() como notas del orador, y es la fuente de contenido para el flujo de trabajo de video explicativo) se escribe debajo del esquema; los títulos deben participar en la progresión, no ser eslóganes independientes.

Dos pasadas para el borrador final: Primera pasada escribe en abundancia — narración completa, asumiendo que la audiencia no sabe nada, explicando qué es, para quién y qué resuelve, permitiendo que sea largo; solo en la segunda pasada se pule — primero pasa un humanizador para quitar el olor a máquina, luego recorta según las cuatro reglas siguientes. El humanizador es una herramienta de pulido, no una plantilla para el primer borrador; si escribes el primer borrador con sus estándares, solo quedará delgado y saltarín, sin haber explicado nada antes de lanzar eslóganes.

  1. No relleno vacío: Los puntos deben tener detalles (las funciones con razón de diseño o efecto, los datos con métrica), elimina listas de nombres desnudos.
  2. Números con contexto: Valor + métrica + composición o comparación, y que sean números que le importen a la audiencia; los números sin contexto no deben ser el elemento visual principal.
  3. Cada página ≥3 hechos verificables y rastreables; si tapas el diseño y solo lees el texto, debe estar 'contando' no 'enumerando'.
  4. Regla de espacios: Los espacios grandes (título principal de portada / texto grande de página final / títulos de sección) solo llevan frases de tesis o identidad (con opinión, que suene a eslogan al leerlo); los nombres de dominio, versiones, fechas, estadísticas numéricas siempre van a subtítulos o metadatos.

Tolerancia cero a la jerga vacía, en dos niveles: jerga comercial (empoderar, cerrar el círculo, precipitar, matriz, ecosistema, ventanilla única, extremo a extremo) se elimina directamente; jerga técnica (constantes de API, nombres de funciones internas, códigos de sistema, detalles de implementación) se filtra según la audiencia; en presentaciones para externos, o se elimina o se explica en el mismo lenguaje llano. Los números tienen prioridad sobre los adjetivos; los títulos escriben opiniones, no frases nominales; los guiones largos están prohibidos tanto en chino como en inglés. El borrador de contenido de los proyectos importantes debe ser revisado por el usuario antes de diseñar.

Paso 2 · Sistema de diseño (definido antes de escribir código, no se modifica durante todo el proceso)

DimensiónRegla
Paleta de coloresExtraer del lenguaje de diseño del proyecto (sección visual del README / color principal del sitio / marca VI); si no existe, usar use_theme('warm' / 'tech' / 'forest'). Sistema cerrado 7+1 (7 roles + blanco papel), prohibido añadir colores a mitad de camino; el texto pequeño sobre el fondo debe tener una relación de contraste ≥4.5:1
Cuadrícula16:9 (13.333 × 7.5 in) · Margen 0.55 · Número de página (12.35, 7.02) · Barra coral superior + etiqueta de sección
Tamaño de fuente54 portada / 40 números grandes / 30 título de página / 19 tarjeta / 13 cuerpo / 11 secundario / 9 notas, prohibido usar valores intermedios
FuenteChino: Microsoft YaHei; código, nombres de dominio, números, versiones: siempre Consolas
DensidadUna idea por página; si el texto supera 3 líneas, divide en páginas; si la tabla supera 6 filas, elimina filas

Paso 3 · Generación

  1. pip install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple (primera vez)
  2. Copia templates/primitives.py + animate.py al directorio scripts/ del proyecto, escribe gen-<nombre>-deck.py
  3. Las coordenadas se calculan con expresiones (ej. Inches(0.55 + i * 3.13)), no uses números mágicos; antes de insertar texto usa check_fit() para verificar, si sale [FIT-WARN], divide la línea o la página

Animaciones (opcional; Windows + MS Office + pywin32). Por defecto, auto_deck() lo hace todo (portada en cascada / tarjetas flotando / números zoom / enlaces wipe / filas de tabla con cascada rápida de 0.06s / números de sección wipe up); solo ajustes manuales:

anim = Anim(prs)
# Auto-encadenar toda la presentación
anim.auto_deck()  
# Ajuste fino para un elemento especial
anim.fx(footer, 'fade', dur=0.4)  
# Gráfico nativo por series
anim.chart(gf, 'series')  
# Transición uniforme (morph se salta automáticamente)
P.set_transition(prs, 'fade')  
# Reproducción automática con temporización del guion oral
P.auto_show(prs)  
prs.save('deck.pptx')
# Debe ir después de save; escritura COM + autoverificación
anim.apply('deck.pptx')  
# Ajuste fino: anim.stagger(P.shape_groups(s, 'card'), 'float_up', step=0.12)
# Crecimiento narrativo (morph real interpola, ocupa dos páginas consecutivas, auto se salta; verificar que EntryEffect==3954; 2019+, WPS degrada a fade):
P.growth_chart(prs, 6, 'Crecimiento', 'Título', cats, vals, highlight=2)   # Barras/columnas
P.growth_line(prs, 8, 'Tendencia', 'Título', cats, vals, highlight=5)     # Línea
P.growth_donut(prs, 10, 'Mezcla', 'Título', cats, vals)                  # Anillo de proporciones

Lista de efectos probados (COM): fade / wipe / appear / float_up / float_down / zoom / grow_turn / ease_in / split / wheel / stretch; no se aceptan efectos antiguos. El ritmo importa más que los efectos: duración 0.40.6s, intervalo de cascada 0.10.2s, ≤2 efectos por página, los elementos fijos de la página (barra superior, número de página, línea inferior) no entran en animaciones; los gráficos de datos siempre usan growth_*; los gráficos nativos solo se usan cuando se necesita modificar datos en PowerPoint después de la entrega.

Modificar pptx existente (con script, prohibido editar a mano, guardar con nuevo nombre): P.deck_replace(prs, {'nombre_antiguo': 'nombre_nuevo'}) reemplaza en todo el texto (incluidas notas); P.deck_recolor(prs, dict(zip(P.THEMES['warm'].values(), P.THEMES['tech'].values()))) cambia el tema de toda la presentación.

Patrones de página (diccionario no checklist: elige el patrón según el esquema narrativo del Paso 1, no inventes contenido para llenar patrones; repetir el mismo patrón está bien, tener 9 patrones diferentes en una presentación es una exhibición de capacidades no una narración; la densidad la da el Paso 1, no el patrón):

PatrónFunciónUso
Portadaslide_coverApertura: título grande 54 + bloque de color vertical derecho
Página de secciónslide_sectionNavegación en presentaciones largas (>12 páginas), estilo revista (líneas de marco + número de secuencia en marca de agua + elementos)
Línea de tiemposlide_timelineEvolución / hoja de ruta, resalta la posición actual
Página de comparaciónslide_versusA/B, antes/después, con círculo VS en el centro
Página de citaslide_quoteUna frase que merece una página completa (en PPT de >12 páginas)
Cuadrícula de tarjetasslide_cardsFunciones/módulos en paralelo, salto de línea automático
Muro de númerosslide_numbersResumen de indicadores con igual peso
Página de imagen y textoslide_mediaCaptura de pantalla + puntos clave; sidebar= imagen grande 60% + anotaciones + notas al pie
Zona densaslide_denseExplicar un subsistema en una página: área principal 60% + lista de grupos laterales
Tabla realslide_tableComparación de API / modelos / listas, 6~9 filas, con jerarquía de ancho de columna
Diagrama de enlaceslide_chainFlujo de arquitectura, resalta con color inverso + tarjetas de subsistemas
Lista de dos columnasslide_rowsStack técnico / configuración
Gráfico de crecimientogrowth_chart / line / donutMorfismo real de interpolación de datos
Gráfico nativobar / line / donut_chartPara cuando se necesite modificar datos en PowerPoint después de la entrega
Página finalslide_closingInformación de contacto; slogan= personaliza texto grande (frase de tesis)

Paso 4 · Verificación visual (obligatorio, no saltar)

Tres niveles de tubería, automatización primero, humano solo para el resultado final:

① Filtro programático: Conversión a PDF con Office COM (Presentations.Open luego SaveAs("<salida>.pdf", 32)) → python <este_skill>/templates/verify.py <salida>.pdf. Revisa desbordamiento por página, marcadores de posición, contraste WCAG (exento texto decorativo ≥72pt); código de salida 1 = hay problema, modifica el script y vuelve a ejecutar.

② Inspección visual a ciegas: Renderiza PNG con pymupdf (fitz + get_pixmap(dpi=100)) → envíalo a un subagente sin contexto de generación para dos preguntas: primero, revisión página por página de cuatro aspectos (desbordamiento / caracteres extraños / alineación / contraste); segundo, prueba de repetición del espectador — solo dale las primeras 1/3 páginas, pregúntale «¿Qué es esto, para quién es, qué resuelve?»; si no responde, el paso 1 de audiencia o la apertura no están bien, vuelve a escribir el contenido y regenéralo. En la inspección a ciegas, no des exenciones previas (no digas 'esto es intencional'): elementos cortados por el borde de la página, texto decorativo enorme y de bajo contraste, etc., también se reportan como sospechas por ojos frescos. Si se encuentran problemas, modifica el script y vuelve a ejecutar, prohibido editar el pptx a mano.

La inspección visual usa rutas absolutas de imágenes reales, verifica la versión actual o el hash; si hay limitaciones de ruta con herramientas específicas, elige una ruta compatible, no exijas copiar directorios.

③ Revisión final del usuario: Una vez que los dos niveles anteriores hayan eliminado todos los problemas mecánicos, el usuario solo ve el resultado final.

Paso 5 · Entrega

Informe: número de páginas + lista de páginas / ruta y tamaño del archivo / conclusión de la verificación de tres niveles / número de páginas con guion oral / duración total de la reproducción automática / ubicación del script de generación (reproducible). Envía el script en el repositorio de Git (el pptx resultante no entra en Git).

Límites y errores comunes

  • Sin MS Office → Paso 4 degrada a LibreOffice soffice --convert-to pdf; si no hay ninguno, informa explícitamente «No se realizó verificación visual»
  • Consola GBK: en print no uses caracteres no ASCII, usa OK
  • Tablas nativas de pptx con ancho de columna incontrolable → siempre dibuja filas de tabla manualmente (box + text fila por fila)
  • Fuente china faltante → establece Microsoft YaHei a nivel de run (ya manejado en primitives)
  • El shape_id se numera de forma independiente por página, no es único; animate.py ya se localiza por árbol XML; en desarrollo secundario, no busques por id global; pywin32: pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simple
  • docx / xlsx pueden reutilizar la idea de primitives, pero la tabla de patrones de página solo es aplicable a pptx

Flujo de trabajo actual y archivo

Content-director se encarga de la audiencia, las fuentes de material y el borrador narrativo; el objetivo de entrega de la presentación es mantener diapositivas editables. Diseñar primero, luego generar; las reglas de fotogramas fijos de video no se aplican a la presentación. El script de generación, los datos de entrada, los materiales necesarios y su hash se conservan junto con la receta; la lista de entrega declara PPT/PDF/portada; no se limpia antes de la verificación de archivo. La verificación visual y la revisión final del usuario se reportan por separado.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills relacionados