Criação, edição e análise de apresentações. Quando o Claude precisar trabalhar com apresentações (.pptx files) para: (1) Criar novas apresentações, (2) Modificar ou editar conteúdo, (3) Trabalhar com layouts, (4) Adicionar comentários ou anotações do orador, ou quaisquer outras tarefas de apresentação
Um usuário pode pedir para você criar, editar ou analisar o conteúdo de um arquivo .pptx. Um arquivo .pptx é essencialmente um arquivo ZIP contendo arquivos XML e outros recursos que você pode ler ou editar. Você tem diferentes ferramentas e fluxos de trabalho disponíveis para diferentes tarefas.
Lendo e analisando conteúdo
Extração de texto
Se você precisa apenas ler o conteúdo de texto de uma apresentação, você deve converter o documento para markdown:
# Converter documento para markdown
python -m markitdown path-to-file.pptx
Acesso XML bruto
Você precisa de acesso XML bruto para: comentários, anotações do orador, layouts de slide, animações, elementos de design e formatação complexa. Para qualquer um desses recursos, você precisará descompactar uma apresentação e ler seu conteúdo XML bruto.
Nota: O script unpack.py está localizado em skills/pptx/ooxml/scripts/unpack.py relativo à raiz do projeto. Se o script não existir neste caminho, use find . -name "unpack.py" para localizá-lo.
Estruturas chave de arquivo
ppt/presentation.xml - Metadados principais da apresentação e referências de slides
ppt/slides/slide{N}.xml - Conteúdo individual do slide (slide1.xml, slide2.xml, etc.)
ppt/notesSlides/notesSlide{N}.xml - Anotações do orador para cada slide
ppt/comments/modernComment_*.xml - Comentários para slides específicos
ppt/slideLayouts/ - Modelos de layout para slides
ppt/slideMasters/ - Modelos mestre de slide
ppt/theme/ - Informações de tema e estilo
ppt/media/ - Imagens e outros arquivos de mídia
Tipografia e extração de cores
Quando dado um exemplo de design para emular: Sempre analise a tipografia e as cores da apresentação primeiro usando os métodos abaixo:
Leia o arquivo de tema: Verifique ppt/theme/theme1.xml para cores (<a:clrScheme>) e fontes (<a:fontScheme>)
Amostra de conteúdo de slide: Examine ppt/slides/slide1.xml para uso real de fonte (<a:rPr>) e cores
Busca por padrões: Use grep para encontrar cor (<a:solidFill>, <a:srgbClr>) e referências de fonte em todos os arquivos XML
Criando uma nova apresentação PowerPoint sem um modelo
Ao criar uma nova apresentação PowerPoint do zero, use o fluxo de trabalho html2pptx para converter slides HTML para PowerPoint com posicionamento preciso.
Princípios de Design
CRÍTICO: Antes de criar qualquer apresentação, analise o conteúdo e escolha elementos de design apropriados:
Considere o assunto: Sobre o que é esta apresentação? Que tom, indústria ou humor ela sugere?
Verifique por branding: Se o usuário mencionar uma empresa/organização, considere suas cores de marca e identidade
Combine a paleta com o conteúdo: Selecione cores que reflitam o assunto
Declare sua abordagem: Explique suas escolhas de design antes de escrever o código
Requisitos:
✅ Declare sua abordagem de design informada pelo conteúdo ANTES de escrever o código
✅ Use apenas fontes seguras para web: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS, Impact
✅ Crie hierarquia visual clara através de tamanho, peso e cor
Divisores de seção diagonais em vez de horizontais
Larguras de coluna assimétricas (30/70, 40/60, 25/75)
Cabeçalhos de texto rotacionados a 90° ou 270°
Molduras circulares/hexagonais para imagens
Formas de destaque triangulares nos cantos
Formas sobrepostas para profundidade
Tratamentos de Borda e Moldura:
Bordas grossas de uma cor (10-20pt) em apenas um lado
Bordas de linha dupla com cores contrastantes
Colchetes de canto em vez de molduras completas
Bordas em forma de L (topo+esquerda ou fundo+direita)
Acentos sublinhados abaixo dos cabeçalhos (3-5pt de espessura)
Tratamentos de Tipografia:
Contraste de tamanho extremo (manchetes de 72pt vs corpo de 11pt)
Cabeçalhos em maiúsculas com espaçamento entre letras amplo
Seções numeradas em tipo de exibição superdimensionado
Monoespaçado (Courier New) para dados/estatísticas/conteúdo técnico
Fontes condensadas (Arial Narrow) para informações densas
Texto contornado para ênfase
Estilo de Gráfico e Dados:
Gráficos monocromáticos com uma única cor de destaque para dados principais
Gráficos de barras horizontais em vez de verticais
Gráficos de pontos em vez de gráficos de barras
Linhas de grade mínimas ou nenhuma
Rótulos de dados diretamente nos elementos (sem legendas)
Números superdimensionados para métricas principais
Inovações de Layout:
Imagens de sangramento total com sobreposições de texto
Coluna da barra lateral (20-30% de largura) para navegação/contexto
Sistemas de grade modular (blocos 3×3, 4×4)
Fluxo de conteúdo padrão Z ou padrão F
Caixas de texto flutuantes sobre formas coloridas
Layouts de várias colunas estilo revista
Tratamentos de Fundo:
Blocos de cor sólida ocupando 40-60% do slide
Preenchimentos de gradiente (vertical ou diagonal apenas)
Fundos divididos (duas cores, diagonal ou vertical)
Faixas de cor de ponta a ponta
Espaço negativo como elemento de design
Dicas de Layout
Ao criar slides com gráficos ou tabelas:
Layout de duas colunas (PREFERIDO): Use um cabeçalho abrangendo toda a largura, depois duas colunas abaixo - texto/marcadores em uma coluna e o conteúdo em destaque na outra. Isso fornece melhor equilíbrio e torna os gráficos/tabelas mais legíveis. Use flexbox com larguras de coluna desiguais (por exemplo, divisão 40%/60%) para otimizar o espaço para cada tipo de conteúdo.
Layout de slide completo: Deixe o conteúdo em destaque (gráfico/tabela) ocupar todo o slide para máximo impacto e legibilidade
NUNCA empilhe verticalmente: Não coloque gráficos/tabelas abaixo do texto em uma única coluna - isso causa má legibilidade e problemas de layout
Fluxo de Trabalho
OBRIGATÓRIO - LEIA O ARQUIVO INTEIRO: Leia html2pptx.md completamente do início ao fim. NUNCA defina limites de intervalo ao ler este arquivo. Leia o conteúdo completo do arquivo para sintaxe detalhada, regras de formatação críticas e práticas recomendadas antes de prosseguir com a criação da apresentação.
Crie um arquivo HTML para cada slide com dimensões adequadas (por exemplo, 720pt × 405pt para 16:9)
Use <p>, <h1>-<h6>, <ul>, <ol> para todo o conteúdo de texto
Use class="placeholder" para áreas onde gráficos/tabelas serão adicionados (renderize com fundo cinza para visibilidade)
CRÍTICO: Rasterizar gradientes e ícones como imagens PNG PRIMEIRO usando Sharp, depois referencie no HTML
LAYOUT: Para slides com gráficos/tabelas/imagens, use layout de slide completo ou layout de duas colunas para melhor legibilidade
Crie e execute um arquivo JavaScript usando a biblioteca html2pptx.js para converter slides HTML para PowerPoint e salvar a apresentação
Use a função html2pptx() para processar cada arquivo HTML
Adicione gráficos e tabelas às áreas de espaço reservado usando a API PptxGenJS
Salve a apresentação usando pptx.writeFile()
Validação visual: Gere miniaturas e inspecione problemas de layout
Crie grade de miniaturas: python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4
Leia e examine cuidadosamente a imagem da miniatura para:
Corte de texto: Texto sendo cortado por barras de cabeçalho, formas ou bordas do slide
Sobreposição de texto: Texto se sobrepondo a outro texto ou formas
Problemas de posicionamento: Conteúdo muito próximo das bordas do slide ou outros elementos
Problemas de contraste: Contraste insuficiente entre texto e fundos
Se problemas encontrados, ajuste margens/espaçamento/cores HTML e regenere a apresentação
Repita até que todos os slides estejam visualmente corretos
Editando uma apresentação PowerPoint existente
Ao editar slides em uma apresentação PowerPoint existente, você precisa trabalhar com o formato Office Open XML (OOXML) bruto. Isso envolve descompactar o arquivo .pptx, editar o conteúdo XML e reempacotá-lo.
Fluxo de Trabalho
OBRIGATÓRIO - LEIA O ARQUIVO INTEIRO: Leia ooxml.md (~500 linhas) completamente do início ao fim. NUNCA defina limites de intervalo ao ler este arquivo. Leia o conteúdo completo do arquivo para orientação detalhada sobre a estrutura OOXML e fluxos de trabalho de edição antes de qualquer edição de apresentação.
Descompacte a apresentação: python ooxml/scripts/unpack.py <office_file> <output_dir>
Edite os arquivos XML (principalmente ppt/slides/slide{N}.xml e arquivos relacionados)
CRÍTICO: Valide imediatamente após cada edição e corrija quaisquer erros de validação antes de prosseguir: python ooxml/scripts/validate.py <dir> --original <file>
Empacote a apresentação final: python ooxml/scripts/pack.py <input_directory> <office_file>
Criando uma nova apresentação PowerPoint usando um modelo
Quando você precisa criar uma apresentação que segue o design de um modelo existente, você precisará duplicar e reorganizar os slides do modelo antes de substituir o contexto do espaço reservado.
Fluxo de Trabalho
Extrair texto do modelo E criar grade de miniaturas visuais:
Leia template-content.md: Leia o arquivo inteiro para entender o conteúdo da apresentação do modelo. NUNCA defina limites de intervalo ao ler este arquivo.
Crie grades de miniaturas: python scripts/thumbnail.py template.pptx
Analise o modelo e salve o inventário em um arquivo:
Análise Visual: Revise a(s) grade(s) de miniaturas para entender layouts de slides, padrões de design e estrutura visual
Crie e salve um arquivo de inventário de modelo em template-inventory.md contendo:
# Análise de Inventário de Modelo
**Total de Slides: [contagem]**
**IMPORTANTE: Slides são indexados em 0 (primeiro slide = 0, último slide = contagem-1)**
## [Nome da Categoria]
- Slide 0: [Código de layout se disponível] - Descrição/propósito
- Slide 1: [Código de layout] - Descrição/propósito
- Slide 2: [Código de layout] - Descrição/propósito
[... CADA slide deve ser listado individualmente com seu índice ...]
Usando a grade de miniaturas: Referencie as miniaturas visuais para identificar:
Padrões de layout (slides de título, layouts de conteúdo, divisores de seção)
Locais e contagens de espaços reservados para imagens
Consistência de design entre grupos de slides
Hierarquia visual e estrutura
Este arquivo de inventário é NECESSÁRIO para selecionar modelos apropriados na próxima etapa
Crie o esboço da apresentação com base no inventário do modelo:
Revise os modelos disponíveis da etapa 2.
Escolha um modelo de introdução ou título para o primeiro slide. Este deve ser um dos primeiros modelos.
Escolha layouts seguros e baseados em texto para os outros slides.
CRÍTICO: Combine a estrutura do layout com o conteúdo real:
Layouts de coluna única: Use para narrativa unificada ou tópico único
Layouts de duas colunas: Use APENAS quando tiver exatamente 2 itens/conceitos distintos
Layouts de três colunas: Use APENAS quando tiver exatamente 3 itens/conceitos distintos
Layouts de imagem + texto: Use APENAS quando tiver imagens reais para inserir
Layouts de citação: Use APENAS para citações reais de pessoas (com atribuição), nunca para ênfase
Nunca use layouts com mais espaços reservados do que você tem conteúdo
Se você tiver 2 itens, não os force em um layout de 3 colunas
Se você tiver 4+ itens, considere dividir em vários slides ou usar um formato de lista
Conte seus pedaços de conteúdo reais ANTES de selecionar o layout
Verifique se cada espaço reservado no layout escolhido será preenchido com conteúdo significativo
Selecione uma opção representando o melhor layout para cada seção de conteúdo.
Salve outline.md com conteúdo E mapeamento de modelo que aproveita os designs disponíveis
Exemplo de mapeamento de modelo:
# Slides de modelo para usar (indexação baseada em 0)
# AVISO: Verifique se os índices estão dentro do intervalo! Modelo com 73 slides tem índices 0-72
# Mapeamento: números de slides do esboço -> índices de slides do modelo
template_mapping = [
0, # Use slide 0 (Título/Capa)
34, # Use slide 34 (B1: Título e corpo)
34, # Use slide 34 novamente (duplicata para segundo B1)
50, # Use slide 50 (E1: Citação)
54, # Use slide 54 (F2: Fechamento + Texto)
]
Duplique, reordene e exclua slides usando rearrange.py:
Use o script scripts/rearrange.py para criar uma nova apresentação com slides na ordem desejada:
Leia text-inventory.json: Leia todo o arquivo text-inventory.json para entender todas as formas e suas propriedades. NUNCA defina limites de intervalo ao ler este arquivo.
A estrutura JSON do inventário:
{
"slide-0": {
"shape-0": {
"placeholder_type": "TITLE", // ou null para não-placeholders
"left": 1.5, // posição em polegadas
"top": 2.0,
"width": 7.5,
"height": 1.2,
"paragraphs": [
{
"text": "Texto do parágrafo",
// Propriedades opcionais (apenas incluídas quando não padrão):
"bullet": true, // marcador explícito detectado
"level": 0, // apenas incluído quando bullet é true
"alignment": "CENTER", // CENTER, RIGHT (não LEFT)
"space_before": 10.0, // espaço antes do parágrafo em pontos
"space_after": 6.0, // espaço após parágrafo em pontos
"line_spacing": 22.4, // espaçamento entre linhas em pontos
"font_name": "Arial", // da primeira execução
"font_size": 14.0, // em pontos
"bold": true,
"italic": false,
"underline": false,
"color": "FF0000" // cor RGB
}
]
}
}
}
Principais características:
Slides: Nomeados como "slide-0", "slide-1", etc.
Formas: Ordenadas por posição visual (cima-baixo, esquerda-direita) como "shape-0", "shape-1", etc.
Tipos de espaço reservado: TITLE, CENTER_TITLE, SUBTITLE, BODY, OBJECT, ou null
Tamanho de fonte padrão: default_font_size em pontos extraído de espaços reservados de layout (quando disponível)
Números de slide são filtrados: Formas com tipo de espaço reservado SLIDE_NUMBER são excluídas automaticamente do inventário
Marcadores: Quando bullet: true, level é sempre incluído (mesmo se 0)
Espaçamento: space_before, space_after e em pontos (apenas incluído quando definido)
Gere texto de substituição e salve os dados em um arquivo JSON
Com base no inventário de texto da etapa anterior:
CRÍTICO: Primeiro verifique quais formas existem no inventário - apenas referencie formas que estão realmente presentes
VALIDAÇÃO: O script replace.py validará se todas as formas em seu JSON de substituição existem no inventário
Se você referenciar uma forma inexistente, receberá um erro mostrando as formas disponíveis
Se você referenciar um slide inexistente, receberá um erro indicando que o slide não existe
Todos os erros de validação são mostrados de uma vez antes do script sair
IMPORTANTE: O script replace.py usa inventory.py internamente para identificar TODAS as formas de texto
LIMPEZA AUTOMÁTICA: TODAS as formas de texto do inventário serão limpas, a menos que você forneça "paragraphs" para elas
Adicione um campo "paragraphs" às formas que precisam de conteúdo (não "replacement_paragraphs")
Formas sem "paragraphs" no JSON de substituição terão seu texto limpo automaticamente
Parágrafos com marcadores serão automaticamente alinhados à esquerda. Não defina a propriedade alignment quando "bullet": true
Gere conteúdo de substituição apropriado para texto de espaço reservado
Use o tamanho da forma para determinar o comprimento de conteúdo apropriado
CRÍTICO: Inclua propriedades de parágrafo do inventário original - não forneça apenas texto
IMPORTANTE: Quando bullet: true, NÃO inclua símbolos de marcador (•, -, *) no texto - eles são adicionados automaticamente
REGRAS DE FORMATAÇÃO ESSENCIAIS:
Cabeçalhos/títulos geralmente devem ter "bold": true
Itens de lista devem ter "bullet": true, "level": 0 (nível é obrigatório quando bullet é true)
Preserve quaisquer propriedades de alinhamento (por exemplo, "alignment": "CENTER" para texto centralizado)
Inclua propriedades de fonte quando diferentes do padrão (por exemplo, "font_size": 14.0, "font_name": "Lora")
Cores: Use "color": "FF0000" para RGB ou "theme_color": "DARK_1" para cores do tema
O script de substituição espera parágrafos formatados corretamente, não apenas cadeias de texto
Formas sobrepostas: Prefira formas com default_font_size maior ou placeholder_type mais apropriado
Primeiro extrair o inventário de TODAS as formas de texto usando funções de inventory.py
Validar se todas as formas no JSON de substituição existem no inventário
Limpar texto de TODAS as formas identificadas no inventário
Aplicar novo texto apenas a formas com "paragraphs" definidos no JSON de substituição
Preservar a formatação aplicando propriedades de parágrafo do JSON
Lidar com marcadores, alinhamento, propriedades de fonte e cores automaticamente
Salvar a apresentação atualizada
Exemplo de erros de validação:
ERROR: Formas inválidas no JSON de substituição:
- Forma 'shape-99' não encontrada no 'slide-0'. Formas disponíveis: shape-0, shape-1, shape-4
- Slide 'slide-999' não encontrado no inventário
ERROR: Texto de substituição piorou o estouro nestas formas:
- slide-0/shape-2: estouro piorou em 1.25" (era 0.00", agora 1.25")
Criando Grades de Miniaturas
Para criar grades de miniaturas visuais de slides do PowerPoint para análise rápida e referência: