Create a SCORM course with ChatGPT: prompt, package, upload
ChatGPT is one of several AI assistants that can draft a course outline, lesson text and quiz questions. The same copy-and-paste workflow works with Claude, Gemini and Microsoft Copilot. None of these assistants makes the material trackable simply by placing it in a ZIP file. To create a SCORM course with ChatGPT or another AI assistant, you still need a second layer that builds the manifest, launches the content inside an LMS and sends progress or scores through the SCORM runtime API.
This guide separates those two jobs. Your chosen assistant develops the learning material. A course builder validates that material and turns it into a SCORM package your LMS can import.
What an AI assistant creates, and what the SCORM layer adds
A useful course starts with instructional decisions: the audience, learning objective, scope, lesson order and assessment. An AI assistant can help with each of them when the prompt supplies enough context. The official guides for ChatGPT, Claude, Gemini and Microsoft Copilot all recommend a clear goal, relevant context and an explicit output format. The labels differ, but the working principle is the same.
SCORM solves a different problem, and it solves it in two separate layers. A conforming package contains web content plus an imsmanifest.xml file at the root, as set out in the SCORM content packaging reference. After the LMS launches that content, a second layer takes over: JavaScript calls defined by the run-time reference exchange data such as completion status, score, bookmark and session time.
That distinction gives you a practical rule: ask the assistant to produce structured learning content, not to improvise a production SCORM ZIP. Let a deterministic exporter handle file names, XML, runtime calls and package validation.
Can you use Claude, Gemini or Copilot instead?
Yes. Course Builder produces a text prompt and validates the returned structure. To generate course content it uses your own chat, not a model API of its own, so the process is not tied to one provider. Optional services such as transcription of recordings and AI narration run only when you ask for them.
| AI assistant | How to use the Course Builder prompt | What to check |
|---|---|---|
| ChatGPT | Paste the complete prompt into a new or existing chat | Preserve the requested headings, fields and item counts |
| Claude | Paste the same prompt without rewriting its technical instructions | Remove any introduction added before the requested structure |
| Gemini | Keep the task, context and output format together in one prompt | Check that every lesson follows the same schema |
| Microsoft Copilot | Paste the prompt into Copilot Chat and copy the full response back | Check organizational rules before attaching internal source files |
The assistant can change the wording and the consistency of the returned structure. It does not change the SCORM package format. If a response fails validation, ask the same assistant to return the content in the exact requested schema or try another one. Do not ask any model to reconstruct imsmanifest.xml or the runtime integration from memory.
Step 1: define the course before prompting an AI assistant
Write down five inputs before opening a chat:
- Audience: job role, prior knowledge and language.
- Outcome: one observable task the learner should perform after the course.
- Scope: source material that is in bounds and subjects that are out of bounds.
- Evidence: policies, product documentation or approved references that factual claims must follow.
- Assessment: the number of questions, passing score and whether answers need to reach the LMS report.
"Teach cybersecurity" gives the model almost no constraints. "Prepare warehouse supervisors to identify and report a suspected phishing message under our four-step incident procedure" gives it a learner, an action and a boundary.
Step 2: generate the course outline
Use a small first prompt. The outline is cheap to correct; eight finished lessons are not.
Create a course outline for [audience] about [topic].
Learning outcome: [observable outcome]
Source material: [paste or attach approved material]
Course length: [number] modules and [number] lessons
Assessment: [number] questions with a pass mark of [percentage]
For each lesson return:
1. A short title
2. One measurable learning objective
3. The concepts or procedure it must cover
4. A suitable practice activity
Do not introduce facts that are absent from the source material. Mark any missing fact as NEEDS SOURCE.
Review the outline for duplicated lessons, objectives that cannot be assessed and prerequisites introduced too late. Move or delete lessons now. Do not use polished wording as a reason to keep a weak section.
LMSable Course Builder generates a purpose-built planning prompt and lets you paste the resulting table of contents back into an editable course structure. You can reorder, rename, add or remove lessons before generating their content.
Step 3: develop one lesson at a time
Give your chosen assistant the approved outline, then work lesson by lesson. Smaller prompts make it easier to preserve the source, enforce length and reject a bad activity without regenerating the whole course.
Each lesson prompt should identify:
- the lesson objective;
- what the learner already saw;
- the exact source passages the lesson may use;
- the desired format, such as explanation, scenario, flashcards or quiz;
- the expected length and reading level;
- the response format required by the builder.
Course Builder supplies the response schema for the selected interaction. Copy its prompt unchanged into ChatGPT, Claude, Gemini or Copilot. Paste the answer back into the matching lesson and preview it. If the response fails validation, fix the named problem in the same chat instead of hand-editing structural fields at random.
Step 4: configure tracking before export
Decide what completion means. Opening the package is a poor completion rule for assessed training. A better rule might require every lesson plus a final test score of at least 80 percent.
For SCORM 1.2, the package normally reports through fields such as:
| Learning event | SCORM 1.2 data |
|---|---|
| Started but unfinished | cmi.core.lesson_status = incomplete |
| Course completed | cmi.core.lesson_status = completed |
| Test passed or failed | cmi.core.lesson_status = passed or failed |
| Numeric result | cmi.core.score.raw, with min and max |
| Resume position | cmi.core.lesson_location and cmi.suspend_data |
| Question response | cmi.interactions.n.* |
Course Builder exports SCORM 1.2, and also an HTML package that runs in a browser without an LMS and without LMS reporting. For scored content, it can report the course score and question interactions; for an unscored course, the score field can represent progress. Your LMS controls how those values appear in its gradebook and reports. If the target platform asks for a different standard, compare SCORM 1.2 vs SCORM 2004, xAPI and cmi5 before you export.
Step 5: inspect the package before uploading it
Download the .zip and keep it zipped. At minimum, confirm that:
imsmanifest.xmlis at the root of the archive, not inside another folder.- The launch file referenced by the manifest exists.
- All referenced lesson, script, style and media files are present.
- The package opens through a SCORM player, not only by double-clicking an HTML file.
- The browser console shows no missing resources or JavaScript errors.
The local HTML preview proves that the lesson renders. It does not prove that the package found an LMS API, committed its data or terminated the session correctly.
Step 6: test in a neutral SCORM player
Import the ZIP into SCORM Cloud or another standards-focused test player before you go near the production LMS. Run one interrupted pass to see whether the package resumes at the saved position, then one complete pass to check status, score, session time and interaction records. Import success alone is not a pass: a package can import cleanly, display every page and still send no tracking data. The full attempt script, including the answer pattern and the release checklist, is in the guide on how to test a SCORM package before publishing it.
Step 7: upload the same ZIP to your LMS
Create a SCORM activity in the target LMS and upload the package without unzipping it. Choose the grading and attempt settings that match the values your package reports. Then test with a learner account, not an administrator preview. For Moodle, those settings and the reports that expose the result are described step by step in the guide to uploading SCORM to Moodle and verifying completion tracking.
Compare three places after the attempt: the activity report, the gradebook and the learner's completion state. If SCORM Cloud records the correct values but your LMS does not, inspect the LMS activity settings before rebuilding the course. If both players fail in the same way, return to the package.
Build the package around content you have reviewed
No AI assistant should be the final reviewer for a regulated procedure, product instruction or safety claim. Keep the source material, prompt and generated lesson editable. Have a subject-matter expert approve the course before you export the final ZIP.
Open Course Builder to plan the lessons with ChatGPT, Claude, Gemini or Copilot, preview each interaction and export one SCORM 1.2 package with completion and score reporting.