Skip to content

CLI tool to download online courses for offline access. Saves video content and lesson text as Markdown files, organized by module structure.

License

Notifications You must be signed in to change notification settings

sebastian-software/offcourse

Repository files navigation

Offcourse

npm version npm downloads license node codecov CI

Download online courses for offline access – of course! 📚

→ View Documentation & Homepage

Quick Start

# Install
npm install -g offcourse

# Download a course
offcourse sync <course-url>

# Or run without installing
npx offcourse sync <course-url>

Requires Node.js 22+ and ffmpeg for HLS videos.

Supported Platforms

Platform URL Pattern
Skool skool.com/community/classroom
HighLevel member.*.com/courses/...
LearningSuite *.learningsuite.io/student/...

Key Commands

# Sync a course (auto-detects platform)
offcourse sync <url>

# Sync with options
offcourse sync <url> --skip-videos      # Text only
offcourse sync <url> --dry-run          # Preview
offcourse sync <url> --limit 5          # Test with 5 lessons

# Unlock sequential content (LearningSuite)
offcourse complete <url>

# Configuration (optional)
offcourse config set outputDir ~/Courses  # Default: current directory
offcourse config set videoQuality 720p    # Default: highest
offcourse config set concurrency 4        # Parallel browser tabs (1-8)

Performance

Both course scanning and content extraction run in parallel using multiple browser tabs (default: 4). This speeds up the entire process significantly compared to sequential processing. All tabs share the same authenticated session.

Development

git clone https://github.com/sebastian-software/offcourse.git
cd offcourse
npm install
npm run build
npm link  # optional: link globally

Commands

npm run dev        # Watch mode
npm run lint       # ESLint
npm run typecheck  # TypeScript
npm test           # Tests
npm run release    # Release to npm

Adding a New Platform

  1. Create src/scraper/newplatform/ with:
    • auth.ts – Session detection
    • navigator.ts – Course structure
    • extractor.ts – Content extraction
    • schemas.ts – Zod schemas
  2. Add CLI command in src/cli/commands/
  3. Register in src/cli/index.ts

Acknowledgments

Thanks to Sindre Sorhus for the excellent packages powering this project: slugify, conf, delay, execa, ky, p-queue, p-retry.

License

MIT

About

CLI tool to download online courses for offline access. Saves video content and lesson text as Markdown files, organized by module structure.

Resources

License

Stars

Watchers

Forks

Packages

No packages published