tmeet

中文 | English

A command-line interface (CLI) tool for Tencent Meeting, based on Tencent Meeting Open Platform OAuth2 authorization. Supports meeting management, recording management, attendance reports, and more.

License: MIT Go Version

Features

  • 🔐 OAuth2 Authorization — Device code authorization flow, secure and passwordless
  • 📅 Meeting Management — Create, query, update, and cancel meetings; supports recurring meetings and invitee management
  • 🎬 Recording Management — Query recording lists, get download URLs, smart minutes, transcript details and search
  • 📊 Attendance Reports — Query participant lists and waiting room member records
  • 🔒 Secure Storage — Credentials encrypted with AES-256-GCM, no plaintext stored on disk
  • 🖥️ Cross-Platform — Supports macOS, Linux, and Windows

Installation

Step 1: Install CLI

npm install -g @tencentcloud/tmeet

After installation, the tmeet command is available directly.

💡 If you see npm: command not found, it means Node.js is not installed. Please visit the Node.js official website to download and install the LTS version (npm is included).

Option 2: Build from Source

git clone https://github.com/TencentCloud/tencentmeeting-cli
cd tencentmeeting-cli
go build -ldflags "-X tmeet/cmd.Version=v1.0.0" -o tmeet .
# or
make build VERSION=v1.0.0

Step 2: Install CLI-SKILL

npx skills add TencentCloud/tencentmeeting-cli -y -g

Quick Start

1. Login & Authorization

tmeet auth login

This outputs an authorization URL. Open it in your browser to complete the QR code authorization. The CLI automatically polls for the result (5-minute timeout) and saves the credentials encrypted locally.

2. Create a Meeting

tmeet meeting create \
  --subject "Weekly Standup" \
  --start "2026-04-10T10:00+08:00" \
  --end "2026-04-10T11:00+08:00"

3. List Meetings

# List ongoing or upcoming meetings
tmeet meeting list

# List ended meetings
tmeet meeting list-ended \
  --start "2026-04-01T00:00+08:00" \
  --end "2026-04-30T23:59+08:00"

4. Logout

tmeet auth logout

Global Flags

All commands support the following global flags:

Flag Short Default Description
--format json Output format: json (compact) | json-pretty (indented)
--version -V Show version number

Examples:

# Show version number
tmeet -V

# Output response in indented format
tmeet meeting get --meeting-id "6953553464429888300" --format json-pretty

Command Overview

tmeet [--format json] [-V]
├── auth
│   ├── login          # OAuth authorization login
│   ├── logout         # Logout and clear credentials
│   └── status         # View current login status
├── meeting
│   ├── create         # Create a meeting (regular or recurring)
│   ├── update         # Update meeting information
│   ├── cancel         # Cancel a meeting
│   ├── get            # Get meeting details
│   ├── list           # List ongoing or upcoming meetings
│   ├── list-ended     # List ended meetings
│   └── invitees-list  # List meeting invitees
├── record
│   ├── list           # Query recording list
│   ├── address        # Get recording file download URL
│   ├── smart-minutes  # Get smart minutes
│   ├── transcript-get        # Get transcript details
│   ├── transcript-paragraphs # Get transcript paragraph list
│   └── transcript-search     # Search transcript content
└── report
    ├── participants   # Get participant list
    └── waiting-room-log # Get waiting room member list

Command Reference

auth — Authorization Management

auth login

Login and complete OAuth2 authorization, saving credentials encrypted locally.

tmeet auth login

No parameters. Follow the prompt to complete QR code authorization in your browser.


auth logout

Logout and clear local authentication credentials.

tmeet auth logout

No parameters.


auth status

View current login status, including OpenId, AccessToken / RefreshToken expiration status and remaining validity time.

tmeet auth status

No parameters. Displays Not logged in when not authenticated; shows credential validity information when logged in.


meeting — Meeting Management

meeting create — Create a Meeting

