Este projeto gera apresentacoes do PowerPoint (.pptx) usando Python e a biblioteca python-pptx, lendo o conteudo dos slides a partir de um arquivo Markdown.
- Cria slides programaticamente com layout personalizado
- Aplica estilos visuais (cores, fontes, alinhamento e caixas de texto)
- Le conteudo de slides a partir de
slides.md - Suporta layouts
comparativoeconceitos
- Python 3.9+
- Biblioteca
python-pptx
python -m venv .venv
source .venv/bin/activate
pip install python-pptxExecutar com arquivos padrao:
python criar_slides_agentic_ai.pyExecutar com arquivos customizados:
python criar_slides_agentic_ai.py --input slides.md --output Slides_Agentic_AI.pptxExecutar com modo premium (perfil + tema externo):
python criar_slides_agentic_ai.py \
--input aula2b.md \
--output aula2b.pptx \
--profile premium \
--theme theme.premium.jsonExecutar com modo max (layout inspirado no modelo visual):
python criar_slides_agentic_ai.py \
--input aula2b.md \
--output aula2b-max.pptx \
--profile max \
--theme theme.max.jsonCada slide deve seguir este contrato:
- Inicio do slide com
# Titulo do Slide - Separacao entre slides com
--- - Subtitulo opcional com
> texto - Layout obrigatorio com
layout: comparativooulayout: conceitos - Blocos de lista:
- Cabecalho
## lista: Titulo da lista - Itens
- item 1
- Cabecalho
- Blocos de conceito:
- Cabecalho
## conceito: Titulo do conceito - Descricao em uma ou mais linhas de texto abaixo
- Cabecalho
Exemplo:
# TITULO DO SLIDE
> Subtitulo opcional
layout: comparativo
## lista: Bloco 1
- Item A
- Item B
## lista: Bloco 2
- Item C
---
# OUTRO SLIDE
layout: conceitos
## conceito: ESTADO
Descricao do conceito.
## conceito: OBJETIVO
Descricao do conceito.O script permite configurar tipografia, cores, tamanho do slide, espacamento e regras de parsing via arquivo JSON.
- Arquivo de exemplo:
theme.premium.json - Arquivos de exemplo:
theme.premium.jsonetheme.max.json - Perfis embutidos:
--profile premiume--profile max - O arquivo de tema sobrescreve os defaults e permite usar fontes instaladas no macOS (ex.:
Gotham HTF,Roboto)
Campos principais do tema:
slide: dimensoes do slide (width_in,height_in)fonts: familias e tamanhos basecolors: paleta do slidelayout: margens, espacamentos e posicionamentoparsing: regras comostrip_page_prefixeignore_sections
Layouts extras do perfil max:
title_left_text_righttitle_top_bulletstitle_top_grid_2x2title_top_text_block
Knobs especificos do perfil max (em theme.max.json):
title.force_uppercase: forca titulo em maiusculotitle.accent_words: palavras/frases que vao para a linha de destaque (magenta)max.title: composicao do titulo (box_height_in,line_spacing,prefer_two_lines,first_line_max_chars)max.body: ritmo tipografico (line_spacing_text,line_spacing_bullets,space_before_bullet_pt)max.density: limites de conteudo por layout (blocos, bullets, cards e palavras maximas)max.layouts.title_left_text_right: geometria e tamanho do bloco de texto lateralmax.layouts.title_top_bullets: altura/espacamento de blocos e tamanhos de heading/bulletmax.layouts.title_top_grid_2x2: altura de linha, tamanhos de header/titulo/textomax.layouts.title_top_text_block: largura, offset e altura do bloco corridomax.background: fundo por imagem no postech (image_path,apply_after_first_slide,cover_first_slide_with_image)
Exemplo de fundo no max (capa sem imagem e demais slides com imagem):
"max": {
"background": {
"image_path": "bg-default.png",
"apply_after_first_slide": true,
"cover_first_slide_with_image": false
}
}O script falha com mensagem clara quando encontra:
- Slide sem titulo iniciado por
# - Slide sem
layout:quando nao for possivel inferir - Layout invalido (diferente de
comparativoouconceitos) ## lista:sem itens- ...## conceito:sem descricao- Arquivo sem nenhum slide valido
criar_slides_agentic_ai.py: parser Markdown + renderizacao dos slidesslides.md: arquivo de entrada com o conteudo da apresentacaotheme.premium.json: exemplo de tema para modo premiumtheme.max.json: tema para modo max inspirado no layout de referencia
Os arquivos .pptx gerados nao sao versionados neste repositorio.