Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ The site of the [missing-elements](https://github.com/missing-elements) web comp
| `/h5p/build/` | The build page, for people: what it makes, a sample that plays, and the build of a chat's source into a `.h5p`, in the visitor's browser | [src/h5p/build/](src/h5p/build/) |
| `/h5p/create-with-ai/` | The how-to, for people: installing the skill, asking a chat, the prompts to start from, the types, and what to do when something goes wrong | [src/h5p/create-with-ai/](src/h5p/create-with-ai/) |
| `/h5p/skill/` | The skill as zips to install: `h5p-author.zip` for Claude and Grok, `h5p-author-chatgpt.zip` for ChatGPT's Plugins; and its files, with a page that lists each at its full address, which no page links to | [src/h5p/skill/](src/h5p/skill/), copied by [eleventy.config.js](eleventy.config.js); the zips written by [vite.config.ts](vite.config.ts) |
| `/h5p/bundles/` | The skill's build tool and a library bundle per content type, for a chat that runs Node but cannot reach npm | written by [vite.config.ts](vite.config.ts) |
| `/h5p/bundles/` | The skill's build tool and a library bundle per content type, for a chat that runs Node but cannot reach npm; and `h5p-author-build.tar.gz`, the tool and every library in one archive, for a person to attach to a chat whose code can download nothing | written by [vite.config.ts](vite.config.ts) |
| `/h5p/build/types/` | The skill's type files, which the build page copies for the chat | written by [vite.config.ts](vite.config.ts) |

A chat takes the skill installed: from a zip in Claude, ChatGPT and Grok, or with `npx skills add` in an agent with a terminal, as `/h5p/create-with-ai/` says. Where the skill cannot reach npm, it builds from the tool and a bundle in `/h5p/bundles/`, at the addresses `/h5p/skill/` lists, if it can run Node and fetch a file: Grok did, on 2026-11-13. If it cannot, as in ChatGPT, it gives the user a link to `/h5p/build/`, which builds in their browser.
A chat takes the skill installed: from a zip in Claude, ChatGPT and Grok, or with `npx skills add` in an agent with a terminal, as `/h5p/create-with-ai/` says. Where the skill cannot reach npm, it builds from the tool and a bundle in `/h5p/bundles/`, at the addresses `/h5p/skill/` lists, if it can run Node and fetch a file: Grok did, on 2026-11-13. Where its code runs Node but can fetch nothing, as in ChatGPT, it builds from `h5p-author-build.tar.gz` once the person attaches it, and otherwise gives them a link to `/h5p/build/`, which builds in their browser. The tool is a Node.js program, so a chat whose code runs no Node, as most chat apps for local models, takes the link; an agent with a terminal and a local model builds offline from the archive.

Until 2026-11-13 the site's prompts sent a chat to read the skill at `/h5p/skill/` instead. That worked only in chats that now take the zip, so the prompts name the installed skill, and no page links to `/h5p/skill/`. Its page and files stay: the copies of the skill already installed name that address, and so do the prompts people copied before.

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"@codemirror/state": "6.7.6",
"@codemirror/view": "6.43.15",
"@lezer/highlight": "1.2.5",
"@missing-elements/h5p-author": "0.9.7",
"@missing-elements/h5p-author": "0.9.8",
"@missing-elements/h5p-libraries": "1.1.0",
"@missing-elements/h5p-offline-player": "1.6.0",
"@missing-elements/h5p-runtime": "1.0.1",
Expand Down
10 changes: 5 additions & 5 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 7 additions & 6 deletions src/h5p/build/index.njk
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
---
layout: base.njk
# The title and description carry what people search for: an AI H5P generator, with ChatGPT and the
# like. The description counts the types as the hero does, in the release the page runs.
title: "Free AI H5P generator: make H5P with ChatGPT, Claude or Grok"
# like, and what sets it apart, in the owner's words: privacy first, no MCP server. The description
# counts the types as the hero does, in the release the page runs.
title: "Free AI H5P generator, privacy first: make H5P with ChatGPT, Claude or Grok"
eleventyComputed:
description: "Describe a lesson to ChatGPT, Claude or Grok and get an H5P activity: a quiz, a course presentation or any of {{ skill.offered.length }} H5P types. Free, no account, for Moodle."
description: "Describe a lesson to ChatGPT, Claude or Grok and get an H5P activity for Moodle: a quiz, a course presentation or any of {{ skill.offered.length }} H5P types. Free, privacy first: no MCP server, no account."
# The picture a shared link shows: the page's first screen at 1200×630, light, with the sample
# settled. It is a screenshot, so take it again when that screen changes.
socialImage:
Expand Down Expand Up @@ -101,8 +102,8 @@ csp: "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' da
</li>
<li class="feature">
<span class="feature-icon icon-browser" aria-hidden="true"></span>
<h3>Built in your browser</h3>
<p>The page builds and plays the activity on your computer. It is free and <a href="https://github.com/missing-elements/missing-elements.github.io/tree/main/src/h5p/build">open source</a>, needs no account, and sends nothing you make to this site.</p>
<h3>Privacy first, no MCP server</h3>
<p>Your chat builds the activity in its own sandbox, or this page builds and plays it on your computer: nothing you make is sent to us. It is free and <a href="https://github.com/missing-elements/missing-elements.github.io/tree/main/src/h5p/build">open source</a>, and needs no account.</p>
</li>
<li class="feature">
<span class="feature-icon icon-school" aria-hidden="true"></span>
Expand Down Expand Up @@ -140,7 +141,7 @@ csp: "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' da
</li>
<li>
<h3>Play it, then download it</h3>
<p>Claude and Grok build the <code>.h5p</code> file in the chat. ChatGPT hands over a link that opens the activity here, or its source, to <a href="#build-it">open or paste below</a>.</p>
<p>Claude and Grok build the <code>.h5p</code> file in the chat, and so does ChatGPT with <a href="/h5p/create-with-ai/#install">the build archive</a> attached. Without it, ChatGPT hands over a link that opens the activity here, or its source, to <a href="#build-it">open or paste below</a>.</p>
</li>
</ol>
<div class="prompt-box">
Expand Down
58 changes: 50 additions & 8 deletions src/h5p/create-with-ai/index.njk
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,11 @@ csp: "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; o
<li>
<strong>ChatGPT</strong>: download
<a href="/h5p/skill/h5p-author-chatgpt.zip" download>h5p-author-chatgpt.zip</a> and upload it
under Plugins. ChatGPT's code cannot reach the build tool, so it hands over a link to the
build page. If the page says the link arrived damaged, ask for the link again, or for the
source as a file, and open that on the build page.
under Plugins. ChatGPT's code cannot download the build tool, so download
<a href="/h5p/bundles/h5p-author-build.tar.gz" download>h5p-author-build.tar.gz</a> once too,
and attach it to the message where you ask: ChatGPT then builds the <code>.h5p</code> file in
the chat. Without it, ChatGPT hands over a link to the build page; if the page says the link
arrived damaged, ask for the source as a file and open that on the build page.
</li>
<li>
<strong>Grok</strong>: download
Expand All @@ -89,6 +91,8 @@ csp: "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; o
The zips hold h5p-author {{ skill.version }}, the release the build page runs: text files and
nothing that runs, which you can read
<a href="https://github.com/missing-elements/h5p-offline-player/tree/main/skills/h5p-author">on GitHub</a>.
The archive holds the same release's build tool, which runs in the chat's own sandbox, and
the H5P libraries it puts in the file, each under its own licence.
</p>
</section>

Expand All @@ -115,10 +119,13 @@ csp: "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; o

<section class="step" aria-labelledby="file-heading">
<h2 id="file-heading"><span class="step-marker"><span class="step-number">4</span></span> Get the .h5p file</h2>
<p>What the chat hands you depends on what it can run:</p>
<p>
The build tool is a Node.js program, so what the chat hands you depends on whether its code
Comment thread
alekswebnet marked this conversation as resolved.
Resolved
runs Node.js:
</p>
<ul>
<li>the <code>.h5p</code> file itself, from a chat whose code can reach the build tool, as Claude's and Grok's can;</li>
<li>a link that opens the activity on the build page, as ChatGPT gives;</li>
<li>the <code>.h5p</code> file itself, from a chat whose code runs Node.js and can reach the build tool, as Claude's and Grok's can, and ChatGPT's with the build archive attached;</li>
<li>a link that opens the activity on the build page, as ChatGPT gives without it;</li>
<li>or its source, as a file or a block of JSON: open or paste it <a href="/h5p/build/#build-it">on the build page</a> and choose Build.</li>
</ul>
<p>
Expand Down Expand Up @@ -238,8 +245,35 @@ csp: "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; o
<a href="/h5p/assets/libraries-LICENSES.txt">the pack's licence list</a> says.
</p>
<p>
Nothing you make is sent to this site: the build page builds and plays it in your browser.
Your AI chat sees what you send it.
Privacy first: nothing you make is sent to this site, and there is no MCP server or other
server of ours in between. The chat builds the file in its own sandbox, or the build page
builds and plays it in your browser. Your AI chat sees what you send it, as it sees
anything you ask it.
</p>
</section>

<section aria-labelledby="local">
<h2 id="local">With a local model, or offline</h2>
<p>
A chat app for local models writes the activity as any chat does, but out of the box its code
does not run Node.js:
</p>
<ul>
<li>Open WebUI's code tool runs Python;</li>
<li>LM Studio's code plugin runs JavaScript in Deno, not Node.js;</li>
<li>Jan has no code tool of its own.</li>
</ul>
<p>
So there the chat hands over a link or the source, and the build page builds the file. Open
WebUI with Open Terminal is the exception: its default image has Node.js, which the build
needs.
</p>
<p>
With Node.js 22 or later on your own computer, the whole build can stay offline. Install the
skill in an agent with a terminal that runs a local model, from Ollama or LM Studio, and download
<a href="/h5p/bundles/h5p-author-build.tar.gz" download>h5p-author-build.tar.gz</a> once.
Then tell the agent where the archive is. It builds the <code>.h5p</code> file on your
computer, with no internet and nothing sent anywhere.
</p>
</section>

Expand All @@ -253,6 +287,14 @@ csp: "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; o
it, and ask in a new chat.
</p>

<h3>The chat says it cannot get the build tool</h3>
<p>
Download <a href="/h5p/bundles/h5p-author-build.tar.gz" download>h5p-author-build.tar.gz</a>
and attach it to your next message: a chat whose code runs Node.js builds the file from it,
without installing or downloading anything. A chat whose code runs no Node.js gives you a
link to the build page instead.
</p>

<h3>The build lists problems</h3>
<p>
Choose Copy the problems for the chat, and paste them into the chat that wrote the source. It
Expand Down
Loading
Loading