Welcome to the Zoom OPM Tools repository, a place created with a single clear intention: to make the lives of Online Program Managers (OPMs) easier as they deliver the personal and business development programs of Landmark Worldwide via Zoom to a global audience.
Every day, all over the world, Online Program Managers, in partnership with Landmark Program Leaders, are expanding the reach of Landmark's transformative programs, creating the space inside which individuals and organizations embark on their journey of personal and professional excellence and effectiveness.
While this repository is meant to be used by OPMs who coordinate large meetings or workshops via Zoom, the software here is general purpose and can be used by anyone who runs large Zoom meetings or seminars.
- Zoom OPM Tools
Please ensure you have the necessary permissions, and you're following best practices when using scripts and automation during Zoom meetings.
Always respect privacy and confidentiality.
This package is composed of a few interconnected components:
- The frontend dashboard.
- The backend server that is used to store the Zoom Meeting participation information (who joined, who was in the "Waiting Room").
- The
zoom-manage
utility.
These components interact with each other and the Zoom application as illustrated here:
There is a web dashboard for the "Zoom Meeting Tracker".
The dashboard is a simple vue.js application that displays the cache of information that is updated and stored by the backend server. The columns of the dashboard are clickable and can be used to sort the data in the displayed table.
The backend server serves as a bridge between the dashboard and the information gathered by
the zoom-manage
utility application. It manages the database of events related to participants
joining the Zoom meeting and makes that information available to the dashboard.
See the documentation for the Backend Server and its API here.
The zoom-manage
script is a utility written in AppleScript designed to help manage
Zoom meetings with ease. This script automates common tasks such as tracking participants,
handling the waiting room, monitoring raised hands, and logging meeting activities.
It creates three files in the logs/
subdirectory of the directory from
which the script is run, namely YYYYMMDD-log.txt
, YYYYMMDD-roster.txt
,
and YYYYMMDD-hands.txt
, where YYYYMMDD
is the current date.
This is an AppleScript application built to run natively on macOS, making it compatible with most macOS versions spanning from the older releases to the latest.
It has been tested on macOS Sonoma (14.5) on an Apple M2 MacBook Air running Zoom Version: 5.17.11 (31580) and an Apple M3 MacBook Pro, running Zoom Workplace Version: 6.0.0 (33147).
The backend component is a FastAPI server written in Python3 that serves the "Zoom Meeting Tracker" frontend written with JavaScript. You can install python3 on your Mac using homebrew.
- Participant Roster Generation: Generate a list of participants who've joined the Zoom meeting.
- Hands Raised Tracking: Record a list of participants who've raised their hands at any point in time during the meeting.
- Camera Off Tracking: Record a list of participants who have their camera turned off.
- Waiting Room Management: Automate the process of admitting attendees from the waiting room.
- Logging: Maintain a log of meeting activities and actions taken during the meeting.
- Integrated Server and Dashboard: Run a backend server and open a Zoom Meeting Tracker dashboard for enhanced management.
Clone this repository and ensure you can get the backend API server running.
git clone https://github.com/ksylvan/Zoom_OPM
Install the cliclick tool.
brew install cliclick
-
Ensure that the Zoom application is running and that you're in a Zoom meeting.
-
Start the backend server. First, follow the instructions in the Backend README.
./zoom-manage server start
This starts the server in its own Terminal window. You can kill the server using
/.zoom-manage server stop
. -
Start the dashboard.
./zoom-manage dashboard
You can now execute specific commands as needed (for example, grab the current roster by using the
roster
command, or capture all the hands that are raised by using thehands
command).The most common commands are also available in the dashboard.
NOTE: Run ./zoom-manage help
for comprehensive documentation.
- help: Display a usage message detailing the available commands.
- server: Start the backend server. This will launch the server in its own terminal window.
- dashboard: Open the Zoom Meeting Tracker dashboard in a web browser.
- reset: Reset the tracking database.
- roster: Generate a current list of participants in the meeting. This is the default action if no command is specified.
- hands: Generate a list of participants who've raised their hands.
- camera_off: Generate list of camera off participants.
- camera_on: Generate list of participants who are on video.
- no_audio - get the list of participants not connected to audio.
- muted - get the list of participants who are muted.
- unmuted - get the list of participants who are un-muted.
- phone: List of participants dialing in by phone.
The lists are output into the filtered.txt
file in the logs directory. If you set
the environment variable ZOOM_DEBUG
then the filtered lists are also output on
the console (stderr).
% export ZOOM_DEBUG=true
% ./zoom-manage hands
=== Hand raised 10/29/2023 12:30:17 ===
1 James Tiberius Kirk
2 Spock
3 Leonard H McCoy
=== Hand raised 3 participants 10/29/2023 12:30:24 ===
- admit: Admit all attendees waiting in the Zoom waiting room.
- breakout: Manage creating breakout rooms.
Run
./zoom-manage breakout help
for details and see this documentation for the format of the breakout room files. - rename: Rename participants using the command line. Read the documentation here
about using this function to automatically rename participants soon after they have joined
the meeting, with the
ZOOM_RENAME_FILE
environment variable. - co-host and host: You can Co-Host participants via the command-line. You can also relinquish Host to another participant.
To execute a command, use the following syntax:
/path/to/zoom-manage [command]
For example:
/path/to/zoom-manage roster
This will generate a roster of current participants in the Zoom meeting.
The backend server and dashboard require additional setup and may have their own dependencies. Ensure that you've followed the provided setup instructions. You must also install the cliclick tool.
The script assumes that the Zoom app is installed. If the Zoom app is not running, the script will start the Zoom app and log a message on the console, prompting the user to start a meeting.
-
Make the script more robust to variations in the Zoom application user interface.
-
Port the zoom-manage script to Windows. To contribute to a Windows version,
-
please read this note about potential pathways to make this happen.
Feel free to fork this repository and submit pull requests for any enhancements or bug fixes you contribute.
This work is Copyright (c) 2023, Kayvan A. Sylvan and is released under the MIT License.