Skip to content

robertoamoreno/loom_com_backup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

loom-offline

Download, archive, and browse your entire Loom video library offline.

Self-hosted tool to back up your complete Loom video library β€” MP4s, transcripts, captions, and thumbnails β€” with a sleek local viewer UI. Supports HLS stream downloading via ffmpeg, real-time backup progress via SSE, and incremental sync that skips already-downloaded files.

License: MIT Node.js

Features

  • Full Library Sync β€” Fetches metadata for your entire Loom library via the internal GraphQL API with cursor pagination
  • HLS Stream Download β€” Most Loom videos use HLS streaming; loom-offline uses ffmpeg to download and mux them into MP4 files automatically
  • Folder Preservation β€” Recreates your Loom folder hierarchy locally
  • Incremental Backup β€” Skips already-downloaded files so you can re-run safely
  • Complete Media Backup β€” MP4 video, static/animated thumbnails, JSON transcripts, and VTT captions
  • UI-Driven Backup β€” Settings panel to configure what to download, start/stop controls, and a real-time progress bar via Server-Sent Events
  • CLI Backup β€” Run node backup.js standalone if you prefer the command line
  • Local Viewer β€” React-based UI with video playback, transcript display, folder navigation, and full-text search

Prerequisites

  • Node.js v18+
  • ffmpeg β€” Required for downloading HLS video streams (the majority of Loom videos)
    # macOS
    brew install ffmpeg
    
    # Ubuntu/Debian
    sudo apt install ffmpeg
    
    # Windows (via chocolatey)
    choco install ffmpeg
  • Loom Cookie β€” A valid session cookie from loom.com (see below)

Installation

git clone https://github.com/robertoamoreno/loom_com_backup.git
cd loom_com_backup
npm install
cd viewer && npm install

Getting Your Loom Cookie

  1. Open loom.com and log in
  2. Open Developer Tools (F12 or Cmd+Opt+I)
  3. Go to the Network tab
  4. Reload the page or navigate to your library
  5. Click any request to loom.com
  6. In the Headers tab, find the Cookie request header
  7. Copy the entire value
  8. Create a .env file in the project root:
    LOOM_COOKIE="paste-your-full-cookie-string-here"
    

Your cookie contains your session credentials. Never share it or commit it to version control.

Usage

Option A: Backup via the Viewer UI

  1. Start the server:
    cd viewer && node server.cjs
  2. Start the frontend (in another terminal):
    cd viewer && npm run dev
  3. Open http://localhost:5173 in your browser
  4. Click the settings icon to configure backup options (MP4, transcripts, thumbnails, captions)
  5. Click Start Backup β€” progress streams in real-time via SSE

Option B: Backup via CLI

node backup.js

The script logs progress to the console and skips files that already exist.

Browse Your Library

Once you have videos downloaded, the viewer UI lets you:

  • Browse by folder
  • Search across all video titles
  • Play videos with the built-in player
  • Read transcripts alongside the video

Architecture

loom-offline/
β”œβ”€β”€ backup.js              # CLI entry point
β”œβ”€β”€ src/
β”‚   └── backup-engine.js   # Core backup logic (GraphQL, HLS/ffmpeg, downloads)
β”œβ”€β”€ viewer/
β”‚   β”œβ”€β”€ server.cjs         # Express API (library, backup control, SSE, static files)
β”‚   └── src/
β”‚       β”œβ”€β”€ App.jsx         # Main viewer UI
β”‚       β”œβ”€β”€ BackupPanel.jsx # Settings & backup controls
β”‚       └── BackupProgress.jsx # Real-time progress display
β”œβ”€β”€ Loom_Backup/           # Downloaded videos (gitignored)
└── .env                   # Your Loom cookie (gitignored)

Backup flow: backup-engine.js fetches your library metadata via Loom's GraphQL API, then downloads each video's MP4 (direct URL or HLS→ffmpeg fallback), transcript, captions, and thumbnails into Loom_Backup/ organized by folder.

Viewer flow: server.cjs serves the backup directory as static files and provides a /api/library endpoint that scans Loom_Backup/ for video metadata. The React UI consumes this API. Backup can be started/stopped from the UI via /api/backup/start and /api/backup/stop, with live progress streamed over SSE.

Privacy & Security

This tool is for personal use to back up your own Loom videos.

  • All data stays local on your machine
  • No data is sent to third parties
  • Never commit your .env file or Loom_Backup/ directory

Contributing

Contributions welcome! Please open an issue or pull request.

License

MIT

About

πŸŽ₯ Self-hosted tool to download, archive, and browse your entire Loom.com video library offline β€” MP4s, transcripts, captions & thumbnails with a local viewer UI

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors