Skill detail

pptx-import

会话里有上传的 .pptx,且用户要把这份幻灯片填进一节已建的课(先 create_stage 建课,再 import_pptx 把页面追加进这节课堂,保留原版排版;课堂标题以 create_stage 为准,PPT 不接管)。随后逐页检查(有 render_scene_preview 就渲染看)并修 bad case,理解整课之后才写旁白/spotlight,最后 TTS。仅在用户要求时插入 quiz 或 interactive。不要重新规划整课。

Why we recommend it: Imports uploaded .pptx slides into an existing course stage, preserving layout, then inspects and repairs pages before writing narration.

MatchPossibleRecommended for PowerPoint
SourceTHU-MAIC/​OpenMAICExternal source
Reported installsNot reportedPopularity signal only

Inspect before use

Read the source instructions and check the requirements before you install this skill.

Saved source preview

SKILL.md

The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.

---
name: pptx-import
title: 'PPT 导入'
description: 会话里有上传的 .pptx,且用户要把这份幻灯片填进一节已建的课(先 create_stage 建课,再 import_pptx 把页面追加进这节课堂,保留原版排版;课堂标题以 create_stage 为准,PPT 不接管)。随后逐页检查(有 render_scene_preview 就渲染看)并修 bad case,理解整课之后才写旁白/spotlight,最后 TTS。仅在用户要求时插入 quiz 或 interactive。不要重新规划整课。
---

# PPT import as appended pages of a stage

Fill an uploaded PowerPoint's slides INTO the stage the user created with
`create_stage`: the slides become appended pages (or pages inserted at
`atOrder`), keeping the original layout. The stage keeps its own title and its
existing pages — the PPT is content, not the classroom's identity. Import,
**inspect and repair the pages**, **understand the course**, then write
classroom actions. Do not skip from import to TTS.

The learner-facing name is 「PPT 导入成课」. Never say "clone", "style
transfer", or "rewrite from the PPT".

Do **not** replan the imported deck. Do **not** call `generate_scene` on an
imported slide — that rebuilds the page and throws the original layout away.

## Order (do not rearrange)

1. `create_stage` for the classroom, then import the deck into it.
2. Roster.
3. Inspect every page (read, and render when the tool exists). Load
   `pro-editing` to fix visual bad cases. **Do not patch `/actions` yet.**
4. From that inspection, form a course reading (what it teaches, page roles,
   flow). Then write actions page by page.
5. `generate_tts`.
6. Quiz / interactive only if the user asked.

## Step 1 — create the stage, then import the deck

1. `create_stage` with the classroom's own title and brief. The stage — not the
   PPT — is the classroom: import never changes its title.
2. `list_materials`. Find the source `.pptx` (`mat_` id, mime or filename).
3. If several PowerPoints are attached, ask which one, unless the user already
   named it.
4. Call `import_pptx` with that source `mat_` id and the `stageId` from
   `create_stage`. Pages append after the existing ones, numbered
   consecutively. Pass `atOrder` to insert them at a position instead: pages at
   that order and beyond shift back. Existing pages are a normal premise — the
   PPT is one content source among others, never a reason to refuse.
5. A retry of the same material is idempotent — take the reused result and
   continue from Step 2; do not re-parse. If the user wants the same PPT again
   on purpose, delete its imported pages first (`edit_deck` `delete`), then
   retry.
6. Want pages beyond the deck (quiz, interactive, extra slides)? Insert a stub
   with `edit_deck` `insert`, then `generate_scene` that new page only with its
   explicit `type` and `brief` — do not
   re-import the deck to get more pages.

If there is no `.pptx`, say so and stop. Do not extract a PDF/DOCX and pretend
it was a slide import.

Speaker notes may already have become speech actions. Treat them as **drafts**.
Do not TTS them yet; they are rewritten in Step 4 after you understand the
course.

## Step 2 — roster

If the import result says no roster exists, settle the cast in conversation and
call `set_roster`. Voices are needed later for
TTS, not for the inspection pass.

## Step 3 — inspect pages, then fix bad cases

`list_scenes` is the map. Then **inspect before you edit**.

### 3a. Read

`read_stage` every imported page at `path:/scenes/<order|id>`. Record, in your own notes:

- title vs first real heading;
- element inventory (overflow candidates, empty boxes, missing `src`);
- garbled text;
- whether imported speaker-notes speech exists and whether it actually
  teaches this page.

A deck of more than 20 pages: still `list_scenes` fully; `read_stage` the
cover, every section-looking page, and every page whose title/excerpt looks
thin, garbled, or like a dump. Do not skip a page that looks empty.

### 3b. Render when the tool exists

If `render_scene_preview` is registered, **use it**. A `read_stage detail:"tree"` inventory
cannot see overlap, clipping, or a table running off the canvas.

- First pass: preview every imported page you read with `read_s
Read the full source on GitHub (opens external page)
Context

Related work