Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

storyline-to-scorm

Turn an Articulate Storyline (or other HTML5) course export into a SCORM 1.2 package you can upload straight to an LMS. No Storyline license, no LMS plugin, no hand-editing XML.

If you've ever published a course to "Web" or "HTML5" output and then needed a SCORM zip your LMS would actually accept (tracking, launch, completion), this does it in one command. Point it at a folder, it finds the course, writes a valid imsmanifest.xml, and zips everything into a package the LMS can read.

Why I built it

Storyline can publish straight to SCORM, but a lot of the time you end up with plain HTML5 output instead: from a colleague, an archive, a "Web" publish, or a pile of older courses. Re-opening every .story source just to republish is slow, and sometimes you don't even have the source. This wraps the existing HTML5 output in the SCORM manifest an LMS needs, so the package launches and reports to Moodle, Cornerstone, SuccessFactors, TalentLMS, Docebo, Canvas, and other SCORM 1.2 systems.

What it does

  • Detects Storyline output by looking for story.html / index.html and the story_content/, html5/, mobile/ folders that come with it.
  • Batch mode: scans a directory (and one level of subfolders) and packages every course it finds.
  • Builds a course title from the folder name, stripping leading numbers and trailing date stamps.
  • Writes a valid SCORM 1.2 imsmanifest.xml and zips the course the right way (contents at the zip root, which is what SCORM expects).
  • --dry-run to see exactly what it would create before it writes anything.
  • No dependencies, pure Python standard library.

Requirements

  • Python 3.8+. That's it. No pip install, no external tools.

Usage

# Preview what would be packaged (nothing written)
python create_scorm.py /path/to/courses --dry-run

# Package every Storyline course found under a folder
python create_scorm.py /path/to/courses

# Choose where the .zip packages go
python create_scorm.py /path/to/courses --output /path/to/output

# Defaults to the current directory
python create_scorm.py

Packages land in a SCORM_Packages/ folder by default (override with -o/--output). Each one is named after the course title it detected, e.g. Onboarding 101 SCORM.zip.

What a course folder should look like

My Course/
├── story.html          <- launch file (or index.html)
├── story_content/
├── html5/
├── mobile/
└── ...

Upload the resulting *.zip to your LMS as a SCORM 1.2 package.

Notes and limits

  • Targets SCORM 1.2, the version with the widest LMS support. It doesn't produce SCORM 2004 or xAPI.
  • It packages the course's existing files as they are. It doesn't modify or republish the course content itself.
  • A temporary imsmanifest.xml gets written into the source folder during packaging and removed afterward. Your original files are left alone.

License

MIT

About

Package Articulate Storyline / HTML5 course exports into SCORM 1.2 zips for any LMS. One command, no Storyline license, pure standard-library Python.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages