SN-Skipera
Auto-complete ServiceNow NowLearning course videos via browser automation.
Opens your Firefox/Zen browser (with your existing Okta session), plays each course video to completion, and moves to the next item. Handles SSO re-authentication automatically.
What it does
- Videos — Detects
<video-js>Brightcove players, seeks to the last 15 seconds, plays to end, waits 5s for server confirmation. - Knowledge checks — Same video-based approach (these are also video items).
- Quizzes — If you provide a Gemini API key, the tool can answer quiz questions automatically via
--gemini-key. - Labs — Lab exercises are not automated (hands-on instance work). The tool skips non-video items gracefully.
Items are completed sequentially (prerequisite-locked items unlock automatically as earlier items finish).
Prerequisites
- Python 3.10+
- Firefox (or Zen Browser, any Firefox-based browser)
- geckodriver — Download and place in your
PATH - An active Okta session in your browser profile — You must be logged into
learning.servicenow.comvia Okta in your browser before running the tool. The tool reuses your existing session; it does not handle login from scratch.
Install
From GitHub:
pip install git+https://github.com/YOUR_USER/sn-skipera.git
# Or with uv:
uv tool install git+https://github.com/YOUR_USER/sn-skipera.git
From source:
git clone https://github.com/YOUR_USER/sn-skipera.git
cd sn-skipera
uv tool install .
Usage
Quick start
sn-skipera "https://learning.servicenow.com/lxp/en/pages/learning-course?id=learning_course&course_id=..." --browser
- Copy the full course URL from your browser's address bar.
- Run the command above.
- The tool opens your browser, navigates to the course, and starts completing items one by one.
Headless mode (no visible window)
sn-skipera "COURSE_URL" --browser --headless
Answer quizzes with Gemini
# Save your API key once:
sn-skipera --set-gemini-key
# Then run normally — quizzes are answered automatically:
sn-skipera "COURSE_URL" --browser
Or pass the key each time:
sn-skipera "COURSE_URL" --browser --gemini-key "YOUR_KEY"
Or set GEMINI_API_KEY environment variable.
Specify a browser profile
sn-skipera "COURSE_URL" --browser --profile /path/to/profile
Or set SN_PROFILE_PATH environment variable.
Debug mode
sn-skipera "COURSE_URL" --browser --debug
Saves page source and state dumps to ~/.sn-skipera/ for troubleshooting.
Configuration
| Environment variable | Purpose |
|---|---|
SN_BROWSER_BINARY |
Path to Firefox/Zen browser binary |
SN_GECKODRIVER_PATH |
Path to geckodriver executable |
SN_PROFILE_PATH |
Path to browser profile directory |
GEMINI_API_KEY |
Gemini API key for quiz answering |
How it works
- Launches Firefox/Zen with your browser profile (preserves Okta SSO session).
- Loads the course page and extracts all items from the Angular scope.
- For each incomplete item:
- If it's a video: seeks to
duration - 15s, plays muted to the end, waits 5s. - If it's a quiz and Gemini key is available: scrapes questions, calls Gemini API, clicks answers, submits.
- Otherwise: skipped (labs, etc.).
- If it's a video: seeks to
- Refreshes the course page to unlock subsequent items.
- Repeats until all items are complete.
Limitations
- Labs are not automated. The tool skips lab items (they require hands-on interaction in a ServiceNow instance).
- Only works with ServiceNow NowLearning (
learning.servicenow.com). - You must be logged in via Okta before running. The tool reuses your existing session.
- Quiz support is experimental. Works best with multiple-choice and true/false questions.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sn_skipera-1.0.1.tar.gz.
File metadata
- Download URL: sn_skipera-1.0.1.tar.gz
- Upload date:
- Size: 24.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7f2dee2ea4980680799c2c11d93ae6aba535ded9c9e40d889ac5bb6e73abf00
|
|
| MD5 |
7da6c295633919d70f8f2b26df41f4c1
|
|
| BLAKE2b-256 |
deeb6a81d6ff41617b560031f850be72464244a5ba9955c9414cd1f99edd15bb
|
Provenance
The following attestation bundles were made for sn_skipera-1.0.1.tar.gz:
Publisher:
publish.yml on medakshchoudhary/sn-skipera
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sn_skipera-1.0.1.tar.gz -
Subject digest:
d7f2dee2ea4980680799c2c11d93ae6aba535ded9c9e40d889ac5bb6e73abf00 - Sigstore transparency entry: 2216918326
- Sigstore integration time:
-
Permalink:
medakshchoudhary/sn-skipera@aeb1fe9eb4dc1bd6b956322145b1f6dbab32b738 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/medakshchoudhary
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@aeb1fe9eb4dc1bd6b956322145b1f6dbab32b738 -
Trigger Event:
push
-
Statement type:
File details
Details for the file sn_skipera-1.0.1-py3-none-any.whl.
File metadata
- Download URL: sn_skipera-1.0.1-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e27caf6f1a47eb91cdd82d6d1b20bccfdd2a6f2a8a0c3e2a79da3e46c66ef996
|
|
| MD5 |
1a94b6ea2b3a03a0e75f4d67abdf85ad
|
|
| BLAKE2b-256 |
226785a811ac9fa45a6f5895a68f6b6c3a2619d6502b2aa8256bb058cc22ae3f
|
Provenance
The following attestation bundles were made for sn_skipera-1.0.1-py3-none-any.whl:
Publisher:
publish.yml on medakshchoudhary/sn-skipera
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sn_skipera-1.0.1-py3-none-any.whl -
Subject digest:
e27caf6f1a47eb91cdd82d6d1b20bccfdd2a6f2a8a0c3e2a79da3e46c66ef996 - Sigstore transparency entry: 2216918348
- Sigstore integration time:
-
Permalink:
medakshchoudhary/sn-skipera@aeb1fe9eb4dc1bd6b956322145b1f6dbab32b738 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/medakshchoudhary
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@aeb1fe9eb4dc1bd6b956322145b1f6dbab32b738 -
Trigger Event:
push
-
Statement type: