@tencentcloud/tmeet
v1.0.5
Published
腾讯会议 CLI 工具
Readme
tencentmeeting-cli
English | 中文
腾讯会议命令行工具(CLI),基于腾讯会议开放平台 OAuth2 授权,支持会议管理、录制管理、参会报告等功能。
功能特性
- 🔐 OAuth2 授权登录 — 设备码授权流程,安全无密码
- 📅 会议管理 — 创建、查询、更新、取消会议,支持周期性会议,管理受邀成员
- 🎬 录制管理 — 查询录制列表、获取下载地址、智能纪要、转写详情与搜索
- 📊 参会报告 — 查询参会人列表、等候室成员记录
- 🛠️ 问题排查 — 导出本地日志,支持按时间范围过滤,打包为 zip 文件
- 🔒 安全存储 — 凭证使用 AES-256-GCM 加密,明文不落盘
- 🖥️ 跨平台 — 支持 macOS、Linux、Windows
安装
第一步:安装 CLI
方式一:通过 npm 安装(推荐)
npm install -g @tencentcloud/tmeet安装完成后即可直接使用 tmeet 命令。
💡 如果提示
npm: command not found,说明尚未安装 Node.js。请前往 Node.js 官网 下载并安装 LTS 版本(已包含 npm)。
方式二:从源码构建
git clone https://github.com/TencentCloud/tencentmeeting-cli
cd tencentmeeting-cli
go build -ldflags "-X tmeet/cmd.Version=v1.0.0" -o tmeet .
# 或
make build VERSION=v1.0.0第二步:安装 CLI-SKILL
npx skills add TencentCloud/tencentmeeting-cli -y -g快速开始
1. 登录授权
tmeet auth login执行后会自动尝试打开系统默认浏览器跳转到授权 URL;若无默认浏览器,则输出授权 URL,手动在浏览器中打开完成扫码授权。CLI 自动轮询结果(超时 5 分钟),凭证加密保存到本地。
如需禁用自动打开浏览器,可使用
--no-browser参数:tmeet auth login --no-browser
2. 创建会议
tmeet meeting create \
--subject "周例会" \
--start "2026-04-10T10:00+08:00" \
--end "2026-04-10T11:00+08:00"3. 查询会议列表
# 查询进行中/即将开始的会议
tmeet meeting list
# 查询已结束的会议
tmeet meeting list-ended \
--start "2026-04-01T00:00+08:00" \
--end "2026-04-30T23:59+08:00"4. 登出
tmeet auth logout全局标志
所有命令均支持以下全局标志:
| 标志 | 简写 | 默认值 | 说明 |
|------|------|--------|------|
| --format | — | json | 输出格式:json(紧凑格式)| json-pretty(缩进格式) |
| --compact | — | false | 精简输出模式:仅保留关键字段,过滤冗余字段以降低响应体积,适用于查询/列表类命令 |
| --version | -V | — | 查看版本号 |
示例:
# 查看版本号
tmeet -V
# 以缩进格式输出响应
tmeet meeting get --meeting-id "6953553464429888300" --format json-pretty
# 以精简模式输出查询结果(仅保留关键字段)
tmeet record list --meeting-id "6953553464429888300" --compact分页参数说明
自 v1.0.5 起,所有支持分页的命令统一采用 --page-token + --page-size 方案。原先的 --page / --pos / --pid / --size / --limit 参数被标记为 deprecated,仍可使用但不再推荐,未来版本可能移除。
统一用法:
| 参数 | 类型 | 说明 |
|------|------|------|
| --page-token | string | 分页游标。首次查询不传;后续翻页请将上一次响应中的 next_page_token 传入 |
| --page-size | int | 每页大小,不同命令默认值与上限不同,详见各命令说明 |
典型分页流程:
# 1) 首次查询(不传 page-token)
tmeet record list --meeting-id "6953553464429888300" --page-size 30
# 2) 从响应中取出 next_page_token,用于下一页
tmeet record list \
--meeting-id "6953553464429888300" \
--page-size 30 \
--page-token "<next_page_token>"
# 3) 重复直到 next_page_token 为空,即已到最后一页各命令 --page-size 默认值/最大值速查:
| 命令 | 默认值 | 最大值 | 旧参数(已弃用) |
|------|:---:|:------:|------|
| meeting list | 20 | 20 | — |
| meeting list-ended | 30 | 30 | --page |
| meeting invitees-list | 30 | 30 | --pos |
| record list | 30 | 30 | --page |
| record address | 30 | 30 | --page |
| report participants | 100 | 100 | --pos / --size |
| report waiting-room-log | 100 | 100 | --page |
record transcript-get/record transcript-paragraphs/record transcript-search暂不支持基于--page-token的新分页方案。兼容性说明:当未传入
--page-token且同时传入了旧分页参数(如--page、--pos)时,CLI 会按旧模式发起请求(page_type=0);否则一律按新模式(page_type=1)发起请求。
命令总览
tmeet [--format json|json-pretty] [--compact] [-V]
├── auth
│ ├── login # OAuth 授权登录
│ ├── logout # 登出并清除凭证
│ └── status # 查看当前登录状态
├── meeting
│ ├── create # 创建会议(支持普通/周期性)
│ ├── update # 更新会议信息
│ ├── cancel # 取消会议
│ ├── get # 获取会议详情
│ ├── list # 获取进行中/即将开始的会议列表
│ ├── list-ended # 获取已结束的会议列表
│ └── invitees-list # 获取会议受邀者列表
├── record
│ ├── list # 查询录制列表
│ ├── address # 获取录制文件下载地址
│ ├── smart-minutes # 获取智能纪要
│ ├── transcript-get # 获取转写详情
│ ├── transcript-paragraphs # 获取转写段落列表
│ └── transcript-search # 搜索转写内容
├── report
│ ├── participants # 获取参会人列表
│ └── waiting-room-log # 获取等候室成员列表
└── tshoot
└── log # 导出本地日志(支持按时间范围过滤,可选 --upload 上传至服务器)命令参考
auth — 授权管理
auth login
登录并完成 OAuth2 授权,将凭证加密保存到本地。
tmeet auth login [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --no-browser | bool | — | false | 禁用自动打开浏览器。false(默认)会尝试自动打开系统默认浏览器跳转到授权 URL;true 则仅输出授权 URL,需用户手动在浏览器中打开 |
执行后会输出授权 URL,CLI 自动轮询授权结果(超时 5 分钟),凭证加密保存到本地。
auth logout
登出并清除本地认证凭证。
tmeet auth logout无参数。
auth status
查看当前登录状态,包括 OpenId、AccessToken / RefreshToken 的过期状态和剩余有效时间。
tmeet auth status无参数。未登录时提示
Not logged in,已登录时展示凭证有效期信息。
meeting — 会议管理
meeting create — 创建会议
tmeet meeting create --subject <主题> --start <开始时间> --end <结束时间> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|----------------------------------------------------------------------|
| --subject | string | ✅ | — | 会议主题 |
| --start | string | ✅ | — | 会议开始时间,ISO 8601,如 2026-03-12T14:00+08:00 |
| --end | string | ✅ | — | 会议结束时间,ISO 8601,如 2026-03-12T15:00+08:00 |
| --password | string | — | — | 会议密码(4~6 位数字) |
| --timezone | string | — | — | 时区,可参见 Oracle-TimeZone 标准,如 Asia/Shanghai |
| --meeting-type | int | — | 0 | 会议类型:0-普通会议,1-周期性会议 |
| --join-type | int | — | 0 | 成员入会限制:1-所有成员可入会,2-仅受邀成员可入会,3-仅企业内部成员可入会 |
| --waiting-room | bool | — | false | 是否开启等候室,true-开启,false-不开启 |
| --recurring-type | int | — | 0 | 周期类型(--meeting-type=1 时生效):0-每天,1-每周一至周五,2-每周,3-每两周,4-每月 |
| --until-type | int | — | 0 | 周期结束类型(--meeting-type=1 时生效):0-按日期结束重复,1-按次数结束重复 |
| --until-count | int | — | 7 | 限定会议次数(--meeting-type=1 时生效):每天/每个工作日/每周最大 500,每两周/每月最大 50 |
| --until-date | string | — | — | 周期结束日期(--meeting-type=1 时生效),ISO 8601,如 2026-03-12T15:00+08:00 |
示例:
# 创建普通会议
tmeet meeting create \
--subject "项目评审" \
--start "2026-04-10T14:00+08:00" \
--end "2026-04-10T16:00+08:00" \
--password "123456" \
--waiting-room
# 创建每周重复会议(共 10 次)
tmeet meeting create \
--subject "每周站会" \
--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 10meeting get — 查询会议详情
--meeting-id 和 --meeting-code 二选一,--meeting-id 优先级更高。
tmeet meeting get --meeting-id <会议ID>
tmeet meeting get --meeting-code <会议码>| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| --meeting-id | string | 二选一 | 会议 ID(优先级高于会议码) |
| --meeting-code | string | 二选一 | 会议码 |
示例:
tmeet meeting get --meeting-id "6953553464429888300"
tmeet meeting get --meeting-code "931945029"meeting update — 更新会议
仅传入需要修改的字段,未传入的字段保持不变。
tmeet meeting update --meeting-id <会议ID> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|----------------------------------------------------------------------|
| --meeting-id | string | ✅ | — | 会议 ID |
| --subject | string | — | — | 会议主题 |
| --start | string | — | — | 会议开始时间,ISO 8601,如 2026-03-12T14:00+08:00 |
| --end | string | — | — | 会议结束时间,ISO 8601,如 2026-03-12T14:00+08:00 |
| --password | string | — | — | 会议密码(4~6 位数字) |
| --timezone | string | — | — | 时区,如 Asia/Shanghai |
| --meeting-type | int | — | 0 | 会议类型:0-普通会议,1-周期性会议 |
| --join-type | int | — | 0 | 成员入会限制:1-所有成员可入会,2-仅受邀成员可入会,3-仅企业内部成员可入会 |
| --waiting-room | bool | — | false | 是否开启等候室 |
| --recurring-type | int | — | 0 | 周期类型(--meeting-type=1 时生效):0-每天,1-每周一至周五,2-每周,3-每两周,4-每月 |
| --until-type | int | — | 0 | 周期结束类型(--meeting-type=1 时生效):0-按日期结束重复,1-按次数结束重复 |
| --until-count | int | — | 7 | 限定会议次数(--meeting-type=1 时生效):每天/每个工作日/每周最大 500,每两周/每月最大 50 |
| --until-date | string | — | — | 周期结束日期(--meeting-type=1 时生效),ISO 8601,如 2026-03-12T15:00+08:00 |
示例:
tmeet meeting update \
--meeting-id "6953553464429888300" \
--subject "新主题" \
--start "2026-04-10T15:00+08:00" \
--end "2026-04-10T16:00+08:00"meeting cancel — 取消会议
tmeet meeting cancel --meeting-id <会议ID> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --meeting-id | string | ✅ | — | 会议 ID |
| --sub-meeting-id | string | — | — | 周期性会议子会议 ID,取消周期性会议的某个子会议时需要传入 |
| --meeting-type | int | — | 0 | 会议类型:0-普通会议,1-周期性会议(取消整场周期性会议时传 1) |
示例:
# 取消普通会议
tmeet meeting cancel --meeting-id "6953553464429888300"
# 取消周期性会议中的某个子会议
tmeet meeting cancel \
--meeting-id "6953553464429888300" \
--sub-meeting-id "100001"
# 取消整场周期性会议
tmeet meeting cancel \
--meeting-id "6953553464429888300" \
--meeting-type 1meeting list — 查询会议列表
查询进行中或即将开始的会议列表。
tmeet meeting list [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --start | string | — | — | 分页查询起始时间值,ISO 8601,如 2026-03-12T15:00+08:00 |
| --end | string | — | — | 分页查询结束时间值,ISO 8601,如 2026-03-12T15:00+08:00 |
| --show-all-sub | int | — | 0 | 是否展示全部子会议:0-不展示,1-展示 |
| --page-token | string | — | — | 分页游标,从上一次响应中返回的 next_page_token 获取,首页不传 |
| --page-size | int | — | 20 | 每页大小,默认 20,最大 20 |
示例:
tmeet meeting list
tmeet meeting list \
--start "2026-04-01T00:00+08:00" \
--end "2026-04-30T23:59+08:00" \
--show-all-sub 1
# 翻下一页
tmeet meeting list --page-token "<next_page_token>" --page-size 20meeting list-ended — 查询已结束会议列表
查询历史已结束的会议列表,支持按时间范围分页查询。
tmeet meeting list-ended [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --start | string | — | — | 查询开始时间,ISO 8601,如 2026-03-12T15:00+08:00 |
| --end | string | — | — | 查询结束时间,ISO 8601,如 2026-03-12T15:00+08:00 |
| --page-token | string | — | — | 分页游标,从上一次响应中返回的 next_page_token 获取,首页不传 |
| --page-size | int | — | 30 | 每页大小,默认 30,最大 30 |
| --page | int | — | — | ⚠️ 已弃用:页码(从 1 开始),请改用 --page-token |
示例:
# 查询本月已结束的会议
tmeet meeting list-ended \
--start "2026-04-01T00:00+08:00" \
--end "2026-04-30T23:59+08:00"
# 分页查询(使用 page-token)
tmeet meeting list-ended \
--start "2026-04-01T00:00+08:00" \
--end "2026-04-30T23:59+08:00" \
--page-token "<next_page_token>" --page-size 30meeting invitees-list — 查询受邀成员
tmeet meeting invitees-list --meeting-id <会议ID> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --meeting-id | string | ✅ | — | 会议 ID |
| --page-token | string | — | — | 分页游标,从上一次响应中返回的 next_page_token 获取,首页不传 |
| --page-size | int | — | 30 | 每页大小,默认 30,最大 30 |
| --pos | int | — | — | ⚠️ 已弃用:分页起始位置值,请改用 --page-token |
示例:
tmeet meeting invitees-list --meeting-id "6953553464429888300"
# 翻下一页
tmeet meeting invitees-list \
--meeting-id "6953553464429888300" \
--page-token "<next_page_token>" --page-size 30record — 录制管理
record list — 查询录制列表
以下三组参数任选其一(均不传则报错):
--start+--end(时间范围)--meeting-id(会议 ID)--meeting-code(会议号)
tmeet record list (--start <开始时间> --end <结束时间> | --meeting-id <ID> | --meeting-code <会议号>) [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --start | string | 三选一 | — | 查询开始时间,ISO 8601,如 2026-03-12T14:00+08:00 |
| --end | string | 三选一 | — | 查询结束时间,ISO 8601,如 2026-03-12T14:00+08:00(与 --start 配合使用) |
| --meeting-id | string | 三选一 | — | 会议 ID |
| --meeting-code | string | 三选一 | — | 会议号 |
| --page-token | string | — | — | 分页游标,从上一次响应中返回的 next_page_token 获取,首页不传 |
| --page-size | int | — | 30 | 每页大小,默认 30,最大 30 |
| --page | int | — | — | ⚠️ 已弃用:页码(从 1 开始),请改用 --page-token |
示例:
# 按时间范围查询
tmeet record list \
--start "2026-04-01T00:00+08:00" \
--end "2026-04-30T23:59+08:00" \
--page-token "<next_page_token>" --page-size 30
# 按会议 ID 查询
tmeet record list --meeting-id "6953553464429888300"
# 按会议号查询
tmeet record list --meeting-code "931945029"record address — 获取录制下载地址
tmeet record address --meeting-record-id <录制ID> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --meeting-record-id | string | ✅ | — | 会议录制 ID |
| --page-token | string | — | — | 分页游标,从上一次响应中返回的 next_page_token 获取,首页不传 |
| --page-size | int | — | 30 | 每页大小,默认 30,最大 30 |
| --page | int | — | — | ⚠️ 已弃用:页码(从 1 开始),请改用 --page-token |
示例:
tmeet record address --meeting-record-id "record_abc123"
# 翻下一页
tmeet record address \
--meeting-record-id "record_abc123" \
--page-token "<next_page_token>" --page-size 30record smart-minutes — 获取智能纪要
tmeet record smart-minutes --record-file-id <文件ID> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --record-file-id | string | ✅ | — | 录制文件 ID |
| --lang | string | — | default | 翻译语言选择:default-原文(不翻译),zh-简体中文,en-英文,ja-日语 |
| --pwd | string | — | — | 录制文件访问密码 |
示例:
tmeet record smart-minutes --record-file-id "file_abc123" --lang zhrecord transcript-get — 获取转写详情
tmeet record transcript-get --record-file-id <文件ID> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --record-file-id | string | ✅ | — | 录制文件 ID |
| --meeting-id | string | — | — | 会议 ID |
| --pid | string | — | — | 查询的起始段落 ID |
| --limit | string | — | — | 查询的段落数 |
示例:
tmeet record transcript-get --record-file-id "file_abc123"
# 指定起始段落与数量
tmeet record transcript-get --record-file-id "file_abc123" --pid "<paragraph_id>" --limit "30"record transcript-paragraphs — 获取转写段落列表
tmeet record transcript-paragraphs --record-file-id <文件ID> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --record-file-id | string | ✅ | — | 录制文件 ID |
| --meeting-id | string | — | — | 会议 ID |
示例:
tmeet record transcript-paragraphs --record-file-id "file_abc123"
# 指定会议 ID
tmeet record transcript-paragraphs \
--record-file-id "file_abc123" \
--meeting-id "6953553464429888300"record transcript-search — 搜索转写内容
tmeet record transcript-search --record-file-id <文件ID> --text <关键词> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --record-file-id | string | ✅ | — | 录制文件 ID |
| --text | string | ✅ | — | 搜索关键词 |
| --meeting-id | string | — | — | 会议 ID |
示例:
tmeet record transcript-search --record-file-id "file_abc123" --text "季度目标"report — 参会报告
report participants — 查询参会人列表
tmeet report participants --meeting-id <会议ID> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|-------|--------------------------------------------|
| --meeting-id | string | ✅ | — | 会议 ID |
| --sub-meeting-id | string | — | — | 周期性会议子会议 ID |
| --start | string | — | — | 查询起始时间,ISO 8601,如 2026-03-12T14:00+08:00 |
| --end | string | — | — | 查询结束时间,ISO 8601,如 2026-03-12T14:00+08:00 |
| --page-token | string | — | — | 分页游标,从上一次响应中返回的 next_page_token 获取,首页不传 |
| --page-size | int | — | 100 | 每页大小,默认 100,最大 100 |
| --pos | int | — | — | ⚠️ 已弃用:分页起始位置值,请改用 --page-token |
| --size | int | — | — | ⚠️ 已弃用:每页条数,请改用 --page-size |
示例:
tmeet report participants --meeting-id "6953553464429888300" --page-size 50
tmeet report participants \
--meeting-id "6953553464429888300" \
--start "2026-04-10T10:00+08:00" \
--end "2026-04-10T11:00+08:00"
# 翻下一页
tmeet report participants \
--meeting-id "6953553464429888300" \
--page-token "<next_page_token>" --page-size 50report waiting-room-log — 查询等候室成员
tmeet report waiting-room-log --meeting-id <会议ID> [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|-------|-------------------------------------------|
| --meeting-id | string | ✅ | — | 会议 ID |
| --page-token | string | — | — | 分页游标,从上一次响应中返回的 next_page_token 获取,首页不传 |
| --page-size | int | — | 100 | 每页大小,默认 100,最大 100 |
| --page | int | — | — | ⚠️ 已弃用:页码,请改用 --page-token |
示例:
tmeet report waiting-room-log --meeting-id "6953553464429888300" --page-size 50
# 翻下一页
tmeet report waiting-room-log \
--meeting-id "6953553464429888300" \
--page-token "<next_page_token>" --page-size 50tshoot — 问题排查
tshoot log — 导出本地日志
将本地日志打包为 zip 文件,输出到 ~/tmeet_ts_{datetime}.zip,可用于问题排查。支持按时间范围过滤,不传时间参数则导出全部日志。
tmeet tshoot log [选项]| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|:----:|--------|------|
| --start | string | 与 --end 同时使用 | — | 日志查询开始时间,ISO 8601,如 2026-03-12T14:00+08:00 |
| --end | string | 与 --start 同时使用 | — | 日志查询结束时间,ISO 8601,如 2026-03-12T15:00+08:00 |
| --upload | bool | 否 | false | 上传日志到服务器,需要登录 |
--start和--end必须同时传入或同时不传。
示例:
# 导出全部日志
tmeet tshoot log
# 导出指定时间范围内的日志
tmeet tshoot log \
--start "2026-04-10T00:00+08:00" \
--end "2026-04-10T23:59+08:00"
# 导出日志并上传到服务器(需要登录)
tmeet tshoot log --upload输出示例:
output log saved to: ~/tmeet_ts_20260410_153000.zip安全与风险提示(使用前必读)
腾讯会议 CLI 工具接入 OpenClaw 等AI Agent 并获得您的授权后,AI 将会获得你在腾讯会议的数据访问权限(包括但不限于您的详细用户信息、管理和查询会议、录制和纪要等文件查询导出),并以您的用户身份在授权范围内执行操作。尽管工具有安全防护,AI仍可能因模型幻觉、提示词注入、投毒攻击、执行偏差不可控等原因,导致数据泄露、越权操作等执行非预期操作的高风险后果,请您谨慎操作和使用,并遵循你所在企业的数据安全等内部管理要求,避免造成数据丢失、泄露等损失。若怀疑泄露或需停用,请立即执行登出命令 tmeet auth logout。
请您充分理解并接受上述风险后再使用本工具,安装使用CLI后即视为您自愿承担相关责任。
配置说明
配置文件默认存储在 ~/.tmeet/ 目录下,支持通过环境变量覆盖:
| 环境变量 | 说明 | 默认值 |
|----------|------|--------|
| TMEET_CLI_CONFIG_DIR | 配置文件目录 | ~/.tmeet/ |
| TMEET_CLI_DATA_DIR | 加密数据目录 | 平台相关默认路径 |
注意:所有时间参数均使用 ISO 8601 格式,例如
2026-04-10T14:00+08:00。响应中的时间戳字段会自动转换为 ISO 8601 格式展示。
贡献指南
欢迎提交 Issue 和 Pull Request,请先阅读 CONTRIBUTING.md。
安全
如发现安全漏洞,请参阅 SECURITY.md 了解如何私下报告。
许可证
本项目基于 MIT License 开源。
