skool-downloader
v1.0.0
Published
CLI tool that creates offline backups of Skool.com courses, including video, assets, and attachments.
Maintainers
Readme
🎓 Skool Downloader
A robust, platform-independent CLI tool to create local, offline backups of your Skool.com courses.
This tool downloads video content, localizes images, preserves course attachments, and generates a navigable, styled HTML structure that mirrors the online classroom.
✨ Features
- 🚀 Smart Binary Management: Automatically downloads the correct
yt-dlpandffmpegbinaries for your OS (Windows, macOS, Linux) and architecture (Intel, Apple Silicon ARM, Linux ARM). - 📹 High-Quality Video: Downloads the highest available quality and applies
+faststartfor instant browser playback. - 📄 Asset Localization: Downloads all lesson images locally and rewrites HTML paths for true offline 100% viewing.
- 📎 Resource Preservation: Automatically fetches course attachments (PDFs, DOCX, etc.) via Skool's API.
- 🎯 Single Lesson Mode: Download a whole course or just a single lesson using a specific URL.
- 🛠 Interrupted Download Recovery: Skips already downloaded files and includes a tool to regenerate the index page.
🛠 Prerequisites
Note: No system-wide installation of yt-dlp or ffmpeg is required. The tool manages these locally in the bin/ folder.
🚀 Getting Started
1. Installation
git clone https://github.com/balmasi/skool-downloader.git
cd skool-downloader
npm install2. Authentication
Skool uses secure authentication. This tool uses a manual login flow to capture your session safely.
npm run loginA browser window will open. Log in to your Skool account. Once you see your dashboard, the script will save your session and close the browser.
3. Using NPX
Once published to npm under the skool-downloader package name (e.g., npm publish --access public), npx skool-downloader will directly run the CLI without installing anything locally. Until then, npx can still execute the repo via npx github:balmasi/skool-downloader or by pointing at another GitHub fork. Either way, the executable is registered as skool-downloader, so npx skool-downloader will remain the canonical command.
If you prefer to stay completely local (and allow offline development), run npm install once and use npm run skool as shown below.
3. Downloading a Course
To download an entire classroom:
npm run skool https://www.skool.com/your-community/classroom/course-idTo download all courses in a community classroom:
npm run skool https://www.skool.com/your-community/classroomTo download multiple courses interactively:
npm run skoolThen choose Download multiple courses and select the courses you want.
You can also run npx skool-downloader to enter the same interactive menu once the package is published.
To download only a single lesson:
npm run skool "https://www.skool.com/your-community/classroom/course-id?md=lesson-id"📁 Output Structure
The tool creates a downloads/ folder with the following structure:
downloads/
└── Community Name/
└── Course Name/
├── index.html (Master navigation page)
└── 1-Module Name/
├── 1-Lesson Title/
│ ├── index.html (The lesson page)
│ ├── video.mp4
│ ├── assets/ (Localized images)
│ └── resources/ (Attachments)
└── ...🔧 Advanced
Regenerating the Index
If you manually move files or skip lessons, you can regenerate the master index.html file based on the current contents of your downloads/ folder:
npm run regenerate-index🛡 Disclaimer
This tool is for personal backup and offline viewing purposes only. Please respect the content creators' terms of service and intellectual property rights. Do not distribute downloaded content without permission.
📄 License
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) license. See LICENSE for the full legal code.
