Learn Deck logo

Learn Deck

Community
LearnAIHubC
learn-deck

Generate editable learning PPTX decks by first creating HTML slides, or convert local HTML slide decks and single-page HTML presentations into editable PPTX files by rendering in a browser, reading DOM element positions, extracting inline SVG assets, and rebuilding text, shapes, gradients, bullets, and icons as separated PowerPoint objects. Use when a user asks to generate PPT/PPTX from a topic, outline, course material, study notes, or structured content, or asks for pixel-level/browser-positioned HTML-to-PPT/PPTX conversion with editable/separate elements instead of one full-slide screenshot.

Overview

PublisherLearnAIHubC
RepositoryLearnDeck
Skill namelearn-deck
Stars
26
Forks
3
Bundled files
15
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.

  • 15 bundled files

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

  • Open source

    Published by LearnAIHubC on GitHub. Read the source before you install it.

Installation

Install the Learn Deck 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/LearnAIHubC/LearnDeck/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/LearnAIHubC/LearnDeck.git \
  .claude/skills/learn-deck
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Learn Deck 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 Learn Deck 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 Learn Deck 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.

LearnDeck

Quick Start

This skill has two main commands.

1. Generate PPT

Use this when the user asks to create a new PPT/PPTX from a topic, outline, notes, or source material.

  1. Create a slide plan JSON using the shape in examples/slides.example.json.
  2. Run:
bash
node /path/to/learn-deck/scripts/generate_ppt.js \
  --slides /path/to/slides.json \
  --out-dir /path/to/output \
  --name deck-name \
  --style clean \
  --no-preview

This command first writes <out-dir>/<name>.html, then calls the HTML-to-PPT converter.

2. HTML to PPT

Use this when the user already has a local HTML file or URL:

bash
node /path/to/learn-deck/scripts/html_to_ppt.js \
  --input /path/to/source.html \
  --out-dir /path/to/output \
  --name deck-name

If Codex workspace dependencies are available, prefer the bundled runtime:

bash
NODE_PATH="$NODE_MODULES:/Users/$USER/node_modules" "$NODE_BIN" \
  /path/to/learn-deck/scripts/generate_ppt.js \
  --slides /path/to/slides.json \
  --out-dir /path/to/output \
  --name deck-name \
  --style clean \
  --no-preview

or:

bash
NODE_PATH="$NODE_MODULES:/Users/$USER/node_modules" "$NODE_BIN" \
  /path/to/learn-deck/scripts/html_to_ppt.js \
  --input /path/to/source.html \
  --out-dir /path/to/output \
  --name deck-name

When running in Codex Desktop, call load_workspace_dependencies first and set:

  • NODE_BIN to the returned Node.js executable.
  • NODE_MODULES to the returned Node.js packages directory.

Workflow

Generate PPT

  1. Ask one short style question when the user has not specified a style and the request is not urgent. Offer choices such as clean, academic, warm, bold, or dark; if the user says they do not care, choose based on audience and topic.
  2. Turn the user's topic/content into a concise slides.json plan. Include "style": "<chosen-style>" in the plan or pass --style.
  3. Keep each slide focused; split long content into more slides rather than crowding one slide.
  4. Use layout values cover, content, steps, compare, or summary when useful.
  5. Run scripts/generate_ppt.js; it writes HTML and then runs the converter. Use --no-preview by default for direct delivery.
  6. Do not run extra validation by default. Directly report the generated .html and .pptx paths to the user/customer.

Revision Loop

When the user/customer asks for adjustments after delivery:

  1. Edit the original generated HTML file rather than starting over.
  2. Run scripts/html_to_ppt.js on that same HTML file with the same --name/output directory.
  3. Return the regenerated PPTX path. Only validate or preview when the user explicitly asks or a conversion error occurs.

HTML to PPT

  1. Load the HTML in Chromium/Chrome through Playwright.
  2. Wait for network idle and document.fonts.ready.
  3. Detect slides with .slide by default; pass --slide-selector for another selector.
  4. Read every visible DOM element's bounding box, computed styles, text runs, pseudo bullets, and SVG children relative to its slide.
  5. Save each inline SVG to <output>/<base>-assets/svg/ and a PNG preview to <output>/<base>-assets/png/.
  6. Create a PPTX with:
    • Editable text boxes for headings, paragraphs, spans, list items, and labels.
    • Editable rectangle/rounded-rectangle/ellipse shapes for backgrounds, pills, cards, borders, and bullets.
    • Separate image objects for extracted SVG icons, using PNG in the PPTX for compatibility while preserving source SVGs on disk.
    • Native OOXML linear gradients where possible.
  7. Deliver the generated PPTX path directly. Do not run extra validation by default; validate only when explicitly requested or when troubleshooting a failed conversion.

Script Options

bash
node scripts/generate_ppt.js --help
node scripts/html_to_ppt.js --help-converter

Important HTML-to-PPT options:

  • --input <file-or-url>: Required. Local HTML file or HTTP(S) URL.
  • --out-dir <dir>: Required. Output directory.
  • --name <base>: Output basename. Defaults to input filename.
  • --style <name>: For generate_ppt.js, choose clean, academic, warm, bold, or dark.
  • --slide-selector <css>: Defaults to .slide.
  • --chrome <path>: Use a specific Chrome/Edge/Chromium executable.
  • --ppt-width <inches> and --ppt-height <inches>: Defaults to 13.333 x 7.5.
  • --keep-raw: Keep the intermediate unpatched PPTX.
  • --no-preview: Skip LibreOffice PDF/PNG preview generation.

Bundled Showcase Templates

LearnDeck includes two editable four-slide showcase templates:

  • templates/learn-deck-showcase-zh.pptx
  • templates/learn-deck-showcase-en.pptx

Use them as visual references when the user asks for the LearnDeck showcase style, or clone and revise them when a four-slide knowledge-to-PPT overview matches the request.

Notes

  • generate_ppt.js expects an agent-authored slide plan JSON; it is intentionally deterministic and does not call an LLM by itself.
  • This skill prioritizes editable separated elements over screenshot-perfect fidelity.
  • Browser coordinates are authoritative. Avoid hand-calculating flex/grid positions when the script can read them.
  • PowerPoint and LibreOffice may lay out CJK fonts slightly differently from Chrome. Use installed system fonts such as PingFang SC or pass --font-face.
  • Complex CSS effects are approximated: radial backgrounds become translucent ellipses, box shadows become approximate PowerPoint shadows, and CSS filters are ignored.
  • If SVG support in PowerPoint is important, keep the saved SVG assets and replace the generated PNG icon objects manually or adapt the script. PptxGenJS needs PNG previews for SVG in Node, so PNG is the compatibility default.

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 Learn Deck AI skill do?

Generate editable learning PPTX decks by first creating HTML slides, or convert local HTML slide decks and single-page HTML presentations into editable PPTX files by rendering in a browser, reading DOM element positions, extracting inline SVG assets, and rebuilding text, shapes, gradients, bullets, and icons as separated PowerPoint objects. Use when a user asks to generate PPT/PPTX from a topic, outline, course material, study notes, or structured content, or asks for pixel-level/browser-positioned HTML-to-PPT/PPTX conversion with editable/separate elements instead of one full-slide screens...

Why use Learn Deck on TypingMind?

Because you install it once and use it with any model. Learn Deck 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 Learn Deck in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/LearnAIHubC/LearnDeck/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 Learn Deck?

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 Learn Deck?

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

Is the Learn Deck AI skill free?

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