Cursusmateriaal omzetten naar SCORM‑pakketten: Een praktische gids voor bestandsconversie

Learning Management Systems (LMS) vertrouwen op de SCORM‑standaard (Sharable Content Object Reference Model) om e‑learning‑inhoud te verpakken, leveren en volgen. Hoewel auteurstools automatisch SCORM‑bundels genereren, hebben veel organisaties al een bibliotheek met uiteenlopende assets — PDF‑s, MP4‑video’s, PowerPoint‑slides, HTML‑quizzen — die in de loop der jaren zijn gemaakt. Het omzetten van deze heterogene bestanden naar één goed gestructureerd SCORM‑pakket kan ontmoedigend zijn, vooral wanneer je visuele trouw, metadata en interactielogica moet behouden.

Deze gids loopt het volledige conversieworkflow door, van asset‑audit tot eind‑zip, en belicht beslissingen die van invloed zijn op compatibiliteit, toegankelijkheid en privacy. De principes zijn toepasbaar, of je nu een dedicated authoring‑platform gebruikt of een algemeen‑doel converter zoals convertise.app voor formatnormalisatie vóór het inpakken.


1. Begrijpen van de structurele vereisten van SCORM

SCORM dicteert niet hoe je leermateriaal ontwerpt; het definieert een maphiërarchie en een klein aantal XML‑manifestbestanden die de LMS leest. Een SCORM‑1.2‑ of 2004‑pakket moet minimaal bevatten:

  • imsmanifest.xml – de kernbeschrijving die elke bron opsomt, de volgorde‑regels definieert en identifiers mappt naar bestands‑paden.
  • Resources‑map – alle media (afbeeldingen, audio, video) en documentbestanden die in het manifest worden gerefereerd.
  • HTML‑ingangspunt – een startpagina (vaak index.html) die de LMS laadt in een iframe.

Alle extra assets — PDF‑hand-outs, SCORM‑compatibele quizzen of JavaScript‑libraries — moeten in het manifest worden vermeld met de juiste <resource>‑tags. Ontbrekende of foutief genoemde entries veroorzaken dat de LMS het pakket afwijst of, nog erger, een gebroken leerervaring levert.


2. Bestaande assets inventariseren

Voordat je gaat converteren, maak je een inventaris van elk bestand dat onderdeel van de cursus wordt. Maak een spreadsheet met kolommen voor:

AssetHuidig formaatVoorgestelde gebruikVereiste transformatiesMetadata behouden?
Lectuur‑videoMOVInline‑videoConverteren naar MP4 (H.264)Ja (creatiedatum)
Slide‑deckPPTXHTML‑weergaveExporteren naar PDF → HTMLNee
VraagbankXLMSCORM‑QuizExporteren naar QTI‑XMLJa
Hand-outDOCDownload‑linkConverteren naar PDF/AJa

Deze tabel brengt twee kritieke vragen aan het licht:

  1. Welk formaat ondersteunt de LMS natively? De meeste moderne LMS‑systemen accepteren MP4 voor video, PDF voor documenten en HTML5 voor interactieve content.
  2. Welke metadata moet de conversie overleven? Voor compliance en analytics moet je mogelijk auteur, creatiedatum of versienummers behouden.

3. Media‑bestanden normaliseren

3.1 Video‑conversie

Video‑bestanden komen vaak voor als MOV, AVI of propriëtaire cameravormen. Een SCORM‑compatibele video moet MP4 zijn met H.264‑video en AAC‑audio op een bitrate die kwaliteit en bestandsgrootte balanceert (gewoonlijk 2–4 Mbps voor 720p, 5–6 Mbps voor 1080p). De conversiestappen zijn:

  1. Bronmetadata extraheren (bijv. ffprobe kan creatiedatum, fotograaf, GPS outputten). Bewaar dit in een side‑car JSON‑bestand om later opnieuw in te voegen.
  2. Transcoderen met two‑pass‑encoding om de doel‑bitrate te behalen en keyframe‑intervallen te behouden die aansluiten op interactieve timestamps.
  3. Lossless bijsnijden of draaien indien de bron zwarte balken of orientatie‑flags bevat.
  4. Behoudde metadata opnieuw embedden met tools als ffmpeg -metadata zodat de LMS ze kan weergeven in asset‑bibliotheken.