tmeet meeting create --subject <title> --start <start-time> --end <end-time> [options]
Parameter Type Required Default Description
--subject string Meeting subject/title
--start string Meeting start time, ISO 8601, e.g. 2026-03-12T14:00+08:00
--end string Meeting end time, ISO 8601, e.g. 2026-03-12T15:00+08:00
--password string Meeting password (46 digits)
--timezone string Timezone, refer to Oracle-TimeZone standard, e.g. Asia/Shanghai
--meeting-type int 0 Meeting type: 0-regular meeting, 1-recurring meeting
--join-type int 0 Join restriction: 1-all members, 2-invited members only, 3-internal members only
--waiting-room bool false Enable waiting room: true-enable, false-disable
--recurring-type int 0 Recurrence type (when --meeting-type=1): 0-daily, 1-weekdays, 2-weekly, 3-biweekly, 4-monthly
--until-type int 0 Recurrence end type (when --meeting-type=1): 0-end by date, 1-end by count
--until-count int 7 Max occurrences (when --meeting-type=1): max 500 for daily/weekday/weekly; max 50 for biweekly/monthly
--until-date string Recurrence end date (when --meeting-type=1), ISO 8601, e.g. 2026-03-12T15:00+08:00

Examples:

# Create a regular meeting
tmeet meeting create \
  --subject "Project Review" \
  --start "2026-04-10T14:00+08:00" \
  --end "2026-04-10T16:00+08:00" \
  --password "123456" \
  --waiting-room

# Create a weekly recurring meeting (10 occurrences)
tmeet meeting create \
  --subject "Weekly Standup" \
  --start "2026-04-10T09:30+08:00" \
  --end "2026-04-10T10:00+08:00" \
  --meeting-type 1 \
  --recurring-type 2 \
  --until-type 1 \
  --until-count 10

meeting get — Get Meeting Details

Use either --meeting-id or --meeting-code (one required); --meeting-id takes priority.

tmeet meeting get --meeting-id <meeting-id>
tmeet meeting get --meeting-code <meeting-code>
Parameter Type Required Description
--meeting-id string one of two Meeting ID (higher priority than meeting code)
--meeting-code string one of two Meeting code

Examples:

tmeet meeting get --meeting-id "6953553464429888300"
tmeet meeting get --meeting-code "931945029"

meeting update — Update a Meeting

Only pass the fields you want to modify; unspecified fields remain unchanged.

tmeet meeting update --meeting-id <meeting-id> [options]
Parameter Type Required Default Description
--meeting-id string Meeting ID
--subject string Meeting subject/title
--start string Meeting start time, ISO 8601, e.g. 2026-03-12T14:00+08:00
--end string Meeting end time, ISO 8601, e.g. 2026-03-12T14:00+08:00
--password string Meeting password (46 digits)
--timezone string Timezone, e.g. Asia/Shanghai
--meeting-type int 0 Meeting type: 0-regular meeting, 1-recurring meeting
--join-type int 0 Join restriction: 1-all members, 2-invited members only, 3-internal members only
--waiting-room bool false Enable waiting room
--recurring-type int 0 Recurrence type (when --meeting-type=1): 0-daily, 1-weekdays, 2-weekly, 3-biweekly, 4-monthly
--until-type int 0 Recurrence end type (when --meeting-type=1): 0-end by date, 1-end by count
--until-count int 7 Max occurrences (when --meeting-type=1): max 500 for daily/weekday/weekly; max 50 for biweekly/monthly
--until-date string Recurrence end date (when --meeting-type=1), ISO 8601, e.g. 2026-03-12T15:00+08:00

Example:

tmeet meeting update \
  --meeting-id "6953553464429888300" \
  --subject "New Title" \
  --start "2026-04-10T15:00+08:00" \
  --end "2026-04-10T16:00+08:00"

meeting cancel — Cancel a Meeting

tmeet meeting cancel --meeting-id <meeting-id> [options]
Parameter Type Required Default Description
--meeting-id string Meeting ID
--sub-meeting-id string Sub-meeting ID for recurring meetings; required when canceling a specific occurrence
--meeting-type int 0 Meeting type: 0-regular meeting, 1-recurring meeting (pass 1 to cancel the entire recurring series)

Examples:

# Cancel a regular meeting
tmeet meeting cancel --meeting-id "6953553464429888300"

# Cancel a specific occurrence of a recurring meeting
tmeet meeting cancel \
  --meeting-id "6953553464429888300" \
  --sub-meeting-id "100001"

# Cancel the entire recurring meeting series
tmeet meeting cancel \
  --meeting-id "6953553464429888300" \
  --meeting-type 1

meeting list — List Meetings

List ongoing or upcoming meetings.

tmeet meeting list [options]
Parameter Type Required Default Description
--start string Pagination start time, ISO 8601, e.g. 2026-03-12T15:00+08:00
--end string Pagination end time, ISO 8601, e.g. 2026-03-12T15:00+08:00
--show-all-sub int 0 Show all sub-meetings: 0-no, 1-yes

Examples:

tmeet meeting list
tmeet meeting list \
  --start "2026-04-01T00:00+08:00" \
  --end "2026-04-30T23:59+08:00" \
  --show-all-sub 1

meeting list-ended — List Ended Meetings

Query historical ended meetings with time range pagination support.

tmeet meeting list-ended [options]
Parameter Type Required Default Description
--start string Query start time, ISO 8601, e.g. 2026-03-12T15:00+08:00
--end string Query end time, ISO 8601, e.g. 2026-03-12T15:00+08:00
--page int 1 Page number, starting from 1
--page-size int 10 Page size, default 10, max 20

Examples:

# Query ended meetings this month
tmeet meeting list-ended \
  --start "2026-04-01T00:00+08:00" \
  --end "2026-04-30T23:59+08:00"

# Paginated query
tmeet meeting list-ended \
  --start "2026-04-01T00:00+08:00" \
  --end "2026-04-30T23:59+08:00" \
  --page 2 --page-size 20

meeting invitees-list — List Meeting Invitees

tmeet meeting invitees-list --meeting-id <meeting-id> [options]
Parameter Type Required Default Description
--meeting-id string Meeting ID
--pos int 0 Starting position for paginated invitee list query

Examples:

tmeet meeting invitees-list --meeting-id "6953553464429888300"
tmeet meeting invitees-list --meeting-id "6953553464429888300" --pos 20

record — Recording Management

record list — Query Recording List

Choose one of the following three parameter groups (error if none provided):

  • --start + --end (time range)
  • --meeting-id (meeting ID)
  • --meeting-code (meeting code)
tmeet record list (--start <start-time> --end <end-time> | --meeting-id <id> | --meeting-code <code>) [options]
Parameter Type Required Default Description
--start string one of three Query start time, ISO 8601, e.g. 2026-03-12T14:00+08:00
--end string one of three Query end time, ISO 8601, e.g. 2026-03-12T14:00+08:00 (used with --start)
--meeting-id string one of three Meeting ID
--meeting-code string one of three Meeting code
--page int 1 Page number, starting from 1
--page-size int 10 Page size, max 20

Examples:

# Query by time range
tmeet record list \
  --start "2026-04-01T00:00+08:00" \
  --end "2026-04-30T23:59+08:00" \
  --page 1 --page-size 20

# Query by meeting ID
tmeet record list --meeting-id "6953553464429888300"

# Query by meeting code
tmeet record list --meeting-code "931945029"

record address — Get Recording Download URL

tmeet record address --meeting-record-id <record-id> [options]
Parameter Type Required Default Description
--meeting-record-id string Meeting recording ID
--page int 1 Page number, starting from 1
--page-size int 50 Page size, max 50

Example:

tmeet record address --meeting-record-id "record_abc123"

record smart-minutes — Get Smart Minutes

tmeet record smart-minutes --record-file-id <file-id> [options]
Parameter Type Required Default Description
--record-file-id string Recording file ID
--lang string default Translation language: default-original (no translation), zh-Simplified Chinese, en-English, ja-Japanese
--pwd string Recording file access password

Example:

tmeet record smart-minutes --record-file-id "file_abc123" --lang zh

record transcript-get — Get Transcript Details

tmeet record transcript-get --record-file-id <file-id> [options]
Parameter Type Required Default Description
--record-file-id string Recording file ID
--meeting-id string Meeting ID
--pid string Starting paragraph ID for query
--limit string Number of paragraphs to query

