360 Secure SkillHub
360 安全技能中心

PPT生成器

面向 PPTX 的本地化技能:可从模板或从零生成演示文稿,解包修改幻灯片后重新打包,提取文本并用 LibreOffice/Poppler 生成缩略图做视觉检查;依赖 Python、Node、LibreOffice 和 Poppler,主要针对 WorkBuddy 环境。

yinfeihaaaaaaaaaaa
yinfeihaaaaaaaaaaa
热度 16.02
最近更新 2026-05-26 09:51:54
分类:创作依赖:代码执行 / 读写文件应用场景:演示设计 / 模板 / 文件转换 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add pptx-localized
Metadata
name
pptx
slug
pptx-localized
version
1.0.0
author
yinfeihaaaaaaaaaaa
license
MIT-0
description
Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file; editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions 'deck,' 'slides,' 'presentation,' or references a .pptx filename. If a .pptx file needs to be opened, created, or touched, use this skill.
triggers
["pptx","powerpoint","presentation","deck","slides","pitch deck"]

PPTX Skill (Localized for WorkBuddy)

Original: anthropics/skills Localized for WorkBuddy by 非宜

Quick Reference

Task Guide
Read/analyze content python -m markitdown presentation.pptx
Edit or create from template Read editing.md
Create from scratch Read pptxgenjs.md

Reading Content

# Text extraction
python -m markitdown presentation.pptx

# Visual overview (requires LibreOffice + Poppler)
python scripts/thumbnail.py presentation.pptx

# Raw XML
python scripts/office/unpack.py presentation.pptx unpacked/

Editing Workflow

Read editing.md for full details.

  1. Analyze template with thumbnail.py
  2. Unpack → manipulate slides → edit content → clean → pack

Creating from Scratch

Read pptxgenjs.md for full details.

Use when no template or reference presentation is available. Uses pptxgenjs (Node.js) to programmatically generate .pptx files.


Design Ideas

Don't create boring slides. Plain bullets on a white background won't impress anyone. Consider ideas from this list for each slide.

Before Starting

  • Pick a bold, content-informed color palette: The palette should feel designed for THIS topic.
  • Dominance over equality: One color should dominate (60-70% visual weight), with 1-2 supporting tones and one sharp accent.
  • Dark/light contrast: Dark backgrounds for title + conclusion slides, light for content. Or commit to dark throughout for a premium feel.
  • Commit to a visual motif: Pick ONE distinctive element and repeat it.

Color Palettes

Theme Primary Secondary Accent
Midnight Executive 1E2761 (navy) CADCFC (ice blue) FFFFFF (white)
Forest & Moss 2C5F2D (forest) 97BC62 (moss) F5F5F5 (cream)
Coral Energy F96167 (coral) F9E795 (gold) 2F3C7E (navy)
Warm Terracotta B85042 (terracotta) E7E8D1 (sand) A7BEAE (sage)
Ocean Gradient 065A82 (deep blue) 1C7293 (teal) 21295C (midnight)
Charcoal Minimal 36454F (charcoal) F2F2F2 (off-white) 212121 (black)

Typography

Header Font Body Font
Georgia Calibri
Arial Black Arial
Calibri Calibri Light
Cambria Calibri
Trebuchet MS Calibri
Element Size
Slide title 36-44pt bold
Section header 20-24pt bold
Body text 14-16pt
Captions 10-12pt muted

Avoid (Common Mistakes)

  • Don't repeat the same layout across slides
  • Don't center body text — left-align paragraphs and lists; center only titles
  • Don't default to blue — pick colors that reflect the specific topic
  • Don't create text-only slides — add images, icons, charts, or visual elements
  • NEVER use accent lines under titles — use whitespace or background color instead

QA (Required)

Assume there are problems. Your job is to find them.

Content QA

python -m markitdown output.pptx

Check for missing content, typos, wrong order.

When using templates, check for leftover placeholder text:

python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout"

Visual QA

Convert slides to images, then inspect visually:

# Convert to PDF first (requires LibreOffice)
python scripts/office/soffice.py --headless --convert-to pdf output.pptx

# Convert PDF to JPEG images (requires Poppler - pdftoppm)
pdftoppm -jpeg -r 150 output.pdf slide

This creates slide-01.jpg, slide-02.jpg, etc.


Dependencies

Install these once (managed under ~/.workbuddy/binaries/):

# Python: text extraction
pip install "markitdown[pptx]" Pillow defusedxml

# Node.js: create presentations from scratch
npm install -g pptxgenjs

# Optional (for visual QA):
# - LibreOffice (soffice) for PDF conversion
# - Poppler (pdftoppm) for PDF-to-image conversion

Windows Note: soffice.py in this localized version skips the AF_UNIX socket shim (Linux-only). It simply runs soffice directly via subprocess.run. Make sure LibreOffice is installed and soffice is in your PATH, or set the SOFFICE_PATH environment variable to the full path of soffice.exe.


Localization Notes (vs. upstream)

  1. scripts/office/soffice.py — Removed AF_UNIX / LD_PRELOAD shim logic. Windows never blocks AF_UNIX, so the script just delegates to soffice directly.
  2. scripts/office/unpack.py / pack.py — Use defusedxml.minidom (same as upstream). No changes needed.
  3. Node.js path — Use the managed Node path: C:\Users\Administrator\.workbuddy\binaries\node\versions\node-v20.18.0-win-x64\node.exe and the managed npm global prefix for pptxgenjs.
  4. pdftoppm — On Windows, install Poppler for Windows or use png output from LibreOffice directly as a fallback.

Scripts Overview

Script Purpose
scripts/office/unpack.py Extract and pretty-print PPTX
scripts/add_slide.py Duplicate slide or create from layout
scripts/clean.py Remove orphaned files
scripts/office/pack.py Repack with validation
scripts/thumbnail.py Create visual grid of slides
scripts/office/soffice.py Run LibreOffice (Windows-compatible)