Automates downloading weekly Jupyter notebooks from a Great Learning course, converting them to clean .py scripts, and generating .md summaries. Run it manually any time — it detects and processes any Thursday release that has not been handled yet.
- Reads
config/schedule.yamlto find the most recent unprocessed Thursday release. - Opens a real (non-headless) Chromium browser using your saved session.
- Navigates to your course page, locates the notebook for that week, and downloads it.
- Converts the
.ipynbto a clean Python script (no cell markers, no magic commands). - Generates a Markdown summary with an overview, per-cell walkthrough, and TODO exercises.
- Records the week as processed so it is never downloaded again.
greatlearning-agent/
config/
schedule.yaml # course release schedule — edit to match your program
data/
auth/ # Playwright session (gitignored — created by login_once.py)
downloads/raw_ipynb/ # raw .ipynb files downloaded from the course
scripts/py/ # converted .py scripts ← OUTPUT
summaries/ # generated .md summaries ← OUTPUT
logs/ # debug screenshots and HTML dumps
state/
processed.json # tracks which weeks have been processed
src/
run_release_check.py # main entry point
login_once.py # one-time login to save a browser session
config.py
auth.py
discovery.py
downloader.py
converter.py
analyzer.py
state_manager.py
utils.py
Output files land in:
| Type | Path | Naming convention |
|---|---|---|
| Raw notebook | data/downloads/raw_ipynb/ |
original filename from course |
| Python script | data/scripts/py/ |
YYYY-MM-DD_week<N>_<topic-slug>.py |
| MD summary | data/summaries/ |
YYYY-MM-DD_week<N>_<topic-slug>.md |
- Python 3.12
- A Great Learning account with access to the course
- macOS (tested) or Linux
git clone https://github.com/YOUR_USERNAME/greatlearning-agent.git
cd greatlearning-agent
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
playwright install chromiumCreate a file named .env in the project root:
COURSE_URL=https://olympus.mygreatlearning.com/courses/XXXXX?th=YYYY&pb_id=ZZZZ
How to find your URL:
- Log into olympus.mygreatlearning.com.
- Open your course (e.g. "Certificate Program in Agentic AI").
- Copy the full URL from the browser address bar. It looks like:
Paste that exact URL as the value of
https://olympus.mygreatlearning.com/courses/148723?th=dpep&pb_id=20415COURSE_URL.
The file ships with the April 2026 Agentic AI cohort schedule. If your cohort has different dates, edit the release_date fields (format: YYYY-MM-DD) to match your Thursdays. Mark break weeks with break: true and project weeks that share a date with a content week with skip: true.
source .venv/bin/activate
python src/login_once.pyA browser window opens. Log in with your Great Learning credentials. Once redirected away from the login page the session is saved automatically to data/auth/storage_state.json. You will not need to do this again unless the session expires (typically after a few weeks).
source .venv/bin/activate
python src/run_release_check.pyRun this any day. The script finds the most recent Thursday release that has not been processed yet, downloads it, and writes the outputs. If everything is up to date it exits immediately with a log message.
If you see Session expired — redirected to login, re-run the login step:
python src/login_once.pyPython script (data/scripts/py/2026-04-22_week2_prompt-engineering-fundamentals.py):
- Plain
.pywith no# %%cell markers, no%/!magic lines - Header block with source title, week number, and download timestamp
- TODO exercises preserved verbatim
Markdown summary (data/summaries/2026-04-22_week2_prompt-engineering-fundamentals.md):
- Overview and learning objectives
- Per-cell walkthrough table
- List of TODO exercises with line references
- Required pip packages
- VS Code run instructions
| Symptom | Fix |
|---|---|
| Browser opens and immediately closes | Session file is missing — run python src/login_once.py |
No release scheduled for today |
No unprocessed Thursday found — check data/state/processed.json and config/schedule.yaml |
| Notebook not found on course page | Content may not be released yet; re-run after the Thursday release time |
403 or page blocked |
The script uses a real (non-headless) browser with a genuine user-agent — this should not happen normally |