A Go utility to automatically scrape and download Loom and YouTube videos from Skool.com classrooms.
Caution
This tool is provided for educational and legitimate purposes only.
Use this tool only to download content you have the right to access. Please respect copyright laws and terms of service:
- Only download videos you have permission to save
- Do not bypass paywalls or access unauthorized content
- Respect the terms of service of both Skool.com and Loom.com
- The developers accept no liability for misuse
- Scrapes Loom and YouTube video links from Skool.com classroom pages
- Authentication via email/password or cookies
- Supports JSON and Netscape cookies.txt formats
- Downloads videos using yt-dlp with proper authentication
- Automatically detects and normalizes video URLs
- Configurable page loading wait time
- Toggleable headless mode for debugging
- Auto-detects any installed Chromium-based browser
- Install yt-dlp
- Download the latest release from the Releases page
- Choose the appropriate binary for your platform:
- Linux (x64):
skool-downloader-linux-amd64 - Linux (ARM64):
skool-downloader-linux-arm64 - Windows (x64):
skool-downloader-windows-amd64.exe - Windows (ARM64):
skool-downloader-windows-arm64.exe - macOS (Intel):
skool-downloader-darwin-amd64 - macOS (Apple Silicon):
skool-downloader-darwin-arm64
- Linux (x64):
- Make it executable (Linux/macOS):
chmod +x skool-downloader-*
Note
Older versions were called skool-loom-dl bfore release v2.0.0
# Clone the repository
git clone https://github.com/fx64b/skool-downloader
cd skool-downloader
# Build the executable
go build# Recommended: Using email/password for authentication
./skool-downloader -url="https://skool.com/yourschool/classroom/your-classroom" -email="your@email.com" -password="yourpassword"
# Alternative: Using cookies for authentication
./skool-downloader -url="https://skool.com/yourschool/classroom/your-classroom" -cookies="cookies.json"-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 (default: "downloads")
-wait Page load wait time in seconds (default: 2)
-headless Run browser headless (default: true, set false for debugging)
-browser Path or command of a Chromium-based browser (auto-detected if not set)
The tool requires a Chromium-based browser. On startup it searches for a supported Chromium-based browser automatically: Unfortunatelly Safari and Firefox cannot be supported as of now.
| Platform | Detection order |
|---|---|
| Windows | msedge, chrome, chromium (PATH) → Edge default install |
| macOS | Chrome → Chromium → Edge → Brave (/Applications/) |
| Linux | chromium-browser → chromium → google-chrome → microsoft-edge → brave-browser (PATH) |
The first browser found is used. To pick a specific browser, or if auto-detection fails, use -browser:
# Absolute path
./skool-downloader -url="..." -email="..." -password="..." -browser="/usr/bin/chromium"
# Command available in PATH (Linux/macOS)
./skool-downloader -url="..." -email="..." -password="..." -browser="brave-browser"
# Windows example
skool-downloader.exe -url="..." -email="..." -password="..." -browser="C:\Program Files\Google\Chrome\Application\chrome.exe"Note
Only Chromium-based browsers are supported (Chrome, Chromium, Edge, Brave). Safari and Firefox are not supported.
Email/Password (Recommended)
./skool-downloader -url="https://skool.com/yourschool/classroom/path" -email="your@email.com" -password="yourpassword"Cookies (Alternative)
./skool-downloader -url="https://skool.com/yourschool/classroom/path" -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.
If you choose to use cookies instead of email/password:
- Install a browser extension like "Cookie-Editor" (Chrome) or "Cookie Quick Manager" (Firefox)
- Log in to your Skool.com account
- Export cookies as JSON or Netscape format
- Save the file and use it with the
-cookiesparameter
- No videos found: Verify your authentication and classroom URL
- Authentication fails: Use email/password instead of cookies
- Page loads incomplete: Increase wait time with
-wait=5or higher - Download errors: Update yt-dlp (
pip install -U yt-dlp) - Login issues: Try
-headless=falseto see the browser and debug - Specific video errors: Check if the video is still available on Loom
- No browser found: Install Edge, Chrome, Chromium, or Brave — or point to an existing one with
-browser=/path/to/browser - Wrong browser launched: Override auto-detection with
-browser=to pick the exact executable you want
This project includes comprehensive unit and integration tests.
Run unit tests with coverage:
# Run all tests
go test -v ./...
# Run tests with coverage
go test -v -coverprofile=coverage.out -covermode=atomic ./...
# View coverage report
go tool cover -func=coverage.out
# Generate HTML coverage report
go tool cover -html=coverage.out -o coverage.htmlThe unit tests cover:
- Loom URL extraction from HTML (share and embed URLs)
- Cookie parsing (JSON and Netscape formats)
- Cookie format conversion
- Utility functions
Run Docker-based integration tests to verify the full application with yt-dlp:
# Make the script executable (first time only)
chmod +x test-integration.sh
# Run integration tests
./test-integration.shThe integration tests verify:
- Docker image builds successfully
- Binary is executable in the container
- yt-dlp is installed and functional
- Chromium is available
- ffmpeg is available
- Proper error handling
The project uses GitHub Actions for automated testing:
-
Lint and Build (
lint-and-build.yml): Runs on every push and PR- Lints code with golangci-lint
- Builds the project
- Runs unit tests with coverage reporting
-
Docker Integration Tests (
docker-integration-test.yml): Runs on every push and PR- Builds the Docker image
- Runs integration tests in a containerized environment
Contributions are welcome! Please feel free to submit a Pull Request.
- Write tests for new functionality
- Ensure all tests pass before submitting PR
- Run linter:
golangci-lint run ./... - Maintain or improve code coverage
- Update documentation as needed
To create a new release with cross-platform binaries:
- Go to the Actions tab
- Select "Build and Release" workflow
- Click "Run workflow"
- Enter the desired version (e.g.,
v1.0.0) - Click "Run workflow"
The workflow will automatically:
- Build binaries for all supported platforms
- Create a new GitHub release
- Attach all binaries to the release
This project is licensed under the MIT License - see the LICENSE file for details.
