Communitygithub.com

JuneYaooo/gpt-image2-ppt-skills

Gere slides de PPT visualmente impressionantes via gpt-image-2 da OpenAI — use qualquer estilo em styles/<collection>/STYLE_ID.md ou imite um modelo .pptx fornecido pelo usuário; saída em PNG de alta resolução e .pptx 16:9.

O que é gpt-image2-ppt-skills?

Esta skill permite que um agente de IA transforme um roteiro em Markdown ou JSON em uma apresentação PPT completa e visualmente deslumbrante, utilizando a API de imagens gpt-image-2 da OpenAI. Ela oferece mais de 260 estilos visuais pré-definidos, organizados em coleções como 'gradient-glass', 'clean-tech-blue' e 'japanese-wabi', além da capacidade de clonar a aparência de qualquer modelo .pptx fornecido pelo usuário. A skill suporta fluxos de trabalho avançados, como a geração baseada em layouts estruturados (layout bank) e a clonagem de templates com análise de visão, garantindo alta fidelidade visual. Ideal para desenvolvedores e power users que precisam criar decks de apresentação de forma programática, ela se integra perfeitamente com agentes como Claude Code e Codex, seja via chamadas diretas à API ou usando ferramentas nativas de geração de imagem.

Funciona com✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI
npx skills add JuneYaooo/gpt-image2-ppt-skills

Perguntar na sua IA favorita

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

Documentação

gpt-image2-ppt -- Gere PPT com gpt-image-2

Transforme um roteiro em Markdown (ou slides_plan.json) + um estilo visual em slides diretamente via API oficial de imagens da OpenAI (gpt-image-2), gerando página por página e empacotando tudo em um .pptx 16:9.

Estilos Disponíveis

ID do EstiloPropostaCenários de Uso
gradient-glassApple Vision OS / Spatial GlassLançamento de produto de IA, compartilhamento técnico, propostas criativas
clean-tech-blueAzul e branco estilo Stripe / LinearRoadshow de investimento, plano de negócios, estratégia empresarial
vector-illustrationIlustração vetorial retrô + contorno pretoEducação e treinamento, história de marca, compartilhamento comunitário
editorial-monoDesign editorial Kinfolk / MonocleLançamento de marca, entrevistas culturais, compartilhamento de livros
dark-auroraNeon escuro estilo Linear / VercelProdutos de IA, ferramentas de desenvolvedor, compartilhamento técnico
risographImpressão Risografia duas cores + textura de retículaEstúdio criativo, marca cultural, zine independente
japanese-wabiWabi-sabi estilo Muji / Kenya HaraCerimônia do chá, estilo de vida, luxo, palestras culturais
swiss-gridGrade internacional Bauhaus / VignelliRelatórios acadêmicos, exposições de museu, apresentações sérias
hand-sketchSketchnote / Quadro branco desenhado à mãoWorkshops, brainstorming de produtos, treinamento
y2k-chromeMetal líquido Y2K + adesivos de borboletaStreetwear, entretenimento, colaborações de marca, marketing Geração Z
abstract-art-showcasePreto e branco minimalista, sensação de galeria de arte, fontes grandes e imagens abstratasCuradoria de arte, portfólio, apresentação de branding
coal-industry-business-company-profileMarrom industrial escuro, títulos grossos, linhas estruturais e ícones robustosEnergia, manufatura, apresentação de empresa de ativos pesados
college-candy-aesthetics-infographicsCores candy, clima universitário, infográficos arredondados e decoração leveEducação, atividades no campus, divulgação de dados leves
creative-agencyClima de agência criativa, colagem visual forte, ritmo tipográfico marcantePropostas de agência, branding, apresentações criativas
culinary-innovationInovação gastronômica, fotografia de ingredientes, blocos de cores quentes e layout de revistaMarcas gastronômicas, inovação alimentar, lançamento de menu/novo produto
data-science-consultingConsultoria de dados cinza-azulado, layout modular, gráficos e hierarquia de informações técnicasAnálise de dados, consultoria de IA, digitalização empresarial
mindfulness-in-the-classroom-breathing-techniquesPaleta suave de saúde mental, espaços em branco, blocos arredondados e ilustrações calmasSaúde mental, atividades em sala de aula, cursos de técnicas de respiração
mind-maps-workshop-professionalEstilo profissional de workshop, nós de mapa mental, estrutura de fluxo claraWorkshops de treinamento, metodologias, cocriação em equipe
meeting-agendaClima de pauta de reunião, grade limpa, agrupamento de informações forte e títulos comerciaisReuniões regulares, sincronização de projetos, relatórios à gestão
investment-company-business-planTextura de instituição de investimento, contraste claro-escuro, layout comercial sóbrioPlano de investimento, apresentação de fundo, plano de negócios
indigenous-culturesPadrões culturais, cores naturais, textura artesanal e composição narrativaCursos culturais, temas históricos, educação filantrópica
health-disparities-and-social-determinants-of-health-doctor-of-philosophy-phd-in-health-behavior-and-health-educationEstilo acadêmico de saúde pública, grade racional, paleta médica suave e hierarquia de teseDefesa de tese médica, relatório de saúde pública, pesquisa educacional
geometric-duotone-thesisGeométrico duotônico, clima de defesa de tese, formas cortadas e títulos fortesDefesa acadêmica, relatório de pesquisa, conteúdo baseado em capítulos
geometric-clinical-caseGeométrico de estilo médico atual, paleta fria, fichas de caso clínico e colunas clarasCasos clínicos, treinamento médico, relatórios de diagnóstico
geometric-businessBlocos geométricos comerciais, tom verde-azulado sólido, linguagem gráfica simplesPlano de negócios, relatório de equipe, estratégia de produto
formal-lavender-portfolioSensação formal lavanda, espaço em branco de portfólio, linhas finas elegantes e layout suavePortfólio pessoal, currículo de design, exibição profissional
floweryDecoração floral, blocos de cor suaves, layout romântico mas organizadoEstilo de vida, marca feminina, introdução de evento
first-impressionsTema de primeira impressão, forte visual de capa, relação dramática entre pessoa/títuloTreinamento de entrevista, marca pessoal, curso de comunicação
final-year-project-thesis-defenseDefesa de TCC, grade acadêmica, seções claras e páginas de dadosDefesa de graduação, conclusão de projeto, exibição de pesquisa
fashion-business-consulting-toolkit-aestheticConsultoria de moda, colagem sofisticada, layout de revista e neutrosNegócios de moda, consultoria de marca, relatório de tendências
economic-impact-of-coronavirusEstilo de relatório de impacto econômico, infográficos sérios, paleta fria e narrativa de dadosMacroeconomia, análise de políticas, relatório de risco
eco-green-business-planVerde sálvia, fotografia de materiais naturais, negócios ecológicos e tela dividida minimalistaNegócios sustentáveis, marca ecológica, estilo de vida saudável

Todos os estilos disponíveis estão em styles/ agrupados por coleção, com uso idêntico: initial/ com 10 estilos iniciais, featured/ com 22 selecionados, e xiamulingzi/ com 233 estilos fornecidos pela designer @夏目玲子. Índice completo em styles/README.md; capas dos estilos selecionados em docs/distilled-styles.md.

Diretrizes de Seleção de Estilo: Escolha o estilo mais adequado em styles/ com base no conteúdo. Para tecnologia, veja dark-aurora / gradient-glass / data-science-consulting; para negócios, clean-tech-blue / editorial-mono / eco-green-business-plan / investment-company-business-plan; para cultura e estilo de vida, japanese-wabi / vector-illustration / culinary-innovation / flowery; para acadêmico, swiss-grid / geometric-duotone-thesis / final-year-project-thesis-defense; para workshops e treinamento, hand-sketch / mind-maps-workshop-professional / mindfulness-in-the-classroom-breathing-techniques.

