‹ 首页

ppt-translator

@tristan-mcinnis · 收录于 1 周前

Translate PowerPoint presentations while preserving formatting (fonts, colors, alignment, tables). Supports multiple LLM providers (OpenAI, Anthropic, DeepSeek, Grok, Gemini). Use when translating .pptx files between languages, especially for CJK to/from English translations where text expansion/contraction is a concern.

适合你,如果需要翻译PPT且保留字体、颜色、表格等格式

/ 下载安装
ppt-translator.skill双击,或拖进 Claude 桌面版 / Cowork,即完成安装↓ .skill↓ .zip
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
Claude Code~/.claude/skills/(项目级 .claude/skills/)
Codex CLI~/.codex/skills/
Cursor自动读取上面两处目录
其他工具见其文档的「skills」目录;两个下载是同一份文件,只是名字不同
/ 通过 npx 安装 校验哈希
npx oh-my-skill add tristan-mcinnis/ppt-translator-formatting-intact-with-llms/ppt-translator
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- tristan-mcinnis/ppt-translator-formatting-intact-with-llms/ppt-translator
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify tristan-mcinnis/ppt-translator-formatting-intact-with-llms/ppt-translator
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
31GitHub stars
~1.1K最小装载
~1.3K含声明引用
~6.6K文本包总量
镜像托管

怎么用

技能原文 SKILL.md作者撰写 · MIT · b61437d

PowerPoint Translation Skill

Translate PowerPoint presentations while preserving all formatting including fonts, colors, spacing, tables, and alignment.

When to Use This Skill
  • Translating .pptx files between languages
  • Batch translating multiple presentations in a directory
  • Preserving slide formatting during translation (especially CJK ↔ English)
  • When you need to inspect intermediate XML for debugging
Setup

Before first use, set up the environment:

# Navigate to the scripts directory
cd .claude/skills/ppt-translator/scripts

# Create virtual environment and install dependencies
python3 -m venv .venv
source .venv/bin/activate  # macOS/Linux
pip install -r requirements.txt

# Configure API keys
cp example.env .env
# Edit .env with your provider API key(s)
Basic Usage
cd .claude/skills/ppt-translator/scripts
source .venv/bin/activate

python main.py /path/to/presentation.pptx \
  --provider openai \
  --source-lang zh \
  --target-lang en
Provider Configuration

| Provider | Environment Variable | Default Model | |-----------|---------------------|----------------------------| | openai | OPENAI_API_KEY | gpt-5.2-2025-12-11 | | anthropic | ANTHROPIC_API_KEY | claude-sonnet-4-5-20250514 | | deepseek | DEEPSEEK_API_KEY | deepseek-chat | | grok | GROK_API_KEY | grok-4.1-fast | | gemini | GEMINI_API_KEY | gemini-3-flash-preview |

CLI Reference

| Option | Description | Default | |--------|-------------|---------| | --provider | LLM provider: openai, anthropic, deepseek, grok, gemini | openai | | --model | Override default model for provider | Provider default | | --source-lang | Source language ISO code | zh | | --target-lang | Target language ISO code | en | | --max-chunk-size | Characters per API request | 1000 | | --max-workers | Threads for slide extraction | 4 | | --keep-intermediate | Retain XML files for debugging | false |

Output Files

For each input presentation.pptx, the tool generates:

  1. presentation_original.xml - Extracted source content (deleted unless --keep-intermediate)
  2. presentation_translated.xml - Translated content (deleted unless --keep-intermediate)
  3. presentation_translated.pptx - Final translated presentation with formatting intact
Common Workflows
Translate a Single File (Chinese → English)
python main.py deck.pptx --provider anthropic --source-lang zh --target-lang en
Batch Translate a Directory
python main.py /path/to/presentations/ --provider openai --source-lang ja --target-lang en
Debug Translation Issues
python main.py deck.pptx --keep-intermediate --provider deepseek
# Inspect the generated XML files to see extracted/translated content
Use a Specific Model
python main.py deck.pptx --provider openai --model gpt-5-mini
Translate with Gemini (Cost-Effective)
python main.py deck.pptx --provider gemini --source-lang ko --target-lang en
Supported Languages

Use standard ISO 639-1 language codes:

| Code | Language | |------|----------| | zh | Chinese (Simplified) | | en | English | | ja | Japanese | | ko | Korean | | es | Spanish | | fr | French | | de | German | | pt | Portuguese | | ru | Russian | | ar | Arabic |

Design Notes
Font Scaling

The tool automatically scales fonts down (70% for text, 80% for tables) to accommodate text expansion when translating from compact languages (Chinese, Japanese, Korean) to English. This prevents text overflow in fixed-size text boxes.

Caching

Repeated strings within a presentation are cached to avoid redundant API calls. This is especially useful for presentations with recurring headers, footers, or terminology.

Chunking

Long text blocks are intelligently split at sentence boundaries to stay within API limits while preserving translation quality.

Troubleshooting
"API key not found"

Ensure your .env file in the scripts directory contains the correct environment variable:

OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
Formatting looks wrong
  1. Use --keep-intermediate to inspect the XML files
  2. Check if the source presentation has unusual formatting
  3. Try a different provider
Translation incomplete
  1. Check for API rate limits with your provider
  2. Try reducing --max-chunk-size for very long text blocks
  3. Ensure your API key has sufficient quota
Script Reference

The scripts/ directory contains:

  • main.py - Entry point
  • requirements.txt - Python dependencies
  • example.env - Environment variable template
  • ppt_translator/ - Core translation module
  • cli.py - CLI argument parsing
  • pipeline.py - PPT extraction and regeneration
  • translation.py - Chunking and caching
  • providers/ - LLM provider implementations
按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。