Slide Image To Editable Pptx logo

Slide Image To Editable Pptx

Community
w1163222589-coder
slide-image-to-editable-pptx

Convert PPT slide screenshots / style-reference images into a high-fidelity editable PPTX. The output visually matches the source image, but text and simple shapes are PPT-native (editable), while complex visuals are clean generated PNG assets (replaceable). Use when the user provides slide images and wants an editable PowerPoint that looks the same as the source.

Overview

Publisherw1163222589-coder
Repositoryslide-image-to-editable-pptx
Skill nameslide-image-to-editable-pptx
Stars
197
Forks
17
Bundled files
9
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.

  • 9 bundled files

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

  • Open source

    Published by w1163222589-coder on GitHub. Read the source before you install it.

Installation

Install the Slide Image To Editable Pptx 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.
    https://github.com/w1163222589-coder/slide-image-to-editable-pptx/tree/main
  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/w1163222589-coder/slide-image-to-editable-pptx.git \
  .claude/skills/slide-image-to-editable-pptx
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Slide Image To Editable Pptx 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 Slide Image To Editable Pptx 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 Slide Image To Editable Pptx 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.

Slide Image → Editable PPTX

You are converting slide screenshots into editable PowerPoint files. The goal is visual fidelity — the output PPT, when rendered, should look nearly identical to the source image — while making text and geometric shapes editable.

Core Principle: Three-Layer Decomposition

Every pixel in the source image belongs to exactly one of three layers:

LayerWhat it containsHow to implementEditable?
A — Visual AssetComplex illustrations, decorative backgrounds, photos, scientific figures, icons with intricate detail, maps, radar scenes, waveforms, heatmaps, campus sketches, device drawings, textured decorationsClean PNG generated with $imagegen (no text!) or original figure preserved as imageReplaceable (move/resize/delete), not internally editable
B — StructureSolid color rectangles, rounded rectangles, circles, lines, arrows, dividers, panel frames, card backgrounds, badges, gradient bars, simple geometric decorationsPPT-native shapes via $slides / presentation-skill (PptxGenJS)Fully editable
C — ContentAll readable text: titles, subtitles, body text, labels, captions, page numbers, footer text, formula text, table text, card headings, legend labelsPPT-native text boxes via $slides / presentation-skill (PptxGenJS)Fully editable

The key insight: Never bake text into a generated image. Never use crude PPT shapes to approximate a complex visual. Never use a full-slide screenshot as background.

Workflow

Phase 1: Pixel-Level Analysis

For EACH source image, produce a structured analysis. Do not skip any slide. Do not infer from one slide what another contains — inspect each one.

Step 1.1: Observe and catalog

Look at the image carefully. Identify every distinct visual element. For each element, determine:

{
  "element_id": "s01_e01",
  "description": "distributed radar network illustration with 6 antennas around a central target on a coordinate grid",
  "bbox_percent": {"x": 45, "y": 10, "w": 55, "h": 80},
  "layer": "A",
  "implementation": "image2-generate",
  "z_order": 1,
  "notes": "Must NOT include any text labels. The title, axis labels, and page number are separate text elements."
}

The bbox_percent uses percentages of slide width/height (0-100) to specify position. This avoids pixel-count errors across different image resolutions.

Step 1.2: Classify elements strictly

Apply these rules in order:

  1. Is it readable text? → Layer C (text box). This includes ALL text: titles, labels inside diagrams, axis labels, page numbers, footer text, card headings, bullet points, formula text. Even if text overlaps a complex visual, the text itself goes to Layer C.

  2. Is it a simple geometric shape? (solid rectangle, rounded rectangle, circle, line, arrow, triangle, chevron, trapezoid — with solid fill or simple border) → Layer B (PPT shape). This includes panel backgrounds, card frames, title bars, dividers, badges, progress bars, simple decorative strips.

  3. Is it visually complex? (illustration, photo, texture, gradient background with imagery, scientific figure, diagram with intricate line work, icon with detail beyond basic geometry) → Layer A (generated PNG or preserved figure).

Step 1.3: Identify shared vs. unique elements
  • Shared across slides: header bar style, footer style, logo, page number format, background color
  • Unique per slide: main content visuals, specific diagrams, data figures

Create a slide_master_elements list for shared elements, and per-slide element lists for unique content.

Step 1.4: Completeness self-check (required)

