Criação, edição e análise de PPTX
Visão geral
Um arquivo .pptx é um arquivo ZIP contendo arquivos XML e recursos. Crie, edite ou analise apresentações do PowerPoint usando extração de texto, acesso raw XML ou workflows html2pptx. Aplique essa habilidade para criação e modificação programática de apresentações.
Aprimoramento Visual com Esquemas Científicos
Ao criar documentos com essa habilidade, sempre considere adicionar diagramas e esquemas científicos para melhorar a comunicação visual.
Se o seu documento ainda não contém esquemas ou diagramas:
- Use a habilidade scientific-schematics para gerar diagramas de qualidade para publicação com IA
- Simplesmente descreva o diagrama desejado em linguagem natural
- Nano Banana Pro irá gerar, revisar e refinar o esquema automaticamente
Para novos documentos: Esquemas científicos devem ser gerados por padrão para representar visualmente conceitos-chave, workflows, arquiteturas ou relacionamentos descritos no texto.
Como gerar esquemas:
python scripts/generate_schematic.py "sua descrição do diagrama" -o figures/output.png
A IA irá automaticamente:
- Criar imagens de qualidade para publicação com formatação apropriada
- Revisar e refinar através de múltiplas iterações
- Garantir acessibilidade (amigável a daltonismo, alto contraste)
- Salvar outputs no diretório figures/
Quando adicionar esquemas:
- Diagramas de workflow de apresentação para slides
- Fluxogramas do processo de design de slides
- Diagramas de organização de conteúdo
- Ilustrações de arquitetura de sistemas
- Visualizações de fluxo de processos
- Qualquer conceito complexo que se beneficie de visualização
Para orientação detalhada sobre criação de esquemas, consulte a documentação da habilidade scientific-schematics.
Leitura e análise de conteúdo
Extração de texto
Para ler o conteúdo de texto de uma apresentação, converta o documento para markdown:
# Converter documento para markdown
python -m markitdown path-to-file.pptx
Acesso raw XML
Acesso raw XML é necessário para: comentários, anotações do apresentador, layouts de slides, animações, elementos de design e formatação complexa. Para qualquer um desses recursos, desempacote uma apresentação e leia seu conteúdo XML raw.
Desempacotando um arquivo
python ooxml/scripts/unpack.py <office_file> <output_dir>
Nota: O script unpack.py está localizado em skills/pptx/ooxml/scripts/unpack.py relativo à raiz do projeto. Se o script não existir nesse caminho, use find . -name "unpack.py" para localizá-lo.
Estruturas de arquivos principais
ppt/presentation.xml - Metadados de apresentação principal e referências de slides
ppt/slides/slide{N}.xml - Conteúdo de slides individuais (slide1.xml, slide2.xml, etc.)
ppt/notesSlides/notesSlide{N}.xml - Anotações do apresentador para cada slide
ppt/comments/modernComment_*.xml - Comentários para slides específicos
ppt/slideLayouts/ - Modelos de layout para slides
ppt/slideMasters/ - Modelos de master slide
ppt/theme/ - Informações de tema e estilos
ppt/media/ - Imagens e outros arquivos de mídia
Extração de tipografia e cor
Quando receber um design de exemplo para emular: Sempre analise a tipografia e cores da apresentação primeiro usando os métodos abaixo:
- Leia arquivo de tema: Verifique
ppt/theme/theme1.xml para cores (<a:clrScheme>) e fontes (<a:fontScheme>)
- Examine conteúdo de slide: Examine
ppt/slides/slide1.xml para uso real de fonte (<a:rPr>) e cores
- Busque padrões: Use grep para encontrar referências de cor (
<a:solidFill>, <a:srgbClr>) e font em todos os arquivos XML
Criando uma nova apresentação do PowerPoint sem um template
Ao criar uma nova apresentação do PowerPoint do zero, use o workflow html2pptx para converter slides HTML em 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: Do que se trata essa apresentação? Qual tom, indústria ou clima ela sugere?
- Verifique marca: Se o usuário menciona uma empresa/organização, considere suas cores de marca e identidade
- Combine paleta com conteúdo: Selecione cores que reflitam o assunto
- Declare sua abordagem: Explique suas escolhas de design antes de escrever código
Requisitos:
- ✅ Declare sua abordagem de design baseada em conteúdo ANTES de escrever código
- ✅ Use apenas fontes web-safe: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS, Impact
- ✅ Crie clara hierarquia visual através de tamanho, peso e cor
- ✅ Garanta legibilidade: contraste forte, texto adequadamente dimensionado, alinhamento limpo
- ✅ Seja consistente: repita padrões, espaçamento e linguagem visual entre slides
Seleção de Paleta de Cores
Escolhendo cores criativamente:
- Pense além dos defaults: Que cores genuinamente combinam com este tópico específico? Evite escolhas no automático.
- Considere múltiplos ângulos: Tópico, indústria, clima, nível de energia, público-alvo, identidade de marca (se mencionada)
- Seja aventureiro: Tente combinações inesperadas - uma apresentação de saúde não precisa ser verde, finanças não precisa ser azul marinho
- Construa sua paleta: Escolha 3-5 cores que funcionem bem juntas (cores dominantes + tons de suporte + acentos)
- Garanta contraste: Texto deve ser claramente legível sobre fundos
Exemplos de paletas de cores (use estes para inspirar criatividade - escolha uma, adapte ou crie a sua):
- Blue Clássico: Azul marinho profundo (#1C2833), cinza ardósia (#2E4053), prata (#AAB7B8), branco desativado (#F4F6F6)
- Teal & Coral: Teal (#5EA8A7), teal profundo (#277884), coral (#FE4447), branco (#FFFFFF)
- Vermelho Ousado: Vermelho (#C0392B), vermelho brilhante (#E74C3C), laranja (#F39C12), amarelo (#F1C40F), verde (#2ECC71)
- Blush Caloroso: Malva (#A49393), blush (#EED6D3), rosa (#E8B4B8), creme (#FAF7F2)
- Luxo Borgonha: Borgonha (#5D1D2E), carmesim (#951233), ferrugem (#C15937), ouro (#997929)
- Roxo Profundo & Esmeralda: Roxo (#B165FB), azul escuro (#181B24), esmeralda (#40695B), branco (#FFFFFF)
- Creme & Verde Floresta: Creme (#FFE1C7), verde floresta (#40695B), branco (#FCFCFC)
- Rosa & Roxo: Rosa (#F8275B), coral (#FF574A), rosa (#FF737D), roxo (#3D2F68)
- Limão & Ameixa: Limão (#C5DE82), ameixa (#7C3A5F), coral (#FD8C6E), cinza-azulado (#98ACB5)
- Preto & Ouro: Ouro (#BF9A4A), preto (#000000), creme (#F4F6F6)
- Sálvia & Terracota: Sálvia (#87A96B), terracota (#E07A5F), creme (#F4F1DE), carvão (#2C2C2C)
- Carvão & Vermelho: Carvão (#292929), vermelho (#E33737), cinza-claro (#CCCBCB)
- Laranja Vibrante: Laranja (#F96D00), cinza-claro (#F2F2F2), carvão (#222831)
- Verde Floresta: Preto (#191A19), verde (#4E9F3D), verde escuro (#1E5128), branco (#FFFFFF)
- Arco-Íris Retrô: Roxo (#722880), rosa (#D72D51), laranja (#EB5C18), âmbar (#F08800), ouro (#DEB600)
- Terroso Vintage: Mostarda (#E3B448), sálvia (#CBD18F), verde floresta (#3A6B35), creme (#F4F1DE)
- Rosa Costeira: Rosa envelhecida (#AD7670), castor (#B49886), casca de ovo (#F3ECDC), cinza cinzento (#BFD5BE)
- Laranja & Turquesa: Laranja-claro (#FC993E), turquesa acinzentada (#667C6F), branco (#FCFCFC)
Opções de Detalhes Visuais
Padrões Geométricos:
- Divisores de seção diagonal em vez de horizontal
- Larguras de coluna assimétricas (30/70, 40/60, 25/75)
- Texto de header rotacionado em 90° ou 270°
- Frames circulares/hexagonais para imagens
- Formas triangulares de destaque nos cantos
- Formas sobrepostas para profundidade
Tratamentos de Borda & Frame:
- Bordas de cor única espessa (10-20pt) apenas em um lado
- Bordas de duas linhas com cores contrastantes
- Colchetes de canto em vez de frames completos
- Bordas em L (superior+esquerda ou inferior+direita)
- Acentos de sublinhado sob headers (3-5pt de espessura)
Tratamentos de Tipografia:
- Contraste de tamanho extremo (headlines de 72pt vs corpo de 11pt)
- Headers em all-caps com espaçamento de letra amplo
- Seções numeradas em tipo de exibição oversized
- Monospace (Courier New) para dados/estatísticas/conteúdo técnico
- Fontes condensadas (Arial Narrow) para informações densas
- Texto delineado para ênfase
Estilo de Gráfico & Dados:
- Gráficos monocromáticos com cor de destaque única para dados-chave
- Gráficos de barra horizontal em vez de vertical
- Gráficos de pontos em vez de gráficos de barra
- Linhas de grade mínimas ou nenhuma
- Rótulos de dados diretamente em elementos (sem legendas)
- Números oversized para métricas-chave
Inovações de Layout:
- Imagens full-bleed com sobreposições de texto
- Coluna da 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 F
- Caixas de texto flutuante sobre formas coloridas
- Layouts de múltiplas colunas estilo revista
Tratamentos de Fundo:
- Blocos de cor sólida ocupando 40-60% do slide
- Preenchimentos de gradiente (apenas vertical ou diagonal)
- Fundos divididos (duas cores, diagonal ou vertical)
- Bandas de cor de borda a borda
- Espaço negativo como elemento de design
Dicas de Layout
Para slides com gráficos ou tabelas:
- Layout de duas colunas (PREFERIDO): Use um header abrangendo a largura total, depois duas colunas abaixo - texto/bullets em uma coluna e o conteúdo em destaque em outra. Isso proporciona melhor equilíbrio e torna gráficos/tabelas mais legíveis. Use flexbox com larguras de coluna desiguais (ex: divisão 40%/60%) para otimizar espaço para cada tipo de conteúdo.
- Layout de slide completo: Deixe o conteúdo em destaque (gráfico/tabela) ocupar o slide inteiro para máximo impacto e legibilidade
- NUNCA empilhe verticalmente: Não coloque gráficos/tabelas abaixo de texto em uma única coluna - isso causa problemas de legibilidade e layout
Workflow
- OBRIGATÓRIO - LEIA 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 melhores práticas antes de prosseguir com a criação de apresentação.
- Crie um arquivo HTML para cada slide com dimensões apropriadas (ex: 720pt × 405pt para 16:9)
- Use
<p>, <h1>-<h6>, <ul>, <ol> para todo conteúdo de texto
- Use
class="placeholder" para áreas onde gráficos/tabelas serão adicionados (renderize com fundo cinza para visibilidade)
- CRÍTICO: Rasterize gradientes e ícones como imagens PNG PRIMEIRO usando Sharp, depois referencie em 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 em PowerPoint e salvar a apresentação
- Use a função
html2pptx() para processar cada arquivo HTML
- Adicione gráficos e tabelas a áreas placeholder usando API PptxGenJS
- Salve a apresentação usando
pptx.writeFile()
- Validação visual: Gere miniaturas e inspecione problemas de layout
- Crie grid de miniaturas:
python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4
- Leia e examine cuidadosamente a imagem de miniatura para:
- Corte de texto: Texto sendo cortado por barras de header, formas ou bordas de slide
- Sobreposição de texto: Texto sobrepondo outro texto ou formas
- Problemas de posicionamento: Conteúdo muito perto de bordas de slide ou outros elementos
- Problemas de contraste: Contraste insuficiente entre texto e fundos
- Se problemas encontrados, ajuste margens/espaçamento/cores de HTML e regenere a apresentação
- Repita até que todos os slides estejam visualmente corretos
Editando uma apresentação do PowerPoint existente
Para editar slides em uma apresentação do PowerPoint existente, trabalhe com o formato Office Open XML (OOXML) raw. Isso envolve desempacotar o arquivo .pptx, editar conteúdo XML e reempacotá-lo.
Workflow
- OBRIGATÓRIO - LEIA 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 estrutura OOXML e workflows de edição antes de qualquer edição de apresentação.
- Desempacote 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 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 do PowerPoint usando um template
Para criar uma apresentação que segue o design de um template existente, duplique e reorganize slides de template antes de substituir conteúdo placeholder.
Workflow
Extraia texto do template E crie grid de miniaturas visuais:
- Extraia texto:
python -m markitdown template.pptx > template-content.md
- Leia
template-content.md: Leia o arquivo inteiro para entender os conteúdos da apresentação do template. NUNCA defina limites de intervalo ao ler este arquivo.
- Crie grids de miniaturas:
python scripts/thumbnail.py template.pptx
- Veja seção Criando Grids de Miniaturas para mais detalhes
Analise template e salve inventário em um arquivo:
- Análise Visual: Revise grid de miniaturas para entender layouts de slides, padrões de design e estrutura visual
- Crie e salve um arquivo de inventário de template em
template-inventory.md contendo:# Análise de Inventário de Template
**Total de Slides: [contagem]**
**IMPORTANTE: Slides são 0-indexados (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 grid de miniaturas: Referencie as miniaturas visuais para identificar:
- Padrões de layout (slides de título, layouts de conteúdo, divisores de seção)
- Localizações e contagens de placeholder de imagem
- Consistência de design entre grupos de slides
- Hierarquia visual e estrutura
- Este arquivo de inventário é OBRIGATÓRIO para selecionar templates apropriados no próximo passo
Crie outline de apresentação baseado em inventário de template:
- Revise templates disponíveis do passo 2.
- Escolha um template de intro ou título para o primeiro slide. Este deve ser um dos primeiros templates.
- Escolha layouts seguros, baseados em texto para os outros slides.
- CRÍTICO: Combine estrutura de layout com conteúdo real:
- Layouts de coluna única: Use para narrativa unificada ou tópico único
- Layouts de duas colunas: Use APENAS quando houver exatamente 2 itens/conceitos distintos
- Layouts de três colunas: Use APENAS quando houver exatamente 3 itens/conceitos distintos
- Layouts de imagem + texto: Use APENAS quando houver 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 placeholders que conteúdo disponível
- Se houver 2 itens, não force em layout de 3 colunas
- Se houver 4+ itens, considere quebrar em múltiplos slides ou usar formato de lista
- Conte as peças de conteúdo reais ANTES de selecionar o layout
- Verifique cada placeholder no layout escolhido será preenchido com conteúdo significativo
- Selecione uma opção representando o layout melhor para cada seção de conteúdo.
- Salve
outline.md com conteúdo E mapeamento de template que aproveita designs disponíveis
- Exemplo de mapeamento de template:
# Templates de slides a usar (indexação baseada em 0)
# AVISO: Verifique que índices estão no intervalo! Template com 73 slides tem índices 0-72
# Mapeamento: números de slide do outline -> índices de slide do template
template_mapping = [
0, # Use slide 0 (Title/Cover)
34, # Use slide 34 (B1: Title and body)
34, # Use slide 34 novamente (duplicar para segundo B1)
50, # Use slide 50 (E1: Quote)
54, # Use slide 54 (F2: Closing + Text)
]
Duplique, reorganize e delete slides usando rearrange.py:
- Use o script
scripts/rearrange.py para criar uma nova apresentação com slides na ordem desejada:python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52
- O script lida com duplicação de slides repetidos, deletion de slides não utilizados e reordenação automaticamente
- Índices de slide são baseados em 0 (primeiro slide é 0, segundo é 1, etc.)
- O mesmo índice de slide pode aparecer múltiplas vezes para duplicar esse slide
Extraia TODO o texto usando o script inventory.py:
Execute extração de inventário:
python scripts/inventory.py working.pptx text-inventory.json
Leia text-inventory.json: Leia o arquivo text-inventory.json inteiro para entender todas as formas e suas propriedades. NUNCA defina limites de intervalo ao ler este arquivo.
A estrutura JSON de 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 (incluídas apenas quando não-padrão):
"bullet": true, // bullet explícito detectado
"level": 0, // incluído apenas 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 de linha 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 (topo-para-baixo, esquerda-para-direita) como "shape-0", "shape-1", etc.
- Tipos de placeholder: TITLE, CENTER_TITLE, SUBTITLE, BODY, OBJECT, ou null
- Tamanho de fonte padrão:
default_font_size em pontos extraído de placeholders de layout (quando disponível)
- Números de slide são filtrados: Formas com tipo de placeholder SLIDE_NUMBER são automaticamente excluídas do inventário
- Bullets: Quando
bullet: true, level é sempre incluído (mesmo que 0)
- Espaçamento:
space_before, space_after e line_spacing em pontos (incluídos apenas quando definidos)
- Cores:
color para RGB (ex: "FF0000"), theme_color para cores de tema (ex: "DARK_1")
- Propriedades: Apenas valores não-padrão são incluídos no output
Gere texto de substituição e salve os dados em um arquivo JSON
Baseado no inventário de texto do passo 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 irá validar que todas as formas no JSON de substituição existem no inventário
- Se uma forma não-existente for referenciada, um erro mostrará as formas disponíveis
- Se um slide não-existente for referenciado, um erro indicará 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" a 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 bullets serão automaticamente alinhados à esquerda. Não defina a propriedade
alignment quando "bullet": true
- Gere conteúdo de substituição apropriado para texto placeholder
- Use tamanho de forma para determinar comprimento apropriado de conteúdo
- CRÍTICO: Inclua propriedades de parágrafo do inventário original - não apenas forneça texto
- IMPORTANTE: Quando bullet: true, NÃO inclua símbolos de bullet (•, -, *) no texto - eles são adicionados automaticamente
- REGRAS ESSENCIAIS DE FORMATAÇÃO:
- Headers/títulos devem tipicamente ter
"bold": true
- Itens de lista devem ter
"bullet": true, "level": 0 (level é necessário quando bullet é true)
- Preserve qualquer propriedade de alinhamento (ex:
"alignment": "CENTER" para texto centralizado)
- Inclua propriedades de fonte quando diferentes do padrão (ex:
"font_size": 14.0, "font_name": "Lora")
- Cores: Use
"color": "FF0000" para RGB ou "theme_color": "DARK_1" para cores de tema
- O script de substituição espera parágrafos adequadamente formatados, não apenas strings de texto
- Formas sobrepostas: Prefira formas com maior default_font_size ou placeholder_type mais apropriado
- Salve o inventário atualizado com substituições em
replacement-text.json
- AVISO: Diferentes layouts de template têm contagens de formas diferentes - sempre verifique o inventário real antes de criar substituições
Exemplo de campo paragraphs mostrando formatação apropriada:
"paragraphs": [
{
"text": "Novo texto de título de apresentação",
"alignment": "CENTER",
"bold": true
},
{
"text": "Cabeçalho de Seção",
"bold": true
},
{
"text": "Primeiro ponto de bullet sem símbolo de bullet",
"bullet": true,
"level": 0
},
{
"text": "Texto com cor vermelha",
"color": "FF0000"
},
{
"text": "Texto com cor de tema",
"theme_color": "DARK_1"
},
{
"text": "Texto de parágrafo regular sem formatação especial"
}
]
Formas não listadas no JSON de substituição são automaticamente limpas:
{
"slide-0": {
"shape-0": {
"paragraphs": [...] // Esta forma obtém novo texto
}
// shape-1 e shape-2 do inventário serão limpas automaticamente
}
}
Padrões de formatação comuns para apresentações:
- Slides de título: Texto em bold, às vezes centralizado
- Headers de seção dentro de slides: Texto em bold
- Listas de bullets: Cada item precisa
"bullet": true, "level": 0
- Texto de corpo: Geralmente sem propriedades especiais
- Citações: Podem ter propriedades de alinhamento ou fonte especiais
Aplique substituições usando o script replace.py
python scripts/replace.py working.pptx replacement-text.json output.pptx
O script irá:
- Primeiro extrair o inventário de TODAS as formas de texto usando funções de inventory.py
- Validar que 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 às formas com "paragraphs" defin
1---2name: pptx-23description: Kit de ferramentas de apresentação (.pptx). Criar/editar slides, layouts, conteúdo, anotações do apresentador, comentários para criação e modificação programática de apresentações.4license: Proprietary. LICENSE.txt has complete terms5---6
7# Criação, edição e análise de PPTX
8
9## Visão geral
10
11Um arquivo .pptx é um arquivo ZIP contendo arquivos XML e recursos. Crie, edite ou analise apresentações do PowerPoint usando extração de texto, acesso raw XML ou workflows html2pptx. Aplique essa habilidade para criação e modificação programática de apresentações.
12
13## Aprimoramento Visual com Esquemas Científicos
14
15**Ao criar documentos com essa habilidade, sempre considere adicionar diagramas e esquemas científicos para melhorar a comunicação visual.**
16
17Se o seu documento ainda não contém esquemas ou diagramas:
18- Use a habilidade **scientific-schematics** para gerar diagramas de qualidade para publicação com IA
19- Simplesmente descreva o diagrama desejado em linguagem natural
20- Nano Banana Pro irá gerar, revisar e refinar o esquema automaticamente
21
22**Para novos documentos:** Esquemas científicos devem ser gerados por padrão para representar visualmente conceitos-chave, workflows, arquiteturas ou relacionamentos descritos no texto.
23
24**Como gerar esquemas:**
25```bash
26python scripts/generate_schematic.py "sua descrição do diagrama" -o figures/output.png
27```
28
29A IA irá automaticamente:
30- Criar imagens de qualidade para publicação com formatação apropriada
31- Revisar e refinar através de múltiplas iterações
32- Garantir acessibilidade (amigável a daltonismo, alto contraste)
33- Salvar outputs no diretório figures/
34
35**Quando adicionar esquemas:**
36- Diagramas de workflow de apresentação para slides
37- Fluxogramas do processo de design de slides
38- Diagramas de organização de conteúdo
39- Ilustrações de arquitetura de sistemas
40- Visualizações de fluxo de processos
41- Qualquer conceito complexo que se beneficie de visualização
42
43Para orientação detalhada sobre criação de esquemas, consulte a documentação da habilidade scientific-schematics.
44
45---
46
47## Leitura e análise de conteúdo
48
49### Extração de texto
50Para ler o conteúdo de texto de uma apresentação, converta o documento para markdown:
51
52```bash
53# Converter documento para markdown
54python -m markitdown path-to-file.pptx
55```
56
57### Acesso raw XML
58Acesso raw XML é necessário para: comentários, anotações do apresentador, layouts de slides, animações, elementos de design e formatação complexa. Para qualquer um desses recursos, desempacote uma apresentação e leia seu conteúdo XML raw.
59
60#### Desempacotando um arquivo
61`python ooxml/scripts/unpack.py <office_file> <output_dir>`
62
63**Nota**: O script unpack.py está localizado em `skills/pptx/ooxml/scripts/unpack.py` relativo à raiz do projeto. Se o script não existir nesse caminho, use `find . -name "unpack.py"` para localizá-lo.
64
65#### Estruturas de arquivos principais
66* `ppt/presentation.xml` - Metadados de apresentação principal e referências de slides
67* `ppt/slides/slide{N}.xml` - Conteúdo de slides individuais (slide1.xml, slide2.xml, etc.)
68* `ppt/notesSlides/notesSlide{N}.xml` - Anotações do apresentador para cada slide
69* `ppt/comments/modernComment_*.xml` - Comentários para slides específicos
70* `ppt/slideLayouts/` - Modelos de layout para slides
71* `ppt/slideMasters/` - Modelos de master slide
72* `ppt/theme/` - Informações de tema e estilos
73* `ppt/media/` - Imagens e outros arquivos de mídia
74
75#### Extração de tipografia e cor
76**Quando receber um design de exemplo para emular**: Sempre analise a tipografia e cores da apresentação primeiro usando os métodos abaixo:
771. **Leia arquivo de tema**: Verifique `ppt/theme/theme1.xml` para cores (`<a:clrScheme>`) e fontes (`<a:fontScheme>`)
782. **Examine conteúdo de slide**: Examine `ppt/slides/slide1.xml` para uso real de fonte (`<a:rPr>`) e cores
793. **Busque padrões**: Use grep para encontrar referências de cor (`<a:solidFill>`, `<a:srgbClr>`) e font em todos os arquivos XML
80
81## Criando uma nova apresentação do PowerPoint **sem um template**
82
83Ao criar uma nova apresentação do PowerPoint do zero, use o workflow **html2pptx** para converter slides HTML em PowerPoint com posicionamento preciso.
84
85### Princípios de Design
86
87**CRÍTICO**: Antes de criar qualquer apresentação, analise o conteúdo e escolha elementos de design apropriados:
881. **Considere o assunto**: Do que se trata essa apresentação? Qual tom, indústria ou clima ela sugere?
892. **Verifique marca**: Se o usuário menciona uma empresa/organização, considere suas cores de marca e identidade
903. **Combine paleta com conteúdo**: Selecione cores que reflitam o assunto
914. **Declare sua abordagem**: Explique suas escolhas de design antes de escrever código
92
93**Requisitos**:
94- ✅ Declare sua abordagem de design baseada em conteúdo ANTES de escrever código
95- ✅ Use apenas fontes web-safe: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS, Impact
96- ✅ Crie clara hierarquia visual através de tamanho, peso e cor
97- ✅ Garanta legibilidade: contraste forte, texto adequadamente dimensionado, alinhamento limpo
98- ✅ Seja consistente: repita padrões, espaçamento e linguagem visual entre slides
99
100#### Seleção de Paleta de Cores
101
102**Escolhendo cores criativamente**:
103- **Pense além dos defaults**: Que cores genuinamente combinam com este tópico específico? Evite escolhas no automático.
104- **Considere múltiplos ângulos**: Tópico, indústria, clima, nível de energia, público-alvo, identidade de marca (se mencionada)
105- **Seja aventureiro**: Tente combinações inesperadas - uma apresentação de saúde não precisa ser verde, finanças não precisa ser azul marinho
106- **Construa sua paleta**: Escolha 3-5 cores que funcionem bem juntas (cores dominantes + tons de suporte + acentos)
107- **Garanta contraste**: Texto deve ser claramente legível sobre fundos
108
109**Exemplos de paletas de cores** (use estes para inspirar criatividade - escolha uma, adapte ou crie a sua):
110
1111. **Blue Clássico**: Azul marinho profundo (#1C2833), cinza ardósia (#2E4053), prata (#AAB7B8), branco desativado (#F4F6F6)
1122. **Teal & Coral**: Teal (#5EA8A7), teal profundo (#277884), coral (#FE4447), branco (#FFFFFF)
1133. **Vermelho Ousado**: Vermelho (#C0392B), vermelho brilhante (#E74C3C), laranja (#F39C12), amarelo (#F1C40F), verde (#2ECC71)
1144. **Blush Caloroso**: Malva (#A49393), blush (#EED6D3), rosa (#E8B4B8), creme (#FAF7F2)
1155. **Luxo Borgonha**: Borgonha (#5D1D2E), carmesim (#951233), ferrugem (#C15937), ouro (#997929)
1166. **Roxo Profundo & Esmeralda**: Roxo (#B165FB), azul escuro (#181B24), esmeralda (#40695B), branco (#FFFFFF)
1177. **Creme & Verde Floresta**: Creme (#FFE1C7), verde floresta (#40695B), branco (#FCFCFC)
1188. **Rosa & Roxo**: Rosa (#F8275B), coral (#FF574A), rosa (#FF737D), roxo (#3D2F68)
1199. **Limão & Ameixa**: Limão (#C5DE82), ameixa (#7C3A5F), coral (#FD8C6E), cinza-azulado (#98ACB5)
12010. **Preto & Ouro**: Ouro (#BF9A4A), preto (#000000), creme (#F4F6F6)
12111. **Sálvia & Terracota**: Sálvia (#87A96B), terracota (#E07A5F), creme (#F4F1DE), carvão (#2C2C2C)
12212. **Carvão & Vermelho**: Carvão (#292929), vermelho (#E33737), cinza-claro (#CCCBCB)
12313. **Laranja Vibrante**: Laranja (#F96D00), cinza-claro (#F2F2F2), carvão (#222831)
12414. **Verde Floresta**: Preto (#191A19), verde (#4E9F3D), verde escuro (#1E5128), branco (#FFFFFF)
12515. **Arco-Íris Retrô**: Roxo (#722880), rosa (#D72D51), laranja (#EB5C18), âmbar (#F08800), ouro (#DEB600)
12616. **Terroso Vintage**: Mostarda (#E3B448), sálvia (#CBD18F), verde floresta (#3A6B35), creme (#F4F1DE)
12717. **Rosa Costeira**: Rosa envelhecida (#AD7670), castor (#B49886), casca de ovo (#F3ECDC), cinza cinzento (#BFD5BE)
12818. **Laranja & Turquesa**: Laranja-claro (#FC993E), turquesa acinzentada (#667C6F), branco (#FCFCFC)
129
130#### Opções de Detalhes Visuais
131
132**Padrões Geométricos**:
133- Divisores de seção diagonal em vez de horizontal
134- Larguras de coluna assimétricas (30/70, 40/60, 25/75)
135- Texto de header rotacionado em 90° ou 270°
136- Frames circulares/hexagonais para imagens
137- Formas triangulares de destaque nos cantos
138- Formas sobrepostas para profundidade
139
140**Tratamentos de Borda & Frame**:
141- Bordas de cor única espessa (10-20pt) apenas em um lado
142- Bordas de duas linhas com cores contrastantes
143- Colchetes de canto em vez de frames completos
144- Bordas em L (superior+esquerda ou inferior+direita)
145- Acentos de sublinhado sob headers (3-5pt de espessura)
146
147**Tratamentos de Tipografia**:
148- Contraste de tamanho extremo (headlines de 72pt vs corpo de 11pt)
149- Headers em all-caps com espaçamento de letra amplo
150- Seções numeradas em tipo de exibição oversized
151- Monospace (Courier New) para dados/estatísticas/conteúdo técnico
152- Fontes condensadas (Arial Narrow) para informações densas
153- Texto delineado para ênfase
154
155**Estilo de Gráfico & Dados**:
156- Gráficos monocromáticos com cor de destaque única para dados-chave
157- Gráficos de barra horizontal em vez de vertical
158- Gráficos de pontos em vez de gráficos de barra
159- Linhas de grade mínimas ou nenhuma
160- Rótulos de dados diretamente em elementos (sem legendas)
161- Números oversized para métricas-chave
162
163**Inovações de Layout**:
164- Imagens full-bleed com sobreposições de texto
165- Coluna da lateral (20-30% de largura) para navegação/contexto
166- Sistemas de grade modular (blocos 3×3, 4×4)
167- Fluxo de conteúdo padrão Z ou F
168- Caixas de texto flutuante sobre formas coloridas
169- Layouts de múltiplas colunas estilo revista
170
171**Tratamentos de Fundo**:
172- Blocos de cor sólida ocupando 40-60% do slide
173- Preenchimentos de gradiente (apenas vertical ou diagonal)
174- Fundos divididos (duas cores, diagonal ou vertical)
175- Bandas de cor de borda a borda
176- Espaço negativo como elemento de design
177
178### Dicas de Layout
179**Para slides com gráficos ou tabelas:**
180- **Layout de duas colunas (PREFERIDO)**: Use um header abrangendo a largura total, depois duas colunas abaixo - texto/bullets em uma coluna e o conteúdo em destaque em outra. Isso proporciona melhor equilíbrio e torna gráficos/tabelas mais legíveis. Use flexbox com larguras de coluna desiguais (ex: divisão 40%/60%) para otimizar espaço para cada tipo de conteúdo.
181- **Layout de slide completo**: Deixe o conteúdo em destaque (gráfico/tabela) ocupar o slide inteiro para máximo impacto e legibilidade
182- **NUNCA empilhe verticalmente**: Não coloque gráficos/tabelas abaixo de texto em uma única coluna - isso causa problemas de legibilidade e layout
183
184### Workflow
1851. **OBRIGATÓRIO - LEIA ARQUIVO INTEIRO**: Leia [`html2pptx.md`](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 melhores práticas antes de prosseguir com a criação de apresentação.
1862. Crie um arquivo HTML para cada slide com dimensões apropriadas (ex: 720pt × 405pt para 16:9)
187 - Use `<p>`, `<h1>`-`<h6>`, `<ul>`, `<ol>` para todo conteúdo de texto
188 - Use `class="placeholder"` para áreas onde gráficos/tabelas serão adicionados (renderize com fundo cinza para visibilidade)
189 - **CRÍTICO**: Rasterize gradientes e ícones como imagens PNG PRIMEIRO usando Sharp, depois referencie em HTML
190 - **LAYOUT**: Para slides com gráficos/tabelas/imagens, use layout de slide completo ou layout de duas colunas para melhor legibilidade
1913. Crie e execute um arquivo JavaScript usando a biblioteca [`html2pptx.js`](scripts/html2pptx.js) para converter slides HTML em PowerPoint e salvar a apresentação
192 - Use a função `html2pptx()` para processar cada arquivo HTML
193 - Adicione gráficos e tabelas a áreas placeholder usando API PptxGenJS
194 - Salve a apresentação usando `pptx.writeFile()`
1954. **Validação visual**: Gere miniaturas e inspecione problemas de layout
196 - Crie grid de miniaturas: `python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4`
197 - Leia e examine cuidadosamente a imagem de miniatura para:
198 - **Corte de texto**: Texto sendo cortado por barras de header, formas ou bordas de slide
199 - **Sobreposição de texto**: Texto sobrepondo outro texto ou formas
200 - **Problemas de posicionamento**: Conteúdo muito perto de bordas de slide ou outros elementos
201 - **Problemas de contraste**: Contraste insuficiente entre texto e fundos
202 - Se problemas encontrados, ajuste margens/espaçamento/cores de HTML e regenere a apresentação
203 - Repita até que todos os slides estejam visualmente corretos
204
205## Editando uma apresentação do PowerPoint existente
206
207Para editar slides em uma apresentação do PowerPoint existente, trabalhe com o formato Office Open XML (OOXML) raw. Isso envolve desempacotar o arquivo .pptx, editar conteúdo XML e reempacotá-lo.
208
209### Workflow
2101. **OBRIGATÓRIO - LEIA ARQUIVO INTEIRO**: Leia [`ooxml.md`](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 estrutura OOXML e workflows de edição antes de qualquer edição de apresentação.
2112. Desempacote a apresentação: `python ooxml/scripts/unpack.py <office_file> <output_dir>`
2123. Edite os arquivos XML (principalmente `ppt/slides/slide{N}.xml` e arquivos relacionados)
2134. **CRÍTICO**: Valide imediatamente após cada edição e corrija erros de validação antes de prosseguir: `python ooxml/scripts/validate.py <dir> --original <file>`
2145. Empacote a apresentação final: `python ooxml/scripts/pack.py <input_directory> <office_file>`
215
216## Criando uma nova apresentação do PowerPoint **usando um template**
217
218Para criar uma apresentação que segue o design de um template existente, duplique e reorganize slides de template antes de substituir conteúdo placeholder.
219
220### Workflow
2211. **Extraia texto do template E crie grid de miniaturas visuais**:
222 * Extraia texto: `python -m markitdown template.pptx > template-content.md`
223 * Leia `template-content.md`: Leia o arquivo inteiro para entender os conteúdos da apresentação do template. **NUNCA defina limites de intervalo ao ler este arquivo.**
224 * Crie grids de miniaturas: `python scripts/thumbnail.py template.pptx`
225 * Veja seção [Criando Grids de Miniaturas](#criando-grids-de-miniaturas) para mais detalhes
226
2272. **Analise template e salve inventário em um arquivo**:
228 * **Análise Visual**: Revise grid de miniaturas para entender layouts de slides, padrões de design e estrutura visual
229 * Crie e salve um arquivo de inventário de template em `template-inventory.md` contendo:
230 ```markdown
231 # Análise de Inventário de Template
232 **Total de Slides: [contagem]**
233 **IMPORTANTE: Slides são 0-indexados (primeiro slide = 0, último slide = contagem-1)**
234
235 ## [Nome da Categoria]
236 - Slide 0: [Código de layout se disponível] - Descrição/propósito
237 - Slide 1: [Código de layout] - Descrição/propósito
238 - Slide 2: [Código de layout] - Descrição/propósito
239 [... CADA slide deve ser listado individualmente com seu índice ...]
240 ```
241 * **Usando grid de miniaturas**: Referencie as miniaturas visuais para identificar:
242 - Padrões de layout (slides de título, layouts de conteúdo, divisores de seção)
243 - Localizações e contagens de placeholder de imagem
244 - Consistência de design entre grupos de slides
245 - Hierarquia visual e estrutura
246 * Este arquivo de inventário é OBRIGATÓRIO para selecionar templates apropriados no próximo passo
247
2483. **Crie outline de apresentação baseado em inventário de template**:
249 * Revise templates disponíveis do passo 2.
250 * Escolha um template de intro ou título para o primeiro slide. Este deve ser um dos primeiros templates.
251 * Escolha layouts seguros, baseados em texto para os outros slides.
252 * **CRÍTICO: Combine estrutura de layout com conteúdo real**:
253 - Layouts de coluna única: Use para narrativa unificada ou tópico único
254 - Layouts de duas colunas: Use APENAS quando houver exatamente 2 itens/conceitos distintos
255 - Layouts de três colunas: Use APENAS quando houver exatamente 3 itens/conceitos distintos
256 - Layouts de imagem + texto: Use APENAS quando houver imagens reais para inserir
257 - Layouts de citação: Use APENAS para citações reais de pessoas (com atribuição), nunca para ênfase
258 - Nunca use layouts com mais placeholders que conteúdo disponível
259 - Se houver 2 itens, não force em layout de 3 colunas
260 - Se houver 4+ itens, considere quebrar em múltiplos slides ou usar formato de lista
261 * Conte as peças de conteúdo reais ANTES de selecionar o layout
262 * Verifique cada placeholder no layout escolhido será preenchido com conteúdo significativo
263 * Selecione uma opção representando o layout **melhor** para cada seção de conteúdo.
264 * Salve `outline.md` com conteúdo E mapeamento de template que aproveita designs disponíveis
265 * Exemplo de mapeamento de template:
266 ```
267 # Templates de slides a usar (indexação baseada em 0)
268 # AVISO: Verifique que índices estão no intervalo! Template com 73 slides tem índices 0-72
269 # Mapeamento: números de slide do outline -> índices de slide do template
270 template_mapping = [
271 0, # Use slide 0 (Title/Cover)
272 34, # Use slide 34 (B1: Title and body)
273 34, # Use slide 34 novamente (duplicar para segundo B1)
274 50, # Use slide 50 (E1: Quote)
275 54, # Use slide 54 (F2: Closing + Text)
276 ]
277 ```
278
2794. **Duplique, reorganize e delete slides usando `rearrange.py`**:
280 * Use o script `scripts/rearrange.py` para criar uma nova apresentação com slides na ordem desejada:
281 ```bash
282 python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52
283 ```
284 * O script lida com duplicação de slides repetidos, deletion de slides não utilizados e reordenação automaticamente
285 * Índices de slide são baseados em 0 (primeiro slide é 0, segundo é 1, etc.)
286 * O mesmo índice de slide pode aparecer múltiplas vezes para duplicar esse slide
287
2885. **Extraia TODO o texto usando o script `inventory.py`**:
289 * **Execute extração de inventário**:
290 ```bash
291 python scripts/inventory.py working.pptx text-inventory.json
292 ```
293 * **Leia text-inventory.json**: Leia o arquivo text-inventory.json inteiro para entender todas as formas e suas propriedades. **NUNCA defina limites de intervalo ao ler este arquivo.**
294
295 * A estrutura JSON de inventário:
296 ```json
297 {
298 "slide-0": {
299 "shape-0": {
300 "placeholder_type": "TITLE", // ou null para não-placeholders
301 "left": 1.5, // posição em polegadas
302 "top": 2.0,
303 "width": 7.5,
304 "height": 1.2,
305 "paragraphs": [
306 {
307 "text": "Texto do parágrafo",
308 // Propriedades opcionais (incluídas apenas quando não-padrão):
309 "bullet": true, // bullet explícito detectado
310 "level": 0, // incluído apenas quando bullet é true
311 "alignment": "CENTER", // CENTER, RIGHT (não LEFT)
312 "space_before": 10.0, // espaço antes do parágrafo em pontos
313 "space_after": 6.0, // espaço após parágrafo em pontos
314 "line_spacing": 22.4, // espaçamento de linha em pontos
315 "font_name": "Arial", // da primeira execução
316 "font_size": 14.0, // em pontos
317 "bold": true,
318 "italic": false,
319 "underline": false,
320 "color": "FF0000" // cor RGB
321 }
322 ]
323 }
324 }
325 }
326 ```
327
328 * Principais características:
329 - **Slides**: Nomeados como "slide-0", "slide-1", etc.
330 - **Formas**: Ordenadas por posição visual (topo-para-baixo, esquerda-para-direita) como "shape-0", "shape-1", etc.
331 - **Tipos de placeholder**: TITLE, CENTER_TITLE, SUBTITLE, BODY, OBJECT, ou null
332 - **Tamanho de fonte padrão**: `default_font_size` em pontos extraído de placeholders de layout (quando disponível)
333 - **Números de slide são filtrados**: Formas com tipo de placeholder SLIDE_NUMBER são automaticamente excluídas do inventário
334 - **Bullets**: Quando `bullet: true`, `level` é sempre incluído (mesmo que 0)
335 - **Espaçamento**: `space_before`, `space_after` e `line_spacing` em pontos (incluídos apenas quando definidos)
336 - **Cores**: `color` para RGB (ex: "FF0000"), `theme_color` para cores de tema (ex: "DARK_1")
337 - **Propriedades**: Apenas valores não-padrão são incluídos no output
338
3396. **Gere texto de substituição e salve os dados em um arquivo JSON**
340 Baseado no inventário de texto do passo anterior:
341 - **CRÍTICO**: Primeiro verifique quais formas existem no inventário - apenas referencie formas que estão realmente presentes
342 - **VALIDAÇÃO**: O script replace.py irá validar que todas as formas no JSON de substituição existem no inventário
343 - Se uma forma não-existente for referenciada, um erro mostrará as formas disponíveis
344 - Se um slide não-existente for referenciado, um erro indicará que o slide não existe
345 - Todos os erros de validação são mostrados de uma vez antes do script sair
346 - **IMPORTANTE**: O script replace.py usa inventory.py internamente para identificar TODAS as formas de texto
347 - **LIMPEZA AUTOMÁTICA**: TODAS as formas de texto do inventário serão limpas a menos que você forneça "paragraphs" para elas
348 - Adicione um campo "paragraphs" a formas que precisam de conteúdo (não "replacement_paragraphs")
349 - Formas sem "paragraphs" no JSON de substituição terão seu texto limpo automaticamente
350 - Parágrafos com bullets serão automaticamente alinhados à esquerda. Não defina a propriedade `alignment` quando `"bullet": true`
351 - Gere conteúdo de substituição apropriado para texto placeholder
352 - Use tamanho de forma para determinar comprimento apropriado de conteúdo
353 - **CRÍTICO**: Inclua propriedades de parágrafo do inventário original - não apenas forneça texto
354 - **IMPORTANTE**: Quando bullet: true, NÃO inclua símbolos de bullet (•, -, *) no texto - eles são adicionados automaticamente
355 - **REGRAS ESSENCIAIS DE FORMATAÇÃO**:
356 - Headers/títulos devem tipicamente ter `"bold": true`
357 - Itens de lista devem ter `"bullet": true, "level": 0` (level é necessário quando bullet é true)
358 - Preserve qualquer propriedade de alinhamento (ex: `"alignment": "CENTER"` para texto centralizado)
359 - Inclua propriedades de fonte quando diferentes do padrão (ex: `"font_size": 14.0`, `"font_name": "Lora"`)
360 - Cores: Use `"color": "FF0000"` para RGB ou `"theme_color": "DARK_1"` para cores de tema
361 - O script de substituição espera **parágrafos adequadamente formatados**, não apenas strings de texto
362 - **Formas sobrepostas**: Prefira formas com maior default_font_size ou placeholder_type mais apropriado
363 - Salve o inventário atualizado com substituições em `replacement-text.json`
364 - **AVISO**: Diferentes layouts de template têm contagens de formas diferentes - sempre verifique o inventário real antes de criar substituições
365
366 Exemplo de campo paragraphs mostrando formatação apropriada:
367 ```json
368 "paragraphs": [
369 {
370 "text": "Novo texto de título de apresentação",
371 "alignment": "CENTER",
372 "bold": true
373 },
374 {
375 "text": "Cabeçalho de Seção",
376 "bold": true
377 },
378 {
379 "text": "Primeiro ponto de bullet sem símbolo de bullet",
380 "bullet": true,
381 "level": 0
382 },
383 {
384 "text": "Texto com cor vermelha",
385 "color": "FF0000"
386 },
387 {
388 "text": "Texto com cor de tema",
389 "theme_color": "DARK_1"
390 },
391 {
392 "text": "Texto de parágrafo regular sem formatação especial"
393 }
394 ]
395 ```
396
397 **Formas não listadas no JSON de substituição são automaticamente limpas**:
398 ```json
399 {
400 "slide-0": {
401 "shape-0": {
402 "paragraphs": [...] // Esta forma obtém novo texto
403 }
404 // shape-1 e shape-2 do inventário serão limpas automaticamente
405 }
406 }
407 ```
408
409 **Padrões de formatação comuns para apresentações**:
410 - Slides de título: Texto em bold, às vezes centralizado
411 - Headers de seção dentro de slides: Texto em bold
412 - Listas de bullets: Cada item precisa `"bullet": true, "level": 0`
413 - Texto de corpo: Geralmente sem propriedades especiais
414 - Citações: Podem ter propriedades de alinhamento ou fonte especiais
415
4167. **Aplique substituições usando o script `replace.py`**
417 ```bash
418 python scripts/replace.py working.pptx replacement-text.json output.pptx
419 ```
420
421 O script irá:
422 - Primeiro extrair o inventário de TODAS as formas de texto usando funções de inventory.py
423 - Validar que todas as formas no JSON de substituição existem no inventário
424 - Limpar texto de TODAS as formas identificadas no inventário
425 - Aplicar novo texto apenas às formas com "paragraphs" defin