Translate an entire PowerPoint into the language you need — no reformatting required. Upload your PPT, pick a target language, and get an editable, localized version in minutes with the original layout, colors, images, and charts fully intact. Perfect for multilingual pitches, cross-border reports, and global collaboration. Supports dozens of languages including Chinese, English, Japanese, Korean, French, and German — one file per translation, every slide accurately preserved, and ready to edit in PowerPoint, Google Slides, or Keynote.
npx skills add https://github.com/surgepix/agent-skills --skill surgepix-ppt-translateTranslate all text content in a PowerPoint (.pptx) file into a target language via the platform API, while preserving the original layout, images, and design elements, and return a download link to the translated file.
| Action | Description |
|---|---|
| Translate a PPT | Pass a local PPTX file or URL; the script uploads automatically and completes the translation in one step |
| Check task status | When run with --nowait true, look up via taskId using surgepix-query-task |
| Download result | Retrieve the download URL (single image URL or ZIP for multiple) |
By default ( --nowait false) the API waits for completion and returns the final download link directly.Pass --nowait true to get a taskId immediately; then check progress via the surgepix-query-task skill. | |
Step 0: Check environment (required)
Before running, verify config:
node "<skills-dir>/surgepix-setup/scripts/check_env.mjs"
.env following the surgepix-setup skill, then retryStep 1: Gather inputs
en if not specified. Common codes: en, zh, ja, ko, fr, de, es, pt, ru, ar../slides.pptx)sessionId from the previous output when retrying; omit on the first run — the platform auto-creates a new session.PPTX (.pptx)Step 2: Run ppt-translate
node "<skills-dir>/surgepix-translate-ppt/scripts/translate_ppt.mjs" \ "<file-path-or-URL>" \ [--language <code>] \ [--session-id <id>] \ [--nowait <true|false>]
| Flag | Description |
|---|---|
<file-path-or-URL> | A local path or PPTX URL (required) |
--language <code> | Target language code, e.g. zh / en / jp ; default en |
--session-id <id> | Session ID; pass the sessionId (number type) from a previous run to iterate |
--nowait <true|false> | Wait mode, default false (see below) |
--file prefix needed. The script uploads local files automatically.--nowait false): the API waits for completion and returns the final download link.--nowait true: returns taskId immediately; then query with surgepix-query-task.Step 3: Parse output
Sync success (--nowait false, stdout):
{"ok":true,"taskId":"task_xxx","sessionId":123,"progress":"succeeded","download":"https://...images.zip","resultType...":4,"resultType":"zip","note":"API 仅返回 ZIP 下载地址,不含单张图片 URL;禁止编造单张链接"}
Async submitted (--nowait true, stdout) — resolve later with the surgepix-query-task skill:
{"ok":true,"async":true,"taskId":"task_xxx","sessionId":123,"progress":"processing","download":null,"resultType":"..."}
Failure (stderr):
{"ok":false,"error":"..."}
Step 4: Present result
download URL from script output. Always show sessionId (note: it is a number type, e.g. 123 ) so the user can pass it in a retry if needed.error field. Common causes:unsupported_file_format — file format not supportedfile_too_large — file exceeds 50MBinvalid_language_code — invalid target language codeCreate & Edit Visuals with AI
© 2026 SurgePix. All rights reserved. Made with ❤️ for productivity.