After finishing the element list for ALL slides, go back and re-examine each source image ONE MORE TIME with fresh eyes. This second pass focuses specifically on small or easy-to-miss visual elements that the first pass may have overlooked.

For each slide, ask yourself these questions:

  1. Small icons: Are there any small icons (university seals, bullet-point icons, award badges, folder icons, chip icons, person icons, book icons, etc.) that I classified as Layer B (PPT shape) but are actually too detailed for simple shapes? If the icon has more than 3-4 visual features (gradients, shadows, internal detail, curves), reclassify it as Layer A.

  2. Decorative details: Are there small decorative elements I skipped entirely? Look in corners, edges, between cards, along dividers, and in footer/header areas. Things like: small wave patterns, dot grids, circuit-trace textures, line-art campus buildings, faint background motifs.

  3. In-card visuals: For each card/panel on the slide, does it contain a small illustration or diagram inside it? These are frequently missed because the analyst focuses on the card frame (Layer B) and card text (Layer C) but forgets the small visual inside the card.

  4. Chart/figure decorations: Around charts or data figures, are there small visual elements like target icons, antenna icons, signal-path illustrations, or comparison diagrams that I might have grouped with the chart but are actually separate Layer A elements?

  5. Count check: Count the total Layer A elements per slide. A visually rich slide typically has 3-8 distinct visual assets. If a complex-looking slide has only 1-2 Layer A elements, something is likely missing — re-examine it.

If this second pass finds any missed elements, add them to the element list with a note: "found_in": "completeness_check". Do NOT remove or modify any existing elements — only add.

Phase 2: Visual Asset Generation

For each Layer A element, generate a clean PNG using $imagegen.