Mocht je privacy moeten waarborgen, verwijder dan alle ingebedde locatie‑data of gezichts‑herkenningstags vóór de definitieve zip.

3.2 Afbeeldingen en grafische conversie

Raster‑afbeeldingen moeten PNG zijn voor lossless graphics (iconen, UI‑screenshots) en JPEG voor foto’s. Bij het converteren van SVG‑diagrammen exporteer je naar PNG op 300 dpi als de LMS geen SVG direct kan renderen. Behoud kleurprofielen (sRGB) om onverwachte kleurverschuivingen op verschillende apparaten te voorkomen. De typische workflow:

  • Bron‑kleurenspace valideren met exiftool.
  • Converteren via imagemagick convert source.svg -density 300 -colorspace sRGB output.png.
  • Niet‑essentiële EXIF‑velden strippen om het bestand lichtgewicht te houden, terwijl attributie‑informatie behouden blijft.

4. Documenten omzetten naar webklare HTML

De meeste SCORM‑launch‑pagina’s rekenen op HTML5. In plaats van PDF’s direct te embedden, converteer je ze naar een reeks webpagina’s:

  1. Exporteren van PowerPoint of Word naar PDF met een tool die vector‑objecten intact houdt (bijv. “Opslaan als PDF” in Microsoft Office).
  2. OCR uitvoeren (optioneel). Als de PDF gescande pagina’s bevat, maakt OCR de tekst doorzoekbaar, wat toegankelijkheid verbetert.
  3. PDF naar HTML converteren met een converter die headings, tabellen en lijsten respecteert. Tools die een clean DOM produceren — zonder inline‑style blobs — maken integratie met SCORM‑tracking‑JavaScript eenvoudiger.
  4. ARIA‑landmarks injecteren handmatig of via een script dat de heading‑hiërarchie naar <section>‑tags mapt.
  5. HTML comprimeren met gzip op webserver‑niveau; de SCORM‑zip zelf blijft ongecomprimeerd omdat de LMS een platte directory verwacht.

Tijdens dit proces behoud je de originele document‑metadata (auteur, revisie) door <meta>‑tags toe te voegen in de <head> van elke pagina.


5. Interactieve beoordelingen bouwen

SCORM kan quizzen hosten die met HTML/JavaScript zijn gebouwd, maar veel organisaties hebben vraagbanken al in QTI, GIFT of propriëtaire Excel‑sheets. De conversieworkflow luidt:

  • Exporteer de originele vragenlijst naar een neutraal formaat zoals CSV of XML.
  • Map elke kolom naar de QTI‑elementhiërarchie (item, response, outcome). Simpele Python‑scripts kunnen deze mapping automatiseren.
  • Genereer de QTI‑XML‑bestanden en plaats ze onder een questions‑map.
  • Voeg een klein JavaScript‑wrapper toe dat QTI leest, de vraag weergeeft, de respons van de lerende vastlegt en het resultaat rapporteert aan de LMS via de SCORM‑API (meestal SetValue("cmi.score.raw", score)).

Als je geen eigen ontwikkel‑resources hebt, kun je een open‑source authoring engine zoals ADL X‑API gebruiken die QTI consumeert en de benodigde JavaScript‑shim uitspuugt.


6. Het manifest maken (imsmanifest.xml)

Het manifest is het hart van een SCORM‑pakket. Een minimaal maar robuust voorbeeld voor een enkele lesmodule ziet er zo uit:

<?xml version="1.0" encoding="UTF-8"?>
<manifest identifier="com.example.course1" version="1.2"
          xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
          xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2"
          xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_rootv1p2p1">
  <metadata>
    <schema>ADL SCORM</schema>
    <schemaversion>1.2</schemaversion>
  </metadata>
  <organizations default="ORG-1">
    <organization identifier="ORG-1" structure="hierarchical">
      <title>Course Title – Module 1</title>
      <item identifier="ITEM-1" identifierref="RES-INDEX">
        <title>Lesson Overview</title>
      </item>
    </organization>
  </organizations>
  <resources>
    <resource identifier="RES-INDEX" type="webcontent" adlcp:scormtype="sco" href="index.html">
      <file href="index.html"/>
      <file href="assets/video.mp4"/>
      <file href="assets/handout.pdf"/>
      <file href="questions/q1.xml"/>
    </resource>
  </resources>
</manifest>

Belangrijke punten:

  • adlcp:scormtype="sco" duidt een Sharable Content Object aan dat kan starten en rapporteren naar de LMS.
  • Elk fysiek bestand dat het SCORM‑object gebruikt, moet worden vermeld in een <file>‑element. Ontbrekende bestanden veroorzaken een “resource not found”‑fout tijdens runtime.
  • Gebruik menselijk leesbare identifiers (RES-INDEX, ITEM-1) om debugging te vereenvoudigen.

Bij meerdere lessen dupliceer je het <item>‑blok en verwijs je naar verschillende resources.


7. Het zip‑archief samenstellen

Zodra alle assets klaar zijn en het manifest gevalideerd is, maak je de zip met exact de mapstructuur die SCORM vereist:

my_course.zip
├─ imsmanifest.xml
├─ index.html
├─ assets/
│   ├─ video.mp4
│   ├─ handout.pdf
│   └─ diagram.png
└─ questions/
    └─ q1.xml

Belangrijk: Neem geen top‑level map op in de zip; de LMS verwacht het manifest in de root. Gebruik een command‑line tool die bestandstijdstempels behoudt (zip -X -r my_course.zip .). Bewaar de originele timestamps van bron‑assets; sommige LMS‑systemen tonen het lastModified‑attribuut aan de lerenden.


8. Het pakket valideren

Voordat je uploadt, laat je het pakket door een SCORM‑validator lopen, zoals ADL’s SCORM Test Suite of de open‑source Rustic SCORM Cloud. De validator controleert:

  • Manifest‑syntaxis en verplichte attributen.
  • Aanwezigheid van alle gerefereerde bestanden.
  • Conformiteit aan de gekozen SCORM‑versie (1.2 vs 2004).
  • Correcte API‑calls in de launch‑page (bijv. Initialize(), Terminate()).

Als de validator ontbrekende metadata meldt, ga dan terug naar de conversiestappen om de benodigde tags opnieuw te embedden.


9. De workflow automatiseren

Voor organisaties die tientallen cursussen moeten omzetten, worden handmatige stappen een bottleneck. Een bescheiden automatiseringspipeline kan met een scripttaal (Python of Bash) de volgende fasen orkestreren:

  1. Ontdekking – Scan een bronmap op nieuwe assets.
  2. Conversie – Roep ffmpeg, imagemagick en een PDF‑naar‑HTML‑service (bijv. de API van convertise.app) aan om gestandaardiseerde output te produceren.
  3. Metadata‑harvesting – Gebruik exiftool om auteur en datum te extraheren, schrijf vervolgens een metadata.json die later de manifest‑generatie informeert.
  4. Manifest‑generatie – Vul een Jinja2‑template met de lijst van bestanden en metadata.
  5. Packaging – Zip de map, voer de SCORM‑validator uit, en verplaats de zip naar een output‑bucket.

Door elke stap te loggen, creëer je tevens een audit‑trail — een vereiste voor veel gereguleerde sectoren.


10. Privacy‑ en veiligheidsaspecten

Ook al gebeurt de conversie lokaal of in een private cloud, hou rekening met het volgende:

  • GPS‑data strippen uit afbeeldingen en video met ffmpeg -metadata location=.
  • Verborgen tekstlagen verwijderen uit PDF’s die reviewer‑commentaren kunnen bevatten.
  • Het zip‑bestand versleutelen alleen als de LMS versleutelde SCORM‑uploads ondersteunt; anders sla je de zip op in een beveiligde repository en regel je toegang via IAM‑policy’s.
  • Audit‑logboeken — bewaar wie elke conversie heeft gestart en welke bronbestanden werden gebruikt. Dit helpt bij compliance‑vragen onder GDPR of HIPAA wanneer leergegevens persoonlijke identificatoren bevatten.

