yuvraj-dw/zoom-stealth-bot

Automates attending recurring Zoom webinars so you don't have to sit through them

JavaScript

1

9 commits

updated Sep 24, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built a headless Zoom webinar attendee bot with Playwright, Telegram remote control, and Gemini meeting summaries (r/SideProject)

I found myself having to sit through recurring webinars and lectures just to catch Q&A segments, announcements, and links shared in chat. To automate this, I built **zoom-stealth-bot** (co-developed with AI coding agents to work through Playwright stealth hooks and Docker setups) — a background…

1

Sep 24, 2026

README

zoom-stealth-bot

An automated Zoom meeting and webinar attendee daemon using Playwright, Telegram bot commands, and Google Gemini for meeting Q&A summarization.

zoom-stealth-bot Demo


Features

  • Browser stealth: Removes automation flags (navigator.webdriver), configures realistic plugins, WebGL profiles, and user agents to avoid bot blocks.
  • Webinar token joining: Supports direct registration tokens (tk=...) to avoid registration screens and reCAPTCHA Enterprise challenges.
  • Telegram bot control:
    • /status - Check current connection status and session duration.
    • /screenshot (or /ss) - Capture a current screenshot of the presentation.
    • /summary - Extract live Q&A and chat from Zoom's internal state and generate a structured summary.
    • /join - Start and join the meeting immediately.
    • /leave - Disconnect, capture a final summary, and close the browser.
    • /help - List available commands.
  • Meeting summarization: Reads mentor answers, announcements, and links from Zoom's client state, then parses them via Gemini models with automatic fallback.
  • Scheduler: Configurable timer to join recurring sessions automatically.
  • Docker deployment: Multi-stage Docker container with headless Chromium preconfigured.

Architecture

Telegram User -> Telegram Bot (Polling Daemon)
                      |
        +-------------+-------------+
        |                           |
Manual Commands (/join, /ss)  Scheduled Timer
        |                           |
        +-------------+-------------+
                      |
        SessionController (Playwright)
                      |
        +-------------+-------------+
        |             |             |
   Stealth Page  React Fiber    Gemini API
 (Bypass Checks) (Feed Scrape) (Summaries)
        |             |             |
        +-------------+-------------+
                      |
            Telegram Notifications

Getting Started

1. Clone and Configure

git clone https://github.com/yuvraj-dw/zoom-stealth-bot.git
cd zoom-stealth-bot
cp .env.example .env

Edit your .env configuration file:

ZOOM_MEETING_ID=1234567890
ZOOM_PASSCODE=123456
ATTENDEE_NAME="Your Name"
ATTENDEE_EMAIL=you@example.com

# Optional: Webinar registration token (from your join link)
ZOOM_WEBINAR_TOKEN=

# Google Gemini API key and model for meeting summaries
GEMINI_API_KEY=your_gemini_api_key
GEMINI_MODEL=gemini-3.6-flash

# Telegram notifications and control
TELEGRAM_BOT_TOKEN=123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ
TELEGRAM_CHAT_ID=123456789

Build and run using Docker Compose:

docker compose up -d --build

View live logs:

docker compose logs -f

3. Run Locally (Node.js 18+)

npm install
npx playwright install chromium
npm start

Run test suite:

npm test

Telegram Bot Commands

CommandDescription
/statusCheck if currently connected to a meeting and elapsed time
/screenshot, /ssGet an instant screenshot of the live meeting
/summaryGenerate a summary of mentor Q&A, answers, and shared links
/joinLaunch browser and join meeting
/leaveLeave the meeting, generate final summary, and close browser
/helpShow command help menu

Security and Privacy

  • Configuration values and tokens are loaded strictly through environment variables.
  • Passwords and webinar tokens should remain private and never be committed to git.

License

MIT (c) Zoom Attendee Bot Contributors

Contributors

yuvraj-dw

9 commits

yuvraj-dw/zoom-stealth-bot

Automates attending recurring Zoom webinars so you don't have to sit through them

JavaScript

1

9 commits

updated Sep 24, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built a headless Zoom webinar attendee bot with Playwright, Telegram remote control, and Gemini meeting summaries (r/SideProject)

I found myself having to sit through recurring webinars and lectures just to catch Q&A segments, announcements, and links shared in chat. To automate this, I built **zoom-stealth-bot** (co-developed with AI coding agents to work through Playwright stealth hooks and Docker setups) — a background…

1

Sep 24, 2026

README

zoom-stealth-bot

An automated Zoom meeting and webinar attendee daemon using Playwright, Telegram bot commands, and Google Gemini for meeting Q&A summarization.

zoom-stealth-bot Demo


Features

  • Browser stealth: Removes automation flags (navigator.webdriver), configures realistic plugins, WebGL profiles, and user agents to avoid bot blocks.
  • Webinar token joining: Supports direct registration tokens (tk=...) to avoid registration screens and reCAPTCHA Enterprise challenges.
  • Telegram bot control:
    • /status - Check current connection status and session duration.
    • /screenshot (or /ss) - Capture a current screenshot of the presentation.
    • /summary - Extract live Q&A and chat from Zoom's internal state and generate a structured summary.
    • /join - Start and join the meeting immediately.
    • /leave - Disconnect, capture a final summary, and close the browser.
    • /help - List available commands.
  • Meeting summarization: Reads mentor answers, announcements, and links from Zoom's client state, then parses them via Gemini models with automatic fallback.
  • Scheduler: Configurable timer to join recurring sessions automatically.
  • Docker deployment: Multi-stage Docker container with headless Chromium preconfigured.

Architecture

Telegram User -> Telegram Bot (Polling Daemon)
                      |
        +-------------+-------------+
        |                           |
Manual Commands (/join, /ss)  Scheduled Timer
        |                           |
        +-------------+-------------+
                      |
        SessionController (Playwright)
                      |
        +-------------+-------------+
        |             |             |
   Stealth Page  React Fiber    Gemini API
 (Bypass Checks) (Feed Scrape) (Summaries)
        |             |             |
        +-------------+-------------+
                      |
            Telegram Notifications

Getting Started

1. Clone and Configure

git clone https://github.com/yuvraj-dw/zoom-stealth-bot.git
cd zoom-stealth-bot
cp .env.example .env

Edit your .env configuration file:

ZOOM_MEETING_ID=1234567890
ZOOM_PASSCODE=123456
ATTENDEE_NAME="Your Name"
ATTENDEE_EMAIL=you@example.com

# Optional: Webinar registration token (from your join link)
ZOOM_WEBINAR_TOKEN=

# Google Gemini API key and model for meeting summaries
GEMINI_API_KEY=your_gemini_api_key
GEMINI_MODEL=gemini-3.6-flash

# Telegram notifications and control
TELEGRAM_BOT_TOKEN=123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ
TELEGRAM_CHAT_ID=123456789

Build and run using Docker Compose:

docker compose up -d --build

View live logs:

docker compose logs -f

3. Run Locally (Node.js 18+)

npm install
npx playwright install chromium
npm start

Run test suite:

npm test

Telegram Bot Commands

CommandDescription
/statusCheck if currently connected to a meeting and elapsed time
/screenshot, /ssGet an instant screenshot of the live meeting
/summaryGenerate a summary of mentor Q&A, answers, and shared links
/joinLaunch browser and join meeting
/leaveLeave the meeting, generate final summary, and close browser
/helpShow command help menu

Security and Privacy

  • Configuration values and tokens are loaded strictly through environment variables.
  • Passwords and webinar tokens should remain private and never be committed to git.

License

MIT (c) Zoom Attendee Bot Contributors

Contributors

yuvraj-dw

9 commits

Languages

JavaScript

94.6%

Shell

5.0%