Receitas de Cenários (Modelos Iniciais Opcionais)

examples/ não é uma nova skill nem obrigatório em tempo de execução; é uma biblioteca de modelos iniciais para ajudar o agente a escrever a primeira versão de slides_plan.md quando o usuário fornece apenas requisitos vagos.

Regras de ativação:

  • Se o usuário já forneceu um roteiro completo / slides_plan.md completo / slides_plan.json completo, não use a receita; vá direto para o fluxo de geração com o conteúdo do usuário.
  • Se o usuário disser apenas "faça um PPT de lançamento de produto / roadshow de investimento / relatório semanal / material de curso / defesa de tese / compartilhamento de livro" e não der estrutura de páginas clara, primeiro verifique examples/ se há uma receita correspondente.
  • A receita serve apenas como referência estrutural: leia examples/<id>/recipe.md para o cenário, estilo recomendado e observações; depois use examples/<id>/slides_plan.md como modelo de estrutura de páginas, reescrevendo com o tema e conteúdo do usuário.
  • Não use produtos, empresas, projetos ou dados fictícios dos exemplos como resultado final; substitua pelas informações fornecidas pelo usuário ou marque claramente como conteúdo placeholder e aguarde confirmação do usuário.
  • Se o usuário fornecer imagens reais, logotipos, capturas de tela, gráficos de tese ou UIs de produto, siga as regras de "colagem de imagem real externa"; a receita cuida apenas da estrutura de conteúdo, não substitui o fluxo de fidelidade de assets.

Receitas atuais:

Cenário do UsuárioDiretório da ReceitaEstilo Recomendado
Lançamento de produto, novo recurso, apresentação de IAexamples/product-launch/gradient-glass
Roadshow de investimento, plano de negócios, relatório a investidoresexamples/investor-pitch/clean-tech-blue
Relatório semanal/mensal de projeto, sincronização de reuniãoexamples/weekly-report/meeting-agenda
Material de curso, treinamento, divulgação de conhecimentoexamples/courseware/vector-illustration
Defesa de tese, defesa de TCC, apresentação de conclusãoexamples/thesis-defense/final-year-project-thesis-defense
Compartilhamento de livro, entrevista cultural, compartilhamento de opiniãoexamples/book-sharing/editorial-mono

Modo de uso:

  1. Determine se a solicitação do usuário corresponde a alguma receita.
  2. Leia o recipe.md e slides_plan.md correspondentes.
  3. Crie um novo slides_plan.md baseado no tema do usuário, sem modificar o arquivo de receita original.
  4. Confirme com o usuário o número de páginas, títulos de cada página e conteúdo principal.
  5. Após confirmação do usuário, execute md_to_plan.py para converter para JSON e prossiga com o fluxo de estilo especificado ou clonagem de modelo.

Sidecar de Layout Bank para Estilos Internos (Único Formato de Execução)

Estilos internos usam uma estrutura de dois arquivos: "MD para humanos, JSON para máquina":

styles/<collection>/<style-id>.md            # Descrição do estilo, design tokens, prompts base
styles/<collection>/<style-id>.layouts.json  # Obrigatório; layout bank por página para atribuição automática de formato de página

generate_ppt.py usará o .layouts.json de mesmo nome como RuntimeProfile sem imagem de referência: assign_layouts() atribui diferentes layouts, escrevendo visual_signature / content_capacity / best_for / avoid_for / variation_tags no prompt, e registra informações resumidas do layout escolhido em metadata.json.

Atualmente, todos os styles/**/*.md devem ter um .layouts.json correspondente no mesmo diretório e com o mesmo nome. Estilos antigos que possuem apenas Markdown sem sidecar causarão erro antes da geração de imagem, sem cair silenciosamente no prompt antigo; migre-os para o formato pareado primeiro. Ao destilar modelos públicos ou adicionar novos estilos internos, produza o sidecar JSON simultaneamente; não comprima o layout de várias páginas em apenas um parágrafo de texto "sistema de layout" no MD.

Kernel de Execução RuntimeProfile Unificado

Tanto a clonagem de modelo estrita quanto o sidecar de estilo estruturado são compilados no mesmo RuntimeProfile, passando por assign_layouts(), anexação de perfil de página, compilação de prompt e registro de metadados. O adaptador de entrada mantém apenas as diferenças necessárias:

  • template-clone: vem de --template-profile ou análise de visão do modelo; o layout pode carregar reference_image, e apenas --template-strict realmente a envia para geração.
  • distilled-style: vem de <style>.md + <style>.layouts.json; usa roteamento de conteúdo e múltiplos layouts, sem depender de imagens de modelo.

O RuntimeProfile registra source_kind, prompt_strategy=layout-fields fixo, layouts e capabilities (routing / evidence / reference / portability). A prioridade é fixa: perfil de modelo válido > RuntimeProfile de estilo; se a análise de modelo não tiver layouts, deve realmente cair para o estilo estruturado, não apenas exibir um aviso. O runtime não inclui mais ramificações legacy-freeform ou layout sintético.

Modo de Clonagem de Modelo

Forneça um modelo .pptx diretamente para a skill e todas as páginas subsequentes imitarão este modelo.

# Uma linha: renderização automática + análise de modelo + geração de imagens. Requer backend de renderização PPTX disponível
python3 scripts/generate_ppt.py \
  --plan slides_plan.json \
  --template-pptx ./company-template.pptx \
  --template-strict

--template-strict significa que cada página usará a página correspondente do modelo como referência de imagem para o gpt-image-2, com a melhor fidelidade.

Renderização de Modelo: Não Precisa de PowerPoint Instalado

A skill inclui render_template.py, que renderiza automaticamente o .pptx em PNGs por página, salvando em <cwd>/template_renders/<stem>/page-NN.png.

Verificação Prévia do Agente (Obrigatória para Clonagem de Modelo)

Antes de executar qualquer comando --template-pptx, você DEVE verificar se o sistema possui um backend de renderização PPTX disponível.

Método de verificação:

  • Melhor: Execute python3 scripts/render_template.py --check no diretório da skill. Ele verificará se o backend é realmente executável, não apenas se o caminho existe.
  • macOS: Verifique primeiro /Applications/Keynote.app e se o AppleScript pode ser executado; caso contrário, verifique libreoffice --version || soffice --version.
  • Windows: Verifique primeiro se o PowerPoint COM pode ser iniciado; caso contrário, verifique libreoffice --version / soffice --version.
  • Linux / camada de compatibilidade: Verifique libreoffice --version || soffice --version, não use apenas which.

Nota: Ambientes Harmony / Termux / contêiner / arquitetura especial podem parecer Linux, mas não assuma que binários Linux aarch64 do LibreOffice funcionam; confie apenas no resultado real da execução de render_template.py --check ou soffice --version. Não use aspose-slides como fallback padrão, pois não possui wheels instaláveis em muitos ambientes Python móveis/especiais.

Se nenhum backend estiver disponível, informe ao usuário que a renderização de modelo requer a instalação de um LibreOffice executável, ou que ele pode exportar manualmente cada página do modelo como page-01.png, page-02.png no desktop e passá-las via --template-images. Comandos de instalação opcionais:

PlataformaComando de Instalação
Windowswinget install LibreOffice.LibreOffice
macOSbrew install --cask libreoffice
Linux (Debian/Ubuntu)sudo apt-get install -y libreoffice
Linux (Fedora/RHEL)sudo dnf install -y libreoffice
Linux (Arch)sudo pacman -S --noconfirm libreoffice-fresh

Após a instalação, verifique novamente para confirmar a existência de um backend de renderização funcional antes de continuar.

Nota: No Windows, winget é nativo do Win10/11, mas exibirá uma caixa de confirmação UAC que requer ação do usuário; no macOS, brew requer o Homebrew instalado.

O render_template.py seleciona o backend de renderização automaticamente por prioridade:

  1. Windows: PowerPoint COM (prioridade se o Office estiver instalado, gera PNG direto, pula etapa PDF) > LibreOffice
  2. macOS: Keynote AppleScript (prioridade se o Keynote estiver instalado, gera PNG direto) > LibreOffice
  3. Linux / camada de compatibilidade: Comando LibreOffice / soffice confirmado como executável via --version
  4. PDF -> PNG via pymupdf (já em requirements); se não instalado, use pdf2image + poppler

Ao executar generate_ppt.py --template-pptx ... omitindo --template-images, a renderização será chamada automaticamente; também pode ser executada manualmente primeiro:

python3 scripts/render_template.py company-template.pptx
# -> <cwd>/template_renders/company_template/page-01.png ... page-NN.png

Cache de Dois Níveis para Imitação de Modelo

RecursoCaminhoUso
PNGs de cada página do modelo<cwd>/template_renders/<stem>/page-NN.pngReutilização de renderização única pelo backend local
Análise de estilo do modelo<cwd>/template_cache/<sha256>.json ou template_profile.json manualGerado por agente multimodal ao visualizar imagens; agente de texto puro precisa de visão externa
Artefatos gerados<cwd>/outputs/<timestamp>/Novo diretório a cada execução

Todos estão sob o cwd do chamador, naturalmente alinhados com o projeto; recomenda-se adicionar template_renders/, template_cache/, outputs/ ao .gitignore do projeto.

Análise de modelo por imagem (deixe o agente decidir se precisa configurar VISION_*) :

  • Se o agente de código atual for multimodal (ex.: Claude multimodal do Claude Code, GPT multimodal do Codex): Sem configuração adicional de VISION_*. O agente lê diretamente template_renders/<stem>/page-*.png e gera template_profile.json conforme a estrutura TemplateProfile do template_analyzer.py, passando --template-profile template_profile.json para generate_ppt.py. Se usar --template-strict, cada layout deve incluir reference_image (caminho absoluto ou acessível do PNG do modelo).
  • Se o agente de código atual for de texto puro (ex.: apenas modelo de texto DeepSeek): Ele não consegue ver capturas de tela do modelo; precisa configurar VISION_BASE_URL / VISION_API_KEY / VISION_MODEL_NAME para que template_analyzer.py chame um endpoint multimodal compatível com OpenAI separado para análise do modelo.

A análise de visão e a geração de imagem pelo gpt-image-2 são sempre desacopladas — trocar o provedor de visão não afeta o pipeline de geração de imagem.

Instalação

git clone [email protected]:JuneYaooo/gpt-image2-ppt-skills.git
cd gpt-image2-ppt-skills
bash install_as_skill.sh --target claude   # Claude Code
# ou
bash install_as_skill.sh --target codex    # Codex
# Chaves necessárias para conexão direta à API devem ser injetadas via configuração do agente / variáveis de ambiente do sistema

Injeção de Variáveis de Ambiente (Conexão Direta à API)

Não escreva as chaves desta skill no .env da raiz do projeto de negócios do chamador, nem leia o .env genérico do projeto do usuário apenas para gerar imagens. Variáveis de ambiente devem ser injetadas da maneira padrão do framework do agente:

  • Geral / CI / Servidor: Use variáveis de ambiente do sistema, Docker Compose environment / env_file, Kubernetes Secret, CI Secret, etc.
  • Claude Code: Use ~/.claude/settings.json do usuário ou .claude/settings.local.json do projeto para injetar variáveis de ambiente; variáveis de ambiente da linha de comando têm a maior prioridade.
  • OpenClaw / Agente Personalizado: Use apiKey / env reference na configuração do framework para referenciar variáveis de ambiente do sistema, evitando colocar chaves em texto claro na configuração do projeto.
  • Fallback CLI standalone local: Pode configurar GPT_IMAGE2_PPT_ENV=/path/to/private.env ou usar o .env no diretório de instalação da skill; isso é apenas um fallback, não o .env do projeto de negócios.

Conexão direta à API requer estas variáveis:

OPENAI_BASE_URL=https://api.openai.com    # Ou qualquer relay compatível com OpenAI
OPENAI_API_KEY=sk-...
GPT_IMAGE_MODEL_NAME=gpt-image-2
GPT_IMAGE_QUALITY=high                     # low / medium / high / auto

# Opcional: backend de análise de visão para modo de clonagem de modelo.
# Agentes multimodais / Codex nativo podem analisar as imagens sozinhos para gerar --template-profile, sem precisar do grupo abaixo.
# Apenas agentes de texto puro (ex.: modelo de texto DeepSeek) precisam do grupo abaixo.
# Sem endpoint padrão embutido; preencha com um serviço de sua confiança, ou não preencha.
# VISION_BASE_URL=https://your-openai-compatible-relay.example.com/v1
# VISION_API_KEY=sk-...
# VISION_MODEL_NAME=gemini-3.1-pro-preview   # Ou qualquer SKU multimodal como gpt-4o / claude-3.5-sonnet

A ordem de prioridade de configuração é fixa: variáveis de ambiente do processo atual > variáveis gpt-image2-ppt_* injetadas pela plataforma > GPT_IMAGE2_PPT_ENV / .env no diretório da skill; JULING_GPT_IMAGE2_* serve apenas como fallback de compatibilidade quando não há configuração OPENAI_* correspondente, sem substituir configurações explícitas.

Aviso de Segurança: O script lê apenas as variáveis de ambiente do processo atual, variáveis gpt-image2-ppt_* injetadas pela plataforma, GPT_IMAGE2_PPT_ENV explícito e o .env fallback no diretório de instalação da skill. O script não lerá recursivamente para cima o .env no diretório do projeto do chamador, evitando consumir acidentalmente chaves do projeto de negócios. python3 scripts/render_template.py --check executará uma conversão real mínima para validar o backend de renderização.

Se Você é o Agente Codex (Geração de Imagem Nativa — Recomendado)

Se você mesmo é o Codex (o agente executando esta skill é o Codex CLI / Codex TUI) e o ambiente atual fornece a ferramenta image_generation e estado de login ChatGPT, não use generate_ppt.py ou --backend codex para gerar imagens. Use a ferramenta nativa para gerar as imagens e reutilize apenas a lógica de conversão MD / empacotamento PPTX deste repositório.

Limite crítico: Scripts Python são executados em subprocessos e não têm acesso à ferramenta nativa da sessão do agente atual. generate_ppt.py --backend codex só pode iniciar outro subprocesso codex exec para que outro Codex gere as imagens; não é "reutilizar a ferramenta image_generation do Codex atual". Portanto, quando o agente atual já pode gerar imagens nativamente, a ação de geração deve ser realizada pelo próprio agente, não delegada ao generate_ppt.py.

Como Determinar

Você pode acessar a ferramenta image_generation e não precisa configurar OPENAI_API_KEY manualmente para gerar imagens — se ambas as condições forem satisfeitas, siga o caminho nativo. Se a sessão Codex atual não tiver esta ferramenta, trate como agente normal: use conexão direta à API, backend alternativo --backend codex ou peça ao usuário para configurar o ambiente.

Fluxo de Geração (Caminho Nativo do Codex)

1. Preparar dados dos slides

Se ainda não houver slides_plan.json, primeiro siga os passos 2-3 do "Fluxo de Geração" abaixo para escrever slides_plan.md → python3 scripts/md_to_plan.py ... para converter para JSON.

2. Preparar prompt com runtime unificado

Não recrie generate_prompt() manualmente. Execute --prepare-only para que a conexão direta à API e o caminho nativo do Codex compartilhem o mesmo RuntimeProfile, roteamento de layout e compilador de prompt:

python3 scripts/generate_ppt.py \
  --plan slides_plan.json \
  --style styles/<collection>/<id>.md \
  --prepare-only \
  --output outputs/<timestamp>

