Save Zoom cloud recordings to a local directory. A cross-platform video and audio download script.
- Windows, macOS, and Linux - any operating system that supports Node.js and npm.
- Zoom cloud recording share link that does not require any additional authentication.
For protected cloud recordings, the shareable link
- Should have the passcode embedded in the link.
- Should show a media player and a download button.
- Should not show an 'Enter the passcode to watch'.
Reference the documentation and update the following settings in the Zoom web portal.
ADMIN / Account Management / Account Settings
e.g. https://us06web.zoom.us/account/setting
[v] Allow cloud recording sharing - By disabling this setting, nobody else except the host can access the shareable link.
[v] Cloud recording downloads - Allow anyone with a link to the cloud recording to download
[ ] └── Only the host can download cloud recordings
[ ] Require users to authenticate before viewing cloud recordings
[ ] Set recording as on-demand by default - Users must register before they can watch the recording
[v] Require passcode to access shared cloud recordings
[v] └── Embed passcode in the shareable link for one-click access
Node.js and npm are required. The latest Node.js LTS installer can be downloaded here.
- npm should be installed. (Included in the Node.js installer)
Add to PATH
option should be checked. (Windows only)
- Create a
urls.txt
file and add URLs to the text file, one in each line. - Open a terminal in the directory where the
urls.txt
file is located.1 - Execute the
npx zoom-rec-dl@latest
command2 in the terminal.
Need to install the following packages:
zoom-rec-dl@x.x.x
Ok to proceed? (y) ← Press enter
Create a sendgrid.json
file alongside urls.txt
to send an email when the download is completed.
{
"apiKey": "SendGrid-API-Key",
"from": "sender@domain.com",
"to": ["receiver1@domain.com", "receiver2@domain.com"]
}
Modify the urls.txt
file to trigger a download process.
- Install the PM2 process manager globally.
- Install the PM2 log rotating module.
- Create a
ecosystem.config.js
file.
// ecosystem.config.js - should be placed alongside the `urls.txt` file.
// Reference https://pm2.keymetrics.io/docs/usage/application-declaration/
module.exports = {
apps: [
{
name: 'zoom-download',
script: 'npx zoom-rec-dl@latest',
// script: 'pnpm dlx zoom-rec-dl@latest',
watch: ['urls.txt'],
time: true,
autorestart: false,
},
],
};
- Run
pm2 start
and start the watch process.