🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Book Google Meet

by @kumadun

Create scheduled Google Calendar events with OPEN access Google Meet spaces.

Versionv1.0.7
Downloads950
TERMINAL
clawhub install book-google-meet

πŸ“– About This Skill


name: book-google-meet description: Create scheduled Google Calendar events with OPEN access Google Meet spaces. metadata: { "clawbot": { "emoji": "πŸŽ₯", "requires": { "packages": [ "google-auth", "google-auth-oauthlib", "google-api-python-client", ], "files": ["client_secrets.json", "book_meeting.py"], "primaryEnv": ["GOOGLE_CLIENT_ID", "GOOGLE_CLIENT_SECRET"], "writes": ["meeting_token.pickle"], }, "install": [ { "kind": "pip", "packages": [ "google-auth", "google-auth-oauthlib", "google-api-python-client", ], "label": "Install Python dependencies", }, ], }, }

book-google-meet

Create scheduled Google Calendar events with OPEN access Google Meet spaces.

Quick Start

# 1. Install dependencies
pip install -r requirements.txt

2. Get OAuth credentials from Google Cloud Console

- Enable Google Calendar API and Google Meet API

- Create OAuth 2.0 Desktop app credentials

- Download client_secrets.json

3. Place client_secrets.json in the skill directory

4. Run the script

python book_meeting.py --title "My Meeting" --date "2026-03-12" --time "15:00" --duration 45 --timezone "Asia/Shanghai"

Prerequisites

1. Google Cloud Project Setup

1. Go to Google Cloud Console 2. Create a new project 3. Enable APIs: - Google Calendar API - Google Meet API

2. OAuth Consent Screen

1. Go to OAuth consent screen 2. Select External user type 3. Fill in app name and contact email 4. Add scope: https://www.googleapis.com/auth/meetings.space.settings 5. Set publishing status to In production

3. Create OAuth Credentials

1. Go to Credentials 2. Click Create Credentials β†’ OAuth client ID 3. Select Desktop app application type 4. Download JSON and save as client_secrets.json

Alternative: Set environment variables instead of using client_secrets.json:

export GOOGLE_CLIENT_ID='your-client-id'
export GOOGLE_CLIENT_SECRET='your-client-secret'

Required OAuth Scopes

https://www.googleapis.com/auth/calendar.events
https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/meetings.space.settings

Note: Use meetings.space.settings (non-sensitive) instead of meetings.space.created (sensitive).

Usage

Basic Usage

python book_meeting.py --title "Team Meeting" --date "2026-03-12" --time "15:00" --duration 45 --timezone "Asia/Shanghai"

With Attendees

python book_meeting.py --title "Team Meeting" --date "2026-03-12" --time "15:00" --duration 45 \
  --timezone "Asia/Shanghai" \
  --attendees "user1@example.com,user2@example.com"

With Description

python book_meeting.py --title "Team Meeting" --date "2026-03-12" --time "15:00" --duration 45 \
  --timezone "Asia/Shanghai" \
  --description "Weekly sync meeting"

Access Types

# OPEN - Anyone with link can join (default)
python book_meeting.py --title "Public Meeting" --date "2026-03-12" --time "15:00" --duration 45 \
  --timezone "Asia/Shanghai" --access-type OPEN

TRUSTED - Org members + invited external users

python book_meeting.py --title "Internal Meeting" --date "2026-03-12" --time "15:00" --duration 45 \ --timezone "Asia/Shanghai" --access-type TRUSTED

RESTRICTED - Only invitees

python book_meeting.py --title "Private Meeting" --date "2026-03-12" --time "15:00" --duration 45 \ --timezone "Asia/Shanghai" --access-type RESTRICTED

Command Line Options

| Option | Description | Default | |--------|-------------|---------| | --title, -t | Meeting title (required) | - | | --date, -d | Meeting date (YYYY-MM-DD) | - | | --time | Meeting start time (HH:MM) | - | | --duration | Duration in minutes | 45 | | --timezone, -z | Timezone | America/New_York | | --attendees | Comma-separated email list | - | | --description | Meeting description | - | | --access-type | OPEN, TRUSTED, or RESTRICTED | OPEN | | --credentials, -c | Path to client_secrets.json | client_secrets.json | | --token-path | Path to store OAuth token | meeting_token.pickle |

Output Example

πŸš€ Step 1: Creating Calendar event with Meet conference...
βœ… Calendar event created with Meet conference
   Meeting Code: abc-defg-hij

πŸš€ Step 2: Looking up Meet space using meeting code... βœ… Found Meet space: spaces/xxxxxxxxxx

πŸš€ Step 3: Patching Meet space to OPEN access... βœ… Meet space patched successfully! Access Type: OPEN

============================================================ βœ… Meeting created successfully! ============================================================

πŸ“… Title: Team Meeting πŸ• Start: 2026-03-12T15:00:00 πŸ• End: 2026-03-12T15:45:00 🌐 Timezone: Asia/Shanghai

