
Tired of the technical setup? I'm building a hosted solution that makes downloading Skool videos effortless - no installation, no command line, just simple one-click downloads.
Join the WaitlistWhat you'll get with the hosted solution:
Simple browser extension that adds a download button to every Skool video.
Download entire modules or courses at once with Pro. Save hours of time.
Dashboard to track all your downloads, manage storage, and more.
The Skool Downloader is a Go-based CLI utility that I wrote over the weekend. I was about to leave a Skool community and wanted to download my favorite courses before leaving. I couldn't figure out a simple way to download them manually, so I decided to vibe code this tool to automate the process. In simple terms, it scrapes a Skool classroom page, based on the provided URL, and downloads all Loom and YouTube videos from that page.
Version 2.0.0 represents a major upgrade with several important changes:
skool-loom-dl to skool-downloader to reflect broader video supportskool-downloader-linux-amd64skool-downloader-linux-arm64skool-downloader-windows-amd64.exeskool-downloader-windows-arm64.exeskool-downloader-darwin-amd64skool-downloader-darwin-arm64chmod +x skool-downloader-*Note: Older versions were called
skool-loom-dlbefore release v2.0.0
Bash1git clone https://github.com/fx64b/skool-downloader 2cd skool-downloader 3 4go build
Recommended: Using email/password for authentication
Bash./skool-downloader -url="https://skool.com/yourschool/classroom/your-classroom" -email="your@email.com" -password="yourpassword"
Alternative: Using cookies for authentication
Bash./skool-downloader -url="https://skool.com/yourschool/classroom/your-classroom" -cookies="cookies.json"
Note: Email/password authentication is more reliable as it handles session management automatically. Cookie-based authentication may fail if cookies expire or are invalid.
| Option | Description | Default |
|---|---|---|
-url | URL of the skool.com classroom page | (required) |
-email | Email for Skool login (recommended auth method) | - |
-password | Password for Skool login (used with email) | - |
-cookies | Path to cookies file (alternative to email/password) | - |
-output | Directory to save videos | downloads |
-wait | Page load wait time in seconds | 2 |
-headless | Run browser headless (set to false for debugging) | true |
Run the tool in a containerized environment with all dependencies included:
Bash1# Build image 2docker build -t skool-downloader . 3 4# Run container with email/password authentication 5docker run -v $(pwd)/downloads:/data skool-downloader \ 6 -url="https://skool.com/yourschool/classroom/path" \ 7 -email="your@email.com" \ 8 -password="yourpassword" 9 10# Run with cookies file 11docker run -v $(pwd)/downloads:/data -v $(pwd)/cookies.json:/cookies.json skool-downloader \ 12 -url="https://skool.com/yourschool/classroom/path" \ 13 -cookies="/cookies.json"
The Docker image includes:
If you choose to use cookies instead of email/password:
-cookies parameter-wait=5 or higherpip install -U yt-dlp)-headless=false to see the browser and debugContributions are welcome! Please feel free to submit a Pull Request.
This project includes comprehensive unit and integration tests.
Run unit tests with coverage:
Bash1# Run all tests 2go test -v ./... 3 4# Run tests with coverage 5go test -v -coverprofile=coverage.out -covermode=atomic ./... 6 7# View coverage report 8go tool cover -func=coverage.out
The unit tests cover:
Run Docker-based integration tests to verify the full application with yt-dlp:
Bash1# Make the script executable (first time only) 2chmod +x test-integration.sh 3 4# Run integration tests 5./test-integration.sh
The integration tests verify:
The project uses GitHub Actions for automated testing:
Lint and Build (lint-and-build.yml): Runs on every push and PR
Docker Integration Tests (docker-integration-test.yml): Runs on every push and PR
To create a new release with cross-platform binaries:
v2.0.0)The workflow will automatically:
This project is licensed under the MIT License - see the LICENSE file for details.