Example:

tmeet record transcript-get --record-file-id "file_abc123" --pid "para_001" --limit "50"

record transcript-paragraphs — Get Transcript Paragraph List

tmeet record transcript-paragraphs --record-file-id <file-id> [options]
Parameter Type Required Default Description
--record-file-id string Recording file ID
--meeting-id string Meeting ID

Example:

tmeet record transcript-paragraphs --record-file-id "file_abc123"

record transcript-search — Search Transcript Content

tmeet record transcript-search --record-file-id <file-id> --text <keyword> [options]
Parameter Type Required Default Description
--record-file-id string Recording file ID
--text string Search keyword
--meeting-id string Meeting ID

Example:

tmeet record transcript-search --record-file-id "file_abc123" --text "quarterly goals"

report — Attendance Reports

report participants — Get Participant List

tmeet report participants --meeting-id <meeting-id> [options]
Parameter Type Required Default Description
--meeting-id string Meeting ID
--sub-meeting-id string Sub-meeting ID for recurring meetings
--pos int 0 Starting position for paginated participant list query
--size int 20 Number of participants to fetch, max 100 per page
--start string Query start time, ISO 8601, e.g. 2026-03-12T14:00+08:00
--end string Query end time, ISO 8601, e.g. 2026-03-12T14:00+08:00

Examples:

tmeet report participants --meeting-id "6953553464429888300" --size 50
tmeet report participants \
  --meeting-id "6953553464429888300" \
  --start "2026-04-10T10:00+08:00" \
  --end "2026-04-10T11:00+08:00"

report waiting-room-log — Get Waiting Room Members

tmeet report waiting-room-log --meeting-id <meeting-id> [options]
Parameter Type Required Default Description
--meeting-id string Meeting ID
--page int 1 Page number, default 1
--page-size int 20 Page size, default 20, max 50

Example:

tmeet report waiting-room-log --meeting-id "6953553464429888300" --page 1 --page-size 50

Security & Risk Notice (Please Read Before Use)


After the Tencent Meeting CLI tool is connected to AI Agents such as OpenClaw and granted your authorization, the AI will gain access to your Tencent Meeting data (including but not limited to your detailed user information, meeting management and queries, recordings, smart minutes, and other file exports), and will perform operations on your behalf within the authorized scope. Although the tool has security protections in place, the AI may still cause data leakage, unauthorized operations, or other unintended consequences due to model hallucinations, prompt injection, poisoning attacks, uncontrollable execution deviations, and other risks. Please use this tool with caution and comply with your organization's internal data security policies to avoid data loss or leakage. If you suspect a breach or need to disable access, immediately run tmeet auth logout.

By installing and using this CLI, you acknowledge that you have fully understood and accepted the above risks and voluntarily assume the associated responsibilities.


Configuration

Configuration files are stored in ~/.tmeet/ by default. You can override settings via environment variables:

Environment Variable Description Default
TMEET_CLI_CONFIG_DIR Configuration file directory ~/.tmeet/
TMEET_CLI_DATA_DIR Encrypted data directory Platform-specific default path

Note

: All time parameters use ISO 8601 format, e.g. 2026-04-10T14:00+08:00. Timestamp fields in responses are automatically converted to ISO 8601 format for display.

Contributing

Issues and Pull Requests are welcome. Please read CONTRIBUTING.md first.

Security

If you discover a security vulnerability, please refer to SECURITY.md for instructions on how to report it privately.

License

This project is open-sourced under the MIT License.

S
Description
腾讯会议 CLI(tmeet):OAuth 授权登录/登出/状态查询、会议管理(创建/更新/取消/查询/受邀者)、录制管理(列表/播放地址/智能纪要/转写/录制权限申请)、会议报告(参会人/等候室/导出参会成员明细/异步任务结果)、通讯录(严格限定:仅存在"会议邀请/呼叫入会"动作的前置步骤通过用户名/手机号/邮箱搜索…
Readme MIT 1 MiB
Languages
Go 98.6%
JavaScript 0.5%
Shell 0.3%
Python 0.3%
Makefile 0.3%