Skip to content

Instantly share code, notes, and snippets.

@devinschumacher
Last active November 28, 2025 08:47
Show Gist options
  • Select an option

  • Save devinschumacher/e662f0ee7cad29ab384ffddf18754653 to your computer and use it in GitHub Desktop.

Select an option

Save devinschumacher/e662f0ee7cad29ab384ffddf18754653 to your computer and use it in GitHub Desktop.

🛠️ How to Download Skool Videos Using yt-dlp and a Signed .m3u8 URL

If you’ve ever tried downloading videos hosted on Skool.com, you’ve probably run into access errors or 403s. That’s because Skool streams video using tokenized .m3u8 manifests over CDN infrastructure — specifically Fastly — with strict header and token checks.

This guide walks you through the exact working method to download those videos using yt-dlp, the modern replacement for youtube-dl.


✅ Requirements

To follow along, you'll need:

  • yt-dlp installed
    (via brew install yt-dlp or pip install -U yt-dlp)
  • A valid .m3u8 link with a signature token (see below)
  • Basic shell access (macOS, Linux, WSL, or terminal)

🔍 Step 1: Find the .m3u8 URL

  1. Open the video on Skool in your browser.
  2. Right-click and select Inspect to open Developer Tools.
  3. Go to the Network tab.
  4. Filter by m3u8.
  5. Look for a request to manifest-gcp-us-east1-vop1.fastly.video.skool.com/.../rendition.m3u8?...
  6. Right-click the .m3u8 request → Copy as cURL.
  7. Extract just the full .m3u8 URL with the ?signature=... token at the end.

📥 Step 2: Download Using yt-dlp

Once you have the full .m3u8 URL, run:

yt-dlp \
  --add-header "Referer: https://www.skool.com/" \
  --add-header "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36" \
  --output "~/Desktop/skool-video.%(ext)s" \
  "https://manifest-gcp-us-east1-vop1.fastly.video.skool.com/.../rendition.m3u8?cdn=...&signature=..."

💡 Make sure to paste the full signed URL from DevTools. If the token is expired (expires=...), refresh the page and grab a new one.

⸻

📄 What’s Happening Behind the Scenes?

Skool’s video URLs:
	•	Are CDN-hosted by Fastly
	•	Require a signed query string (signature=...)
	•	Enforce referer and user-agent headers
	•	Expire based on a Unix timestamp (expires=...)

yt-dlp can:
	•	Parse .m3u8 manifests
	•	Download all .ts segments
	•	Merge them automatically into .mp4

⸻

🧪 Optional Bash Script

Save the following as skool-dl.sh:

#!/bin/bash
# Usage: ./skool-dl.sh <signed .m3u8 URL>

yt-dlp \
  --add-header "Referer: https://www.skool.com/" \
  --add-header "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36" \
  --output "$HOME/Desktop/skool-video.%(ext)s" \
  "$1"

Make it executable:

chmod +x skool-dl.sh

Then run:

./skool-dl.sh "https://manifest-gcp-us-east1-...rendition.m3u8?...&signature=..."


⸻

🛑 Common Errors

Error	Reason	Fix
403 Forbidden	Expired token	Refresh page and re-copy .m3u8
403 Forbidden	Missing headers	Ensure Referer and User-Agent are set
Unable to download webpage	Wrong URL	Only use signed Fastly .m3u8, not stream.video.skool.com


⸻

📦 Example Output

[generic] Extracting URL...
[hlsnative] Downloading m3u8 manifest...
[download] Merged format into skool-video.mp4

Your video should now be saved as ~/Desktop/skool-video.mp4.

⸻

⚠️ Legal Disclaimer

This guide is provided for educational or archival purposes. Respect intellectual property rights and platform terms of service. Do not redistribute copyrighted content.

Related

@devinschumacher
Copy link
Author

devinschumacher commented Sep 18, 2025

👉 Get the Skool Video Downloader: https://serp.ly/skool-video-downloader

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment