CommunityEscrita e Ediçãogithub.com

TimeCraker/ppt

Gere apresentações profissionais (PPT / slides / decks) com código python-pptx. Ideal para criar decks de projetos, introduções de produtos ou relatórios técnicos, e também para editar PPTX existentes via script.

O que é ppt?

Esta skill transforma a criação de apresentações em um processo programático, usando `python-pptx` para gerar slides profissionais sem arrastar templates. Diferente de ferramentas visuais, você escreve scripts que podem ser versionados no Git, reaproveitados e ajustados com precisão de 0.01 polegada. A skill cobre todo o fluxo: desde a pesquisa e redação do conteúdo (proibindo dados inventados), passando por um sistema de design fechado (7+1 cores, grid 16:9, tamanhos de fonte fixos), até a geração de código Python com animações opcionais (via COM no Windows). A verificação é feita em três etapas (validação automática de PDF, inspeção visual cega e aprovação final do usuário), garantindo qualidade. Suporta a edição de PPTX existentes por script e oferece uma rica biblioteca de padrões de slide (capa, seção, linha do tempo, cards, gráficos). A skill também orienta quando não usá-la (por exemplo, para vídeos explicativos, use o workflow `explainer-video.md`).

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

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

ppt — Gere apresentações profissionais com código

Apresentações feitas com código, sem arrastar templates: reproduzíveis (mude os dados e reexecute o script), versionáveis no Git, coordenadas precisas até 0.01 polegada; sem WYSIWYG, a verificação visual é feita na Etapa 4.

Etapa 1 · Pesquisa e texto (proibido inventar)

Responda a três perguntas do público antes de começar: Para quem é (leigo / especialista / cliente)? O que o público já sabe sobre o projeto? Que três frases eles devem conseguir repetir depois de ver? Escreva as respostas no cabeçalho do texto; todas as decisões de conteúdo serão baseadas nisso.

Use apenas dados reais do projeto (README / CLAUDE.md / docs / backend de dados, escolha a fonte conforme o tipo). Números sem fonte não entram no PPT; fatos que o público não precisa saber não vão para o corpo — métricas internas (número de funções, constantes de API, codinomes internos) são descartadas por padrão, só ficam se o público for técnico.

Explore conteúdo, não liste nomes: Apenas coletar números e nomes de funcionalidades não é pesquisa. De acordo com o tipo de PPT: técnico/produto → decisões de design + comparação de resultados; portfólio → detalhes e escolhas do trabalho; relatório de dados → metodologia e linha de base; narrativa de marca → pessoas, cenários, reviravoltas.

Esboço antes de página por página: Após a pesquisa, escreva o esboço narrativo — uma linha principal (todo o PPT argumenta uma única coisa) + três respostas de abertura (o que é / para quem / o que resolve) + o papel de cada página na cadeia de argumentação (o que herda da página anterior, o que prepara para a próxima). Conceitos são explicados antes de serem usados, sem referências futuras; duas páginas consecutivas que não se conectam = reorganizar. O texto de cada página (título + pontos principais + roteiro de narração; o roteiro vai para as notas do apresentador) é escrito sob o esboço. Os títulos devem contribuir para a progressão, não ser slogans independentes.

Duas versões: A primeira versão é completa — redação narrativa, assumindo que o público é iniciante, explicando o que é, para quem e o que resolve, permitindo ser longa; a segunda versão é de refinamento — primeiro use o humanizer para remover artificialidade, depois apare conforme as quatro regras abaixo. O humanizer é uma ferramenta de refinamento, não um modelo para a primeira versão; se você escrever a primeira versão seguindo seus padrões, ela ficará enxuta e confusa, começando a gritar slogans sem explicar nada.

  1. Sem preenchimento vazio: Pontos principais com detalhes (função com motivo do design ou resultado, dados com metodologia), remova listas de nomes vazios.
  2. Números com contexto: Valor + metodologia + composição ou comparação, e que sejam números que o público se importa; números sem contexto não são o elemento visual principal.
  3. Cada página com ≥3 fatos verificáveis e específicos; cobrindo o layout e lendo apenas o texto, ele deve "contar" algo, não ser uma "lista".
  4. Regra de posição: Posições grandes (título principal da capa / texto grande da página final / nome da seção) aceitam apenas frases de afirmação ou identidade (com opinião, que soem como slogan); nomes de domínio, número de versão, datas, estatísticas vão para subtítulo ou metadados.

Tolerância zero para jargões de estilo, em duas camadas: jargões corporativos (empoderar / sinergia / verticalizar / ecossistema / ponta a ponta) são removidos diretamente; jargões técnicos (constantes de API / nomes de funções internas / codinomes de sistema / detalhes de implementação) são filtrados pelo público — PPT para leigos ou remove ou explica na mesma página. Números antes de adjetivos; títulos escrevem opinião, não frases nominais; travessões proibidos (acentuado ou não). Texto de itens importantes deve ser aprovado pelo usuário antes da diagramação.

Etapa 2 · Sistema de design (definido antes de escrever código, sem alterações)

DimensãoRegra
PaletaExtraída da linguagem visual do projeto (seção visual do README / cor principal do site / identidade visual da marca); se não houver, use use_theme('warm' / 'tech' / 'forest'). Sistema fechado 7+1 (7 funções + branco), sem adição de cores; texto pequeno sobre fundo ≥4,5:1
Grade16:9 (13.333 × 7.5 pol) · Margem 0,55 · Número de página (12,35; 7,02) · Barra curta coral no topo + rótulo da seção
Tamanho da fonte54 capa / 40 números grandes / 30 título da página / 19 título do card / 13 corpo / 11 secundário / 9 nota, sem valores intermediários
FonteChinês: Microsoft YaHei; código / domínio / números / versão sempre Consolas
DensidadeUm argumento por página; texto com mais de 3 linhas quebra a página, tabela com mais de 6 linhas reduz linhas

Etapa 3 · Geração

  1. pip install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple (primeira vez)
  2. Copie templates/primitives.py + animate.py para a pasta scripts/ do projeto alvo, escreva gen-<nome>-deck.py
  3. Coordenadas calculadas com expressões (ex.: Inches(0.55 + i * 3.13)), sem números mágicos; antes de inserir texto, use check_fit() para verificar, [FIT-WARN] indica quebra de linha/página

Animações (opcional; Windows + MS Office + pywin32). Por padrão, auto_deck() lida com tudo (capa em cascata / cards float_up / números zoom / links wipe / linhas da tabela em cascata rápida 0,06s / números de seção wipe up). Ajustes manuais apenas:

anim = Anim(prs)
anim.auto_deck()                       # Anima toda a apresentação automaticamente
anim.fx(footer, 'fade', dur=0.4)       # Aplica efeito a um elemento específico
anim.chart(gf, 'series')               # Gráfico nativo por série
P.set_transition(prs, 'fade')          # Transição uniforme (páginas com morph são puladas automaticamente)
P.auto_show(prs)                       # Estima duração da narração e avança automaticamente: apresentação inteira reproduzida, gravação = vídeo bruto
prs.save('deck.pptx')
anim.apply('deck.pptx')                # Deve ser após save; escreve COM + lê e verifica
# Ajustes: anim.stagger(P.shape_groups(s, 'card'), 'float_up', step=0.12)
# Animação de crescimento (morph real, ocupa duas páginas consecutivas, auto pula automaticamente; verifique EntryEffect==3954; 2019+, WPS degradado para fade):
P.growth_chart(prs, 6, 'Crescimento', 'Título', cats, vals, highlight=2)   # Barras/colunas
P.growth_line(prs, 8, 'Tendência', 'Título', cats, vals, highlight=5)     # Linha
P.growth_donut(prs, 10, 'Mix', 'Título', cats, vals)                  # Rosca

Lista de efeitos (testado COM): fade / wipe / appear / float_up / float_down / zoom / grow_turn / ease_in / split / wheel / stretch; efeitos ultrapassados não são usados. Ritmo > efeito: duração 0,40,6s, intervalo em cascata 0,10,2s, ≤2 efeitos por página, decorações fixas (barra curta superior / número de página / linha inferior) não entram na animação; gráficos de dados sempre com growth_*, gráfico nativo apenas quando o PowerPoint precisa alterar dados após entrega.

Editar PPTX existente (por script, proibido manual, salvar com novo nome): P.deck_replace(prs, {'Nome Antigo': 'Nome Novo'}) substitui em toda a apresentação (incluindo notas); P.deck_recolor(prs, dict(zip(P.THEMES['warm'].values(), P.THEMES['tech'].values()))) altera o tema de toda a apresentação.

Padrões de página (dicionário, não checklist: escolha o padrão conforme o esboço narrativo da Etapa 1, não crie conteúdo para preencher padrões; repetir o mesmo padrão é aceitável, uma apresentação com 9 padrões diferentes de uma vez é uma exposição de capacidade, não uma narrativa; densidade é alimentada pela Etapa 1, não pelo padrão):