$imagegen Prompt Rules
  1. Be specific about content: Don't say "a radar scene." Say "A bird's-eye view of a distributed radar network: 6 satellite dish antennas arranged in a hexagonal pattern around a central target (marked with a star), connected by dashed lines, on a dark blue coordinate grid background with axis markings from -200 to 200 km. The style is technical/scientific, with a dark blue (#0A1628) background and light blue/cyan (#31D7FF) elements. No text, no labels, no numbers, no letters."

  2. Always end with "No text": Every prompt must include "No text, no labels, no numbers, no letters anywhere in the image."

  3. Specify exact style: Reference the color palette, line style, and visual mood from the source image. Example: "Dark technical blueprint style with navy background (#061426), cyan (#31D7FF) glowing lines, subtle grid pattern."

  4. Specify aspect ratio: Match the aspect ratio of the target bounding box. "Aspect ratio approximately 16:9" or "Aspect ratio approximately 1:1".

  5. Specify transparency when needed: "Transparent background (PNG with alpha channel)" for overlay elements. "Solid dark background" for background scenes.

  6. One element per image: Don't combine unrelated visual elements. Generate separate images for separate visual regions.

Asset Naming Convention
s{slide_number}_{semantic_role}.png

Examples:

  • s01_radar_network_scene.png — cover slide's main radar illustration
  • s01_bottom_wave_decoration.png — cover slide's bottom decorative wave
  • s03_system_diagram_center.png — slide 3's central system model illustration
  • s05_rmse_chart_figure.png — slide 5's RMSE result plot (if preserved as figure)

Phase 3: PPT Construction

Use the $slides system skill or the presentation-skill (both based on PptxGenJS) to build the deck. If a presentation skill is installed, prefer it. Do NOT write raw python-pptx code — use whichever PptxGenJS-based skill is available, which provides bundled helpers, rendering, and validation.

Follow this exact layer stacking order for every slide (add elements in this sequence so z-order is correct):

Z-order (bottom to top):
1. Slide background color (set via slide.background)
2. Full-width structural bars (header band, footer band)
3. Large visual assets (background scenes, decorative motifs)
4. Panel/card frame shapes (rounded rectangles, boxes)
5. Smaller visual assets (icons, figures inside panels)
6. Lines, arrows, connectors
7. Native charts and tables
8. All text boxes (titles, labels, body text, captions)
9. Brand elements (logo on top)
Coordinate Conversion

Source images are typically at a known pixel resolution (e.g., 1920×1080 or 1672×941). Convert to PowerPoint inches using:

javascript
const SLIDE_W = 13.333; // inches (16:9)
const SLIDE_H = 7.5;

function pxToInches(px_x, px_y, img_w, img_h) {
  return { x: px_x / img_w * SLIDE_W, y: px_y / img_h * SLIDE_H };
}

Measure element positions from the source image precisely. Don't guess.

Font Handling
  • Use "Microsoft YaHei" for Chinese text
  • Use "Cambria Math" for mathematical formulas
  • Match font size, weight (bold), and color from the source image
  • Default to these approximations if unsure:
    • Main title: 28-32pt bold
    • Section title: 20-24pt bold
    • Card heading: 14-16pt bold
    • Body text: 10-12pt regular
    • Caption/label: 8-10pt regular
    • Page number: 10-12pt
Color Extraction

Extract exact colors from the source image. Provide hex values. Build a color palette object at the top of the script:

javascript
const COLORS = {
  bg_dark: "0A1628",
  accent_cyan: "31D7FF",
  accent_gold: "C59A4A",
  text_white: "F2FBFF",
  text_muted: "A9C6D8",
  // ... etc
};
Rendering and Validation

After building each slide (or the full deck), use the $slides built-in render and validation scripts to:

  • Render each slide to PNG for visual comparison
  • Check for text overflow
  • Check for element overlap issues
  • Check for font substitution problems

Build one slide at a time. Render and visually compare against the source image before proceeding to the next slide. Fix any significant layout differences before moving on.

Phase 4: Validation

After building the PPTX:

  1. Structural check: Count objects per slide. Each slide should have:

    • Multiple text frames (not zero)
    • Multiple shapes (not just one big picture)
    • No picture covering >85% of slide area (that would be a full-slide screenshot)
  2. Visual comparison: If possible, render the PPTX to images and compare with source. Flag any slide where:

    • Major elements are missing
    • Layout is significantly different
    • Text is baked into images instead of text boxes
  3. Editability check: Verify that opening the PPTX and clicking on text allows editing.

Non-Negotiable Rules

  1. NEVER use a full-slide screenshot as the background
  2. NEVER bake readable text into generated images
  3. NEVER use a single generic visual motif across many slides when the source slides have distinct visuals
  4. NEVER merge unrelated elements (text + visual + shapes) into one image
  5. NEVER skip the analysis phase — inspect every source image before writing any code
  6. NEVER use crude PPT shapes to approximate complex illustrations when $imagegen can generate a proper visual
  7. ALWAYS generate each visual asset without any text
  8. ALWAYS match the source image's color palette, not a generic theme
  9. ALWAYS place text as PPT-native text boxes, even if it overlaps a visual asset
  10. ALWAYS process slides one at a time — each slide gets its own analysis, assets, and build function

Common Failure Modes to Avoid

Failure: "New template" instead of "reconstruction"

Symptom: The output looks like a professional PPT on the same topic, but doesn't match the source image's specific layout. Cause: Skipping detailed analysis, using generic layouts. Fix: Measure exact positions from the source image. Match the source's specific element arrangement.

Failure: "Generic motif spam"

Symptom: The same background image appears on every slide. Cause: Generating one or few generic background images and reusing them. Fix: Each slide's visual assets should be unique and match that specific slide's source image content.

Failure: "Over-native crude shapes"

Symptom: Complex illustrations (radar dishes, waveforms, network diagrams) rendered as ugly PPT shape approximations. Cause: Trying to rebuild everything with native shapes when IMAGE2 would produce a much better result. Fix: Use $imagegen for any visual element that PPT shapes can't faithfully reproduce.

Failure: "Baked text"

Symptom: Text visible in the PPTX but not editable — it's part of an image. Cause: Generated images include text that should be editable. Fix: $imagegen prompts must always specify "no t

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 Slide Image To Editable Pptx AI skill do?

Convert PPT slide screenshots / style-reference images into a high-fidelity editable PPTX. The output visually matches the source image, but text and simple shapes are PPT-native (editable), while complex visuals are clean generated PNG assets (replaceable). Use when the user provides slide images and wants an editable PowerPoint that looks the same as the source.

Why use Slide Image To Editable Pptx on TypingMind?

Because you install it once and use it with any model. Slide Image To Editable Pptx 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 Slide Image To Editable Pptx in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/w1163222589-coder/slide-image-to-editable-pptx/tree/main. 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 Slide Image To Editable Pptx?

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 Slide Image To Editable Pptx?

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

Is the Slide Image To Editable Pptx AI skill free?

Yes. It is published on GitHub by w1163222589-coder 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 👇