Anthropic Skilljar Course Extractor
Step 1: Run the Extraction Script
python3 scripts/extract_course.py \
<skilljar_url> <output_dir>
This produces:
<course-slug>/
├── README.md
├── 01-<section>/
│ ├── 01-<lesson>.md
│ └── ...
└── assets/images/ ← downloaded .webp diagrams
Step 2: Describe Diagrams
For each full-size .webp in assets/images/ (not -medium.webp):
- Use the
Readtool to view it visually - Add a detailed alt-text block and embed with
in the relevant lesson markdown
Assign images to lessons based on topic — architecture diagrams go in intro lessons, code screenshots in hands-on lessons, summary slides in review lessons.
Step 3: Enrich Lesson Markdown
The script embeds bullet-point notes. Expand each lesson file:
- Add proper
##headings per concept - Format code examples in fenced code blocks with language tags
- Convert "Key: value" lines to
**Key:** valuebold format - Add tables for comparisons (e.g., message types, primitives)
- Keep the frontmatter block (Section, URL, Lesson Type)
Step 4: Enhance README
Add to the auto-generated README:
- Full course description paragraph
- Key concepts reference table
- Quick-reference code snippets
- Diagram index with one-line descriptions per image
How the Script Works (for debugging)
- Fetches page HTML; extracts
window.__chatData(LLM notes embedded in every Skilljar page) - Parses sidebar
<ul class="dp-curriculum">for section/lesson structure - Downloads CloudFront images from
d7juhi4i8fsw0.cloudfront.net/images/<slug>/ - Deduplicates lessons by URL (curriculum HTML appears twice in page source)
- Fuzzy-matches notes to lessons by title similarity
If Login Is Required
Individual lesson pages always require auth — do not fetch them. If the course landing page itself requires login (script finds 0 lessons):
- Ask user to save the page HTML (browser → Save As → Webpage, HTML Only)
- Modify script's
fetch()toopen(path).read()and pass the local file