PadrãoFunçãoUso
Capaslide_coverAbertura: título grande 54 + bloco de cor vertical à direita
Página de seçãoslide_sectionNavegação para apresentações com 12+ páginas, estilo revista (linhas de moldura + número de sequência com marca d'água + itens)
Linha do temposlide_timelineEvolução / roteiro, destaca a posição atual
Página de comparaçãoslide_versusA/B, antes/depois, selo VS no centro
Página de citaçãoslide_quoteUma frase que vale uma página inteira (PPT com 12+ páginas)
Grade de cardsslide_cardsFunções/módulos paralelos, quebra automática de linha
Mural de númerosslide_numbersVisão geral de indicadores de mesmo peso
Página de mídiaslide_mediaCaptura de tela + pontos principais; sidebar= imagem grande 60% + anotações + rodapé
Painel de alta densidadeslide_denseExplicar um subsistema em uma página: área principal 60% + lista lateral agrupada
Tabela verdadeiraslide_tableComparação de API/modelo/lista, 6~9 linhas, hierarquia de largura de coluna
Diagrama de fluxoslide_chainFluxo de arquitetura, destaque com cor invertida + cartões de subs
Lista de duas colunasslide_rowsPilha técnica / configuração
Gráfico de crescimentogrowth_chart / line / donutDados de crescimento com morph real
Gráfico nativobar / line / donut_chartQuando o PowerPoint precisa alterar dados após entrega
Página finalslide_closingInformações de contato; slogan= texto grande personalizado (frase de afirmação)

Etapa 4 · Verificação visual (obrigatório, não pule)

Três níveis, automação primeiro, humano apenas na versão final:

① Triagem programática: Converta para PDF via Office COM (Presentations.Open depois SaveAs("<saida>.pdf", 32)) → python <pasta_da_skill>/templates/verify.py <saida>.pdf. Verifique vazamento de página, placeholder, contraste WCAG (texto decorativo ≥72pt isento); código de saída 1 = problema, modifique o script e reexecute.

② Inspeção visual cega: Renderize PNG com pymupdf (fitz + get_pixmap(dpi=100)) → entregue a um subagente sem contexto de geração para duas perguntas: primeiro, página por página, verifique quatro itens (vazamento / glifo / alinhamento / contraste); segundo, teste de reprodução do público — mostre apenas as primeiras 1/3 páginas, pergunte "O que é isso, para quem é, o que resolve". Se não responder, a Etapa 1 (público) ou a abertura não estão corretas, volte e reescreva o texto antes de gerar novamente. No prompt da inspeção cega, não presuma isenções (não diga "isso é intencional"): elementos cortados pela borda da página, texto decorativo grande e de baixo contraste — trate como suspeitas. Encontre problemas, modifique o script e reexecute, proibido editar pptx manualmente.

Use caminhos absolutos para imagens reais na verificação visual; verifique a versão ou hash atual. Quando houver limitação de caminho de ferramentas específicas, escolha um caminho compatível, não force a cópia de diretórios.

③ Aprovação final do usuário: Após os dois primeiros níveis resolverem problemas mecânicos, o usuário vê apenas o resultado final.

Etapa 5 · Entrega

Relatório: número de páginas + lista de páginas / caminho e tamanho do arquivo / conclusão da verificação de três níveis / número de páginas com roteiro de narração / duração total da reprodução automática / localização do script de geração (reproduzível). Envie o script para o repositório Git (o PPTX não vai para o Git).

Limites e Armadilhas

  • Sem MS Office → Etapa 4 degradada para LibreOffice soffice --convert-to pdf; sem ambos → reporte claramente "verificação visual não realizada"
  • Console GBK: print proibido de caracteres não ASCII, use OK
  • Largura de coluna de tabela nativa pptx descontrolada → sempre desenhe linhas de tabela manualmente (box + text linha por linha)
  • Falta de glifos chineses → configure YaHei no nível do run (primitives já trata)
  • Shape_id é independente por página, não único; animate.py localiza pela árvore XML, em desenvolvimento secundário não pesquise globalmente por id; pywin32: pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simple
  • docx / xlsx podem reutilizar a ideia de primitives, mas a tabela de padrões de página se aplica apenas a pptx

Workflow e Arquivamento Atuais

O diretor de conteúdo é responsável pelo público, origem do material e esboço narrativo; o PPT mantém o objetivo de entrega de slides editáveis. Gere após confirmação do design; regras de quadros de vídeo não se aplicam ao PPT. Script de geração, dados de entrada, materiais necessários e seus hashes são preservados com a receita; a lista de entrega declara PPT/PDF/capa; antes da verificação de restauração do arquivo, não limpe. A verificação visual e a aprovação final do usuário são relatadas separadamente.

Individual skills in this repo

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

Habilidades Relacionadas