11. Veelvoorkomende valkuilen en hoe ze te vermijden

SymptomLikely CauseRemedy
LMS wijst pakket af met “Manifest not found”Zip bevat een extra top‑level mapZip de inhoud direct op root‑niveau
Video speelt maar audio ontbreektAudio‑codec niet ondersteund (bijv. PCM)Re‑encode audio naar AAC, 128 kbps
Quiz‑scores worden niet gerapporteerdJavaScript roept SetValue niet aan vóór TerminateZorg dat de SCORM‑API wrapper de data schrijft vóór pagina‑unload
Hand‑out PDF opent blanco in LMS‑viewerPDF gebruikt een nieuwere compressiemethode die de viewer niet ondersteuntConverteer naar PDF/A‑1b voor maximale compatibiliteit

Vroegtijdig deze issues aanpakken bespaart test‑cyclustijd.


12. Praktisch voorbeeld: Van legacy‑trainingsmateriaal naar SCORM

Scenario: Een productiebedrijf beschikt over een legacy‑trainingsbibliotheek met PowerPoint‑decks (PPTX), instructievideo’s opgenomen in WMV en PDF‑hand‑outs. Het doel is de content via een LMS te leveren die alleen SCORM 2004 accepteert.

Stappen die werden genomen:

  1. Asset‑audit identificeerde 45 PPTX‑bestanden, 30 WMV‑video’s en 60 PDF‑s.
  2. Video‑conversie via een batch‑script: ffmpeg -i "$in" -c:v libx264 -crf 22 -c:a aac -b:a 128k "${in%.*}.mp4".
  3. Slide‑decks werden geëxporteerd naar PDF via PowerPoint’s CLI, daarna naar HTML omgezet met pandoc en de --standalone‑flag, waardoor tabellen en lijststructuren behouden blijven.
  4. Metadata werd verzameld met exiftool en ingevoegd als <meta>‑tags in de <head> van elke HTML‑pagina.
  5. Quiz‑creatie maakte gebruik van een bestaande CSV met meerkeuzevragen, die met een kort Python‑script naar QTI werd getransformeerd.
  6. Manifest‑generatie gebruikte een Jinja2‑template die over de asset‑CSV itereerde en automatisch identifiers toekende.
  7. Validatie via SCORM Cloud ving twee ontbrekende afbeeldingsreferenties aan; de missende bestanden werden toegevoegd aan de zip.
  8. Levering — de uiteindelijke 1,3 GB (gecomprimeerd) zip werd geüpload naar de LMS en doorstond de compliance‑test van de leverancier.

Het project verminderde de handmatige authoring‑tijd met 70 % en garandeerde een consistente leerervaring over alle modules heen.


13. Samenvatting van best practices

  1. Eerst audit — een duidelijke spreadsheet voorkomt ontbrekende assets.
  2. Media normaliseren naar breed ondersteunde formaten (MP4, JPEG/PNG, PDF/A).
  3. Essentiële metadata behouden door vóór conversie te extraheren en daarna weer in te embedden.
  4. Een schoon, gevalideerd manifest genereren; beschouw het als code — lint het.
  5. Packageren zonder extra mappen en originele timestamps behouden.
  6. Vroeg valideren met een SCORM‑test‑suite om structurele fouten te vangen.
  7. De pipeline automatiseren wanneer volume het rechtvaardigt; logs behouden voor auditability.
  8. Privacy‑gevoelige data scrapen tijdens conversie, vooral uit afbeeldingen en video‑metadata.

Door deze stappen te volgen, kun je een heterogene collectie leermaterialen omzetten naar één standaarden‑compliant SCORM‑pakket dat betrouwbaar functioneert op verschillende LMS‑platformen, terwijl kwaliteit, toegankelijkheid en privacy gewaarborgd blijven.


De hier beschreven technieken zijn platform‑onafhankelijk; ze kunnen worden gecombineerd met cloud‑gebaseerde converters zoals convertise.app voor snelle, privacy‑gerichte formatnormalisatie vóór het samenstellen van de SCORM‑zip.