πŸ”— Meet URL: https://meet.google.com/abc-defg-hij πŸ“ž Meeting Code: abc-defg-hij πŸ”“ Access Type: OPEN πŸ†” Space Name: spaces/xxxxxxxxxx

πŸ“§ Calendar Link: https://calendar.google.com/calendar/event?eid=... πŸ†” Event ID: xxxxxxxxxxxxxx ============================================================

How It Works

1. Calendar API - Create event with Meet conference 2. Meet API (spaces.get) - Look up Meet space using meeting code 3. Meet API (spaces.patch) - Update space to set accessType=OPEN

Troubleshooting

403 Permission Denied

Cause: Using meetings.space.created scope (sensitive) without additional verification.

Solution: Use meetings.space.settings scope (non-sensitive) instead. Already fixed in the script.

API Not Enabled

Enable both APIs in Google Cloud Console:

  • Calendar API: https://console.developers.google.com/apis/api/calendar.googleapis.com/overview
  • Meet API: https://console.developers.google.com/apis/api/meet.googleapis.com/overview
  • Invalid Credentials

    Delete meeting_token.pickle to force re-authentication:

    rm meeting_token.pickle
    

    Files

  • book_meeting.py - Main script
  • client_secrets.json - OAuth credentials (you provide)
  • meeting_token.pickle - Cached OAuth token (auto-generated)
  • requirements.txt - Python dependencies
  • Security Notes

    ⚠️ Sensitive Files:

    | File | Description | Security | |------|-------------|----------| | meeting_token.pickle | Cached OAuth tokens (contains refresh token) | Keep secure; delete when not needed; do not commit to version control | | client_secrets.json | OAuth client credentials | Never commit to version control; protect as password |

    ⚠️ Token File Warning: The script writes meeting_token.pickle to disk after first OAuth authorization. This file contains sensitive OAuth tokens including refresh tokens that can be used to access your Google account. Protect this file:

  • Do not share it
  • Do not commit it to version control
  • Delete it when no longer needed
  • Ensure proper file permissions (readable only by owner)
  • References

  • Google Calendar API
  • Google Meet API
  • Meet spaces.get
  • Meet spaces.patch
  • πŸ’‘ Examples

    Basic Usage

    python book_meeting.py --title "Team Meeting" --date "2026-03-12" --time "15:00" --duration 45 --timezone "Asia/Shanghai"
    

    With Attendees

    python book_meeting.py --title "Team Meeting" --date "2026-03-12" --time "15:00" --duration 45 \
      --timezone "Asia/Shanghai" \
      --attendees "user1@example.com,user2@example.com"
    

    With Description

    python book_meeting.py --title "Team Meeting" --date "2026-03-12" --time "15:00" --duration 45 \
      --timezone "Asia/Shanghai" \
      --description "Weekly sync meeting"
    

    Access Types

    # OPEN - Anyone with link can join (default)
    python book_meeting.py --title "Public Meeting" --date "2026-03-12" --time "15:00" --duration 45 \
      --timezone "Asia/Shanghai" --access-type OPEN

    TRUSTED - Org members + invited external users

    python book_meeting.py --title "Internal Meeting" --date "2026-03-12" --time "15:00" --duration 45 \ --timezone "Asia/Shanghai" --access-type TRUSTED

    RESTRICTED - Only invitees

    python book_meeting.py --title "Private Meeting" --date "2026-03-12" --time "15:00" --duration 45 \ --timezone "Asia/Shanghai" --access-type RESTRICTED

    βš™οΈ Configuration

    1. Google Cloud Project Setup

    1. Go to Google Cloud Console 2. Create a new project 3. Enable APIs: - Google Calendar API - Google Meet API

    2. OAuth Consent Screen

    1. Go to OAuth consent screen 2. Select External user type 3. Fill in app name and contact email 4. Add scope: https://www.googleapis.com/auth/meetings.space.settings 5. Set publishing status to In production

    3. Create OAuth Credentials

    1. Go to Credentials 2. Click Create Credentials β†’ OAuth client ID 3. Select Desktop app application type 4. Download JSON and save as client_secrets.json

    Alternative: Set environment variables instead of using client_secrets.json:

    export GOOGLE_CLIENT_ID='your-client-id'
    export GOOGLE_CLIENT_SECRET='your-client-secret'
    

    πŸ“‹ Tips & Best Practices

    403 Permission Denied

    Cause: Using meetings.space.created scope (sensitive) without additional verification.

    Solution: Use meetings.space.settings scope (non-sensitive) instead. Already fixed in the script.

    API Not Enabled

    Enable both APIs in Google Cloud Console:

  • Calendar API: https://console.developers.google.com/apis/api/calendar.googleapis.com/overview
  • Meet API: https://console.developers.google.com/apis/api/meet.googleapis.com/overview
  • Invalid Credentials

    Delete meeting_token.pickle to force re-authentication:

    rm meeting_token.pickle