xAPI Integrator for SLS Interactive Response Question "Scorable" HTML5
Upload an interactive ZIP (must contain index.html). This static tool will inject the working xAPI
libraries and wiring in-browser, then give you a ready-to-upload ZIP. No server required.
Upload
Drag and drop your ZIP file here
or
Browse Files
The resulting ZIP will keep index.html at the root of the content folder and add
lib/xapiwrapper.min.js + lib/xAPI.js. CSP-blocked GA/AdSense scripts will be removed
by default (unless you check "Keep Google Analytics/AdSense scripts" below).
Mode
Timeline (adds generic action logging +
fallback "Save to SLS" button)
Quiz (comprehensive quiz analytics with question
tracking)
Minimal (only injects xAPI libs and a basic save
helper)
Experimental AI (generate custom xAPI wiring using your own
API key)
Timeline mode: Tracks button clicks, select changes, canvas drags, and auto-saves on Pause.
Adds a floating "Save to SLS" button.
Quiz mode: Specialized for quizzes/assessments. Tracks each question attempt, answer
selections, time per question, navigation patterns, and calculates scores. Provides detailed student performance
analytics.
Minimal mode: Only injects xAPI libraries without additional tracking.
Experimental AI: Uses your own AI API key at integration-time (not in SLS) to generate a custom
JavaScript snippet that can hook up your variables and scoring rules.
🤖 AI-Powered Auto-Fix (Experimental)
NEW: AI automatically diagnoses issues in your content and generates fixes!
This mode calls an OpenAI-compatible chat completion API from your browser while generating the
ZIP.
Your API key is used only client-side and is not written into the exported ZIP or sent to SLS.
✨ AI Diagnostics Features:
Detects missing score tracking
Finds broken feedback displays
Identifies missing event handlers
Auto-generates fix code
Explains what it fixed
API key:
Model:
Default (OpenAI) - gpt-4.1-mini
Gemini 3 Pro
ChatGPT 5.1
Claude 4.5 Sonnet
Custom (enter manually below)
Custom model ID:
Used only when "Custom" is selected above.
Author instructions to AI:
This is experimental. Please review the generated snippet inside your integrated index.html before
deploying to production SLS.
Options
Open in New Tab (Launch activity in a popup, keep SLS connection in parent)
Keep Google Analytics/AdSense scripts (do not remove CSP-blocked scripts)
Keep Google Analytics: By default, CSP-blocked scripts (GA, AdSense) are removed. Check to keep
them.
Open in New Tab: Creates a launcher page. When clicked, the activity opens in a new tab/window
but sends data back to the original tab to communicate with SLS.
How it works (expand)
Unzips your upload entirely in the browser (JSZip)
Finds the folder containing index.html (root, single subfolder, or shallow search)
Removes CSP-blocked GA/AdSense scripts
Injects and
into your content’s head if missing
(This page itself loads vendor files from ./vendor/*.js)
Optionally injects a small instrumentation snippet (Timeline mode)
Adds vendored xAPI libs into lib/ in the ZIP
Re-zips and offers a download
Note: To load vendor libraries, this page should be served over HTTP(S). Opening via file:// may
block fetch of local vendor files.
Requirements from SLS:
Launch URL must include: endpoint, auth, agent (or
actor), stateId, activityId
auth is Base64 of key:secret; the library prepends “Basic ” automatically
agent/actor must be URL-encoded JSON (e.g.,
encodeURIComponent(JSON.stringify({ mbox: "mailto:student@example.com" })))
If these parameters are not present at launch, xAPI calls will be
skipped by the integrated app.