Este comando não chama a API de imagens nem empacota PPTX; ele gera prompts.json, prompts de texto por página e metadata.json. Para testar uma única página, use --slides 1 simultaneamente.

3. Ler resultados compilados de cada página

Leia prompt, reference_image, asset_reference_image e layout_id de cada página em outputs/<timestamp>/prompts.json. Não remonte um Prompt com base no Markdown, pois isso ignoraria o layout bank estruturado.

4. Chamar ferramenta image_generation para gerar imagens

Para cada página, chame sua ferramenta image_generation:

  • prompt: O prompt completo já compilado para aquela página em prompts.json
  • output_format: png
  • Se reference_image / asset_reference_image estiver registrado, passe-os como referência de imagem na ordem original
  • Salve a imagem retornada em outputs/<timestamp>/images/slide-NN.png (NN é o número da página com dois dígitos)

Pode ser concorrente (máx. 4 concorrências recomendado para evitar rate limiting).

5. Empacotar PPTX

Se este deck não tiver objetos de imagem real externos, pode usar o empacotamento simples de PNG de página inteira abaixo. Se qualquer página tiver external_image / image_overlay / external_image_placeholder apontando para uma imagem real, não use este trecho de empacotamento simples, caso contrário a imagem real será mesclada no PNG de fundo da página inteira, e o usuário não poderá selecioná-la e movê-la individualmente no PowerPoint. Neste caso, use a lógica de empacotamento padrão do generate_ppt.py ou chame generate_pptx(..., metadata=metadata) em uma sessão existente, para que a imagem real seja colocada como objeto de imagem independente sobre o fundo.

python3 -c "
from pptx import Presentation
from pptx.util import Inches
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
import os, glob
for p in sorted(glob.glob('outputs/<timestamp>/images/slide-*.png')):
    slide = prs.slides.add_slide(blank)
    slide.shapes.add_picture(p, 0, 0, width=prs.slide_width, height=prs.slide_height)
prs.save('outputs/<timestamp>/<title>.pptx')
print('done')
"

A estrutura correta do PPTX para páginas com imagem real externa deve ser:

  • Camada 1: images/slide-XX.png como imagem de fundo da página inteira (contém o fundo e o texto gerados pelo modelo).
  • Camada 2: A imagem real apontada por source como objeto de imagem PPT independente, posicionada sobre o fundo conforme as coordenadas em slide_spec, podendo ser selecionada, movida e redimensionada no PowerPoint.

Modo de Clonagem de Modelo (Caminho Nativo do Codex)

Você mesmo é um agente multimodal — Read diretamente os PNGs de cada página do modelo para extrair o estilo visual, escreva template_profile.json (schema: TemplateProfile em template_analyzer.py, cada layout com reference_image), e use --template-profile template_profile.json --template-strict --prepare-only para compilar os prompts e referências de cada página; não escolha manualmente outra lógica de montagem de prompt.

Não precisa configurar VISION_* — você é a visão.

Diferença do --backend codex Abaixo

Caminho Nativo (esta seção)--backend codex
Cenário de usoVocê é o agente CodexVocê é Claude Code / outro agente, usando o codex CLI local
Método de chamadaChame a ferramenta image_generation diretamenteInicie subprocesso codex exec --full-auto
Camadas de geração1 (a própria ferramenta nativa do agente)2 (seu agente → subprocesso codex → API de imagem)
Controle de qualidade de imagemConfie na ferramenta nativaUse --quality e size passados ao subprocesso
Necessidade de OPENAI_API_KEYNãoSim (ou ambiente do codex já configurado)
Depuração de promptVia --prepare-only e leitura de prompts.jsonDifícil de inspecionar

Fluxo de Geração (Conexão Direta à API, Caminho Padrão)

Use esta seção quando seu agente não for Codex (ex.: Claude Code, Cursor, agente personalizado) ou quando não houver ferramenta de geração de imagem nativa.

Etapas

  1. Receber requisição do usuário → identificar cenário e estrutura do conteúdo

  2. Criar slides_plan.md (se ainda não existir):

    Estrutura:

    # Título da Apresentação
    ## Slide 1: Título do Slide 1
    - Ponto principal 1
    - Ponto principal 2
    ## Slide 2: Título do Slide 2
    - Conteúdo...
    
  3. Converter para slides_plan.json (usando script embutido):

    python3 scripts/md_to_plan.py slides_plan.md -o slides_plan.json
    
  4. Selecionar estilo (seguindo as diretrizes acima); se o usuário não especificar um, recomende um adequado.

  5. Executar geração:

    python3 scripts/generate_ppt.py \
      --plan slides_plan.json \
      --style styles/<collection>/<id>.md \
      --quality high \
      --output outputs/meu_deck
    

    Opcional: modo silencioso (--silent) para suprimir saída detalhada; ideal para CI.

  6. Resultado: outputs/meu_deck/slide-01.png ... slide-NN.png + outputs/meu_deck/apresentacao.pptx

Parâmetros

ParâmetroObrigatórioPadrãoDescrição
--planSim-Caminho para slides_plan.json
--styleSim (se não for clonagem de modelo)-Caminho para o arquivo .md do estilo
--template-pptxNão-Caminho para modelo .pptx (modo clonagem)
--template-strictNão-Usar imagem de referência para cada página
--template-profileNão-Caminho para template_profile.json (análise de estilo)
--qualityNãohighQualidade da imagem: low / medium / high / auto
--outputNãooutputs/Diretório de saída
--slidesNão-Intervalo de páginas para gerar (ex.: 1-3 ou 1,3,5)
--prepare-onlyNão-Apenas compilar prompts, sem gerar imagens ou PPTX
--silentNão-Modo silencioso
--backendNãoautoForçar backend: auto / openai / codex

Observações

  • A skill não suporta legacy-freeform ou layout sintético; todas as gerações usam o layout bank estruturado.
  • Para apresentações com dados confidenciais, recomenda-se processamento local (nenhum dado é enviado para servidores externos além da API da OpenAI).
  • A skill suporta retry automático em caso de falha de geração (máx. 3 tentativas).
  • A pasta outputs/ é criada no diretório de trabalho atual (cwd), não no diretório da skill.

Estrutura do Projeto

gpt-image2-ppt-skills/
├── SKILL.md                    # Este arquivo
├── install_as_skill.sh         # Script de instalação
├── scripts/
│   ├── generate_ppt.py         # Script principal de geração
│   ├── md_to_plan.py           # Conversor de Markdown para JSON
│   ├── render_template.py      # Renderização de modelo PPTX para PNG
│   └── template_analyzer.py    # Análise de estilo de template
├── styles/
│   ├── README.md               # Índice de estilos
│   ├── initial/                # 10 estilos iniciais
│   ├── featured/               # 22 estilos selecionados
│   └── xiamulingzi/            # 233 estilos de @夏目玲子
├── examples/                   # Receitas de cenários (modelos iniciais)
├── docs/
│   └── distilled-styles.md     # Capas de estilos selecionados
├── requirements.txt            # Dependências Python
└── .gitignore

Dependências

  • Python 3.10+
  • OpenAI Python SDK (>=1.0.0) — para chamadas à API de imagem
  • python-pptx — para criar arquivos .pptx
  • pymupdf ou pdf2image + poppler — para conversão PDF para PNG (renderização de modelo)
  • (Opcional) LibreOffice / Keynote / PowerPoint — para renderização local de modelo

Instalação:

pip install -r requirements.txt

Suporte e Contribuição

  • Issues e sugestões: GitHub Issues
  • Contribuições: Pull requests são bem-vindos!
  • Estilos: Envie estilos personalizados via PR, seguindo o formato de sidecar duplo (.md + .layouts.json).

Licença

MIT

Habilidades Relacionadas