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 PATHoption should be checked. (Windows only)
- Create a urls.txtfile and add URLs to the text file, one in each line.
- Open a terminal in the directory where the urls.txtfile is located.1
- Execute the npx zoom-rec-dl@latestcommand2 in the terminal.
Need to install the following packages:
  [email protected]
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": "[email protected]",
  "to": ["[email protected]", "[email protected]"]
}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.jsfile.
// 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 startand start the watch process.