Pptx Import logo

Pptx Import

OrganizationPopular
THU-MAIC
pptx-import

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

Overview

PublisherTHU-MAIC
RepositoryOpenMAIC
Skill namepptx-import
Stars
37.6K
Forks
5.9K
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by THU-MAIC on GitHub. Read the source before you install it.

Installation

Install the Pptx Import AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git /tmp/OpenMAIC
mkdir -p .claude/skills
cp -r /tmp/OpenMAIC/skills/agent-runtime/pptx-import .claude/skills/pptx-import
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Pptx Import in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Pptx Import on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Pptx Import is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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_stage. Look at the PNG, then decide whether that page needs a fix.
  • After a visual fix: preview that page again (look → edit → look). At most two extra previews per page.
  • If the tool is not registered, say so in one short sentence and inspect from read_stage only. Do not invent a screenshot.

Do not call render_scene_preview on pages you have not read, and do not preview quiz/interactive stubs you have not inserted yet.

3c. Fix only bad cases

Load pro-editing first. read its SKILL.md (the path is in <available_skills>), then follow that skill's surgical loop for every visual repair: read_stage, the smallest patch_stage / edit_deck op, render_scene_preview look → edit → look. Stay in pro-editing until the bad cases below are done. Do not skip the load and invent a parallel edit style.

ProblemTool
Empty or garbage titleedit_deck retitle from the first real heading
Overlap or overflowpatch_stage set on that element's /content/canvas/.../left / top / width / height, one number per op
Leftover empty boxespatch_stage delete_element
Broken or missing imagepatch_stage set on /content/canvas/elements/N/src, only if you have a real replacement URL; otherwise leave it and mention it
Garbled text, leftover font-substitution junkread_stage detail:"source", then patch_stage set on that element's rich-text path

Rules:

  • Keep the original visual language. Do not restyle the deck to "look more like OpenMAIC".
  • Change only what is broken or unreadable.
  • Do not write or rewrite actions in this step. Layout first.
  • When the layout pass is done, return here for Step 4. Do not continue pro-editing into narration.

Step 4 — understand the course, then write actions

Only after Step 3. You now have a page list, inventories, and (if available) previews. Form a short course reading before touching actions:

  • What is the course arguing or teaching, in order?
  • Which pages are cover / section / content / recap?
  • What should the teacher say on each page (not what the slide already prints)?
  • Which element should be spotlighted while that line is spoken?

Then write playback actions with generate_actions page by page, in order (it drafts the full action set from the page content and course context, and synthesizes audio by default — reserve patch_stage on /actions/... + generate_tts for line-level fixes afterwards):

  • insert_speech / set_speech: one or a few teacher lines that teach this page. Do not read the slide aloud verbatim. Speaker notes are a draft to rewrite, not a script to keep if they are outline-speak or leftover PPT comments.
  • set_spotlight: bind the line to the element it is about (elementId from read_stage detail:"source"). Skip spotlight when the page is a title-only cover.
  • delete imported speech that does not teach.

Do not call generate_scene to "generate actions". That regenerates the slide.

Step 5 — TTS

After a page's actions are settled, generate_tts that page (default mode fills missing audioId only). Reworded speech has no audio until this runs.

Before saying the import is ready to teach: every page that has speech must have audioId. read_stage detail:"source" shows it.

Step 6 — add quiz / interactive only on request

If the user did not ask for quiz, interactive, or extra pages, stop after Step 5. One sentence is enough: they can ask to insert a quiz or an interactive page next.

If they did ask:

  1. Say which pages you will insert, where, and why — then do it.
  2. edit_deck insert with type=quiz or type=interactive at the chosen atOrder. This creates an empty stub; it does not copy a PPT slide.
  3. generate_scene only that new page, with the explicit page type and brief plus materialFacts taken from the surrounding imported slides. Never regenerate an imported slide in this step.
  4. A new interactive page must have a real widgetType and a filled widgetOutline. A quiz must have real questions, answers, and analysis.
  5. generate_tts the new page if it has narration.

Do not sprinkle quizzes through the deck "for engagement" when nobody asked.

Closing

  1. list_scenes — imported slides still in order, plus any pages you inserted.
  2. Touched speech has audioId.
  3. Tell the user in one or two sentences what was imported, what you fixed visually, and that narration is in. Do not dump a page-by-page changelog.

Hard rules

  • import_pptx is the source of visual truth. Replanning the imported deck is the wrong workflow for this skill.
  • Inspect and repair before writing actions. Actions after you understand the course.
  • generate_scene is allowed only for newly inserted quiz/interactive stubs, or when the user explicitly asked to rebuild one imported page.
  • Do not extract the PPT with extract_material and teach from the text.
  • Do not invent images, citations, or slide content that was not in the file.
  • If import fails, report the tool error. Do not fall back to an AI rewrite unless the user then asks for that different path.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Pptx Import AI skill do?

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

Why use Pptx Import on TypingMind?

Because you install it once and use it with any model. Pptx Import is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Pptx Import in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/pptx-import. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Pptx Import?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Pptx Import?

As many as you like. As long as a model supports skills, you can use Pptx Import with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Pptx Import AI skill free?

Yes. It is published on GitHub by THU-MAIC under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