TencentCloud
tencentmeeting-cli
腾讯会议命令行工具(CLI),基于腾讯会议开放平台 OAuth2 授权,支持会议管理、录制管理、参会报告等功能。
- Stars
- 207
- Language
- Go
- Created
- Apr 7, 2026
- Updated
- Aug 7, 2026
Introduction
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 / --size 参数被标记为 deprecated,仍可使用但不再推荐,未来版本可能移除。
说明:
record transcript-get的--pid/--limit是该命令用于段落定位的独立参数,不属于通用分页参数,未被弃用。
统一用法:
| 参数 | 类型 | 说明 |
|---|---|---|
--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 search | 30 | 30 | — |
meeting invitees-list | 30 | 30 | --pos |
record list | 30 | 30 | --page |
record address | 30 | 30 | --page |
record search | 30 | 30 | — |
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 # 获取已结束的会议列表
│ ├── search # 按关键词/会议号/时间范围搜索会议
│ ├── invitees-list # 获取会议受邀者列表
│ ├── invitees-add # 添加会议受邀者
│ ├── invitees-remove # 移除会议受邀者
│ └── invitees-replace # 替换会议受邀者列表
├── contact
│ ├── search # 搜索企业通讯录成员
│ ├── lookup-by-email # 通过邮箱反查用户信息
│ └── lookup-by-phone # 通过手机号反查用户信息
├── record
│ ├── list # 查询录制列表
│ ├── address # 获取录制文件下载地址
│ ├── search # 按关键词/会议号/会议ID/时间范围搜索录制
│ ├── smart-minutes # 获取智能纪要
│ ├── transcript-get # 获取转写详情
│ ├── transcript-paragraphs # 获取转写段落列表
│ ├── transcript-search # 搜索转写内容
│ ├── permission-apply-prepare # 预览录制权限申请信息(申请前确认)
│ └── permission-apply-commit # 提交录制权限申请(用户确认后执行)
├── report
│ ├── participants # 获取参会人列表
│ ├── waiting-room-log # 获取等候室成员列表
│ ├── participants-export # 导出参会成员明细(异步任务)
│ └── job-result # 获取异步任务结果
├── control
│ ├── call # 呼叫成员入会(会中邀请呼叫)
│ ├── kick # 将成员踢出会议(会中踢人)
│ └── waiting-room # 等候室管理(移入会议/移回等候室/移出)
└── tshoot
├── log # 导出本地日志(支持按时间范围过滤,可选 --upload 上传至服务器)
└── feedback # 上报问题排查反馈到服务器
命令参考
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 |
--invitees | strings | — | — | 邀请成员的 openid 列表,逗号分隔或重复传参(最多 100 人,例如 --invitees open_id1,open_id2) |
--water-mark-type | int | — | 2 | 文字水印:0-单排,1-双排,2-关闭● 个人账号:默认为2 ● 企业/组织账号: ✧ 企业设置强制态-使用企业设置作为强制态,入参不生效 ✧ 企业未设置强制态-使用企业设置作为默认值,入参覆盖默认值 |
--audio-watermark | bool | — | false | 音频水印:true-开启,false-关闭● 个人账号:默认为false ● 企业/组织账号: ✧ 企业设置强制态-使用企业设置作为强制态,入参不生效 ✧ 企业未设置强制态-使用企业设置作为默认值,入参覆盖默认值 |
--auto-record-type | string | — | none | 主持人入会后自动录制会议:none-关,local-本地,cloud-云录制● 个人账号:默认none ● 企业/组织账号: ✧ 企业设置强制态-使用企业设置作为强制态,入参不生效 ✧ 企业未设置强制态-使用企业设置作为默认值,入参覆盖默认值 |
--auto-asr | bool | — | false | 自动文字转写:true-开,false-关● 个人账号:默认false ● 企业/组织账号: ✧ 企业设置强制态-使用企业设置作为强制态,入参不生效 ✧ 企业未设置强制态-使用企业设置作为默认值,入参覆盖默认值 |
示例:
# 创建普通会议
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 10
# 创建会议并邀请成员
tmeet meeting create \
--subject "需求评审" \
--start "2026-04-10T14:00+08:00" \
--end "2026-04-10T15:00+08:00" \
--invitees "open_id1,open_id2,open_id3"
# 创建会议并显式关闭音频水印 / 自动文字转写
# 注:bool 参数传 false 必须使用 = 形式,不能用空格
tmeet meeting create \
--subject "无水印会议" \
--start "2026-04-10T14:00+08:00" \
--end "2026-04-10T15:00+08:00" \
--audio-watermark=false \
--auto-asr=false
meeting 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 |
--sub-meeting-id | string | — | — | 子会议 ID(--meeting-type=1 时生效):仅修改该场子会议的时间;不可与 --recurring-type / --until-type / --until-count / --until-date 同时使用。不填则修改整个周期性会议 |
--invitees | strings | — | — | 待变更的邀请成员 openid 列表,逗号分隔或重复传参;与 --invitees-type 配合使用 |
--invitees-type | string | — | — | 邀请变更策略:replace-全量替换邀请列表,add-新增邀请用户,remove-删除邀请用户;当指定 --invitees 时必填 |
示例:
tmeet meeting update \
--meeting-id "6953553464429888300" \
--subject "新主题" \
--start "2026-04-10T15:00+08:00" \
--end "2026-04-10T16:00+08:00"
# 全量替换邀请列表
tmeet meeting update \
--meeting-id "6953553464429888300" \
--invitees "open_id1,open_id2,open_id3" \
--invitees-type replace
# 新增邀请用户
tmeet meeting update \
--meeting-id "6953553464429888300" \
--invitees "open_id4,open_id5" \
--invitees-type add
# 删除邀请用户
tmeet meeting update \
--meeting-id "6953553464429888300" \
--invitees "open_id1" \
--invitees-type remove
# 仅修改周期性会议中某一场子会议的时间(不修改周期规则)
tmeet meeting update \
--meeting-id "6953553464429888300" \
--meeting-type 1 \
--sub-meeting-id "100001" \
--start "2026-04-17T10:00+08:00" \
--end "2026-04-17T11:00+08:00"
# 显式关闭音频水印 / 自动文字转写
# 注:bool 参数传 false 必须使用 = 形式,不能用空格
tmeet meeting update \
--meeting-id "6953553464429888300" \
--audio-watermark=false \
--auto-asr=false
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 1
meeting 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 20
meeting 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 30
meeting search — 搜索会议
按关键词、会议号、时间范围等条件搜索会议。所有过滤参数均为可选,可任意组合。
tmeet meeting search [选项]
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--query | string | — | — | 搜索关键词 |
--query-field | string | — | all | --query 的搜索字段:subject-会议主题;creator-创建者昵称/备注名;note-用户对会议的备注;all-搜索所有字段 |
--meeting-code | string | — | — | 按会议号过滤(精确匹配,仅数字,无短横线) |
--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 |
示例:
# 按主题关键词搜索
tmeet meeting search --query "周例会" --query-field subject
# 按创建者昵称搜索
tmeet meeting search --query "张三" --query-field creator
# 按会议号精确搜索
tmeet meeting search --meeting-code "931945029"
# 按时间范围搜索
tmeet meeting search \
--start "2026-04-01T00:00+08:00" \
--end "2026-04-30T23:59+08:00"
# 翻下一页
tmeet meeting search \
--query "项目评审" \
--page-token "<next_page_token>" --page-size 30
meeting 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 30
meeting invitees-add — 添加受邀成员
向已存在的会议中追加受邀成员。受邀成员通过用户 open_id 指定,可通过 contact search 命令查询获得。
tmeet meeting invitees-add --meeting-id <会议ID> --invitees <open_id列表>
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--meeting-id | string | ✅ | — | 会议 ID |
--invitees | strings | ✅ | — | 待添加的受邀成员 open_id 列表,支持英文逗号分隔或重复传入该参数,最多 100 个 |
示例:
# 通过英文逗号分隔传入多个 open_id
tmeet meeting invitees-add \
--meeting-id "6953553464429888300" \
--invitees "open_id1,open_id2"
# 重复传入 --invitees 参数
tmeet meeting invitees-add \
--meeting-id "6953553464429888300" \
--invitees "open_id1" \
--invitees "open_id2"
meeting invitees-remove — 移除受邀成员
从已存在的会议中移除指定的受邀成员。
tmeet meeting invitees-remove --meeting-id <会议ID> --invitees <open_id列表>
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--meeting-id | string | ✅ | — | 会议 ID |
--invitees | strings | ✅ | — | 待移除的受邀成员 open_id 列表,支持英文逗号分隔或重复传入该参数,最多 100 个 |
示例:
tmeet meeting invitees-remove \
--meeting-id "6953553464429888300" \
--invitees "open_id1,open_id2"
meeting invitees-replace — 替换受邀成员列表
使用新的成员列表整体替换会议当前的受邀成员列表(未在 --invitees 中的成员将被移除)。
tmeet meeting invitees-replace --meeting-id <会议ID> --invitees <open_id列表>
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--meeting-id | string | ✅ | — | 会议 ID |
--invitees | strings | ✅ | — | 替换后的受邀成员 open_id 列表,支持英文逗号分隔或重复传入该参数,最多 100 个 |
示例:
tmeet meeting invitees-replace \
--meeting-id "6953553464429888300" \
--invitees "open_id1,open_id2,open_id3"
record — 录制管理
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 30
record search — 搜索录制
按关键词、会议号、会议 ID、时间范围、文件类型等条件搜索录制。所有过滤参数均为可选,可任意组合。
tmeet record search [选项]
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--query | string | — | — | 搜索关键词 |
--query-field | string | — | all | --query 的搜索字段:subject-录制主题;creator-会议创建者昵称/备注名;transcript_content-文件中的原始转写内容;smart_minutes-文件中的智能纪要内容(摘要 + 待办);timeline-文件中的时间轴内容;all-搜索所有字段 |
--file-type | string | — | all | 文件类型:video、audio、transcript、upload、external、all |
--meeting-id | string | — | — | 按会议 ID 过滤 |
--meeting-code | string | — | — | 按会议号过滤(精确匹配,仅数字,无短横线) |
--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 | — | 30 | 每页大小,默认 30,最大 30 |
示例:
# 按转写内容关键词搜索
tmeet record search --query "季度目标" --query-field transcript_content
# 按智能纪要内容搜索
tmeet record search --query "待办" --query-field smart_minutes
# 按会议 ID 过滤
tmeet record search --meeting-id "6953553464429888300"
# 按时间范围 + 文件类型搜索
tmeet record search \
--start "2026-04-01T00:00+08:00" \
--end "2026-04-30T23:59+08:00" \
--file-type video
# 翻下一页
tmeet record search \
--query "项目评审" \
--page-token "<next_page_token>" --page-size 30
record 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 zh
record 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 "季度目标"
record permission-apply-prepare — 预览录制权限申请
申请录制权限前先调用本命令获取审批文案/会议主题/录制所有者等信息,展示给用户二次确认后再执行 record permission-apply-commit 真正提交申请。
tmeet record permission-apply-prepare --meeting-record-id <录制ID> [选项]
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--meeting-record-id | string | ✅ | — | 会议录制 ID |
--meeting-id | string | — | — | 会议 ID |
示例:
tmeet record permission-apply-prepare --meeting-record-id "record_abc123"
响应 data 主要字段:
| 字段 | 说明 |
|---|---|
preview.meeting_record_id | 会议录制 ID |
preview.approval_name | 申请类型文案 |
preview.subject | 会议标题 |
preview.file_owner | 录制所有者名称 |
preview.apply_note | 权限申请备注信息 |
preview.applicant | 申请人名称 |
expires_in | 过期时间(秒) |
record permission-apply-commit — 提交录制权限申请
写操作:在 permission-apply-prepare 获取预览信息并经用户确认后调用,正式发起权限申请审批流程。
tmeet record permission-apply-commit --meeting-record-id <录制ID> [选项]
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--meeting-record-id | string | ✅ | — | 会议录制 ID |
--meeting-id | string | — | — | 会议 ID |
示例:
tmeet record permission-apply-commit --meeting-record-id "record_abc123"
响应 data 主要字段:
| 字段 | 说明 |
|---|---|
unique_id | 申请 ID |
status | 审批状态 |
message | 审批状态描述 |
approval_url | 审批链接 |
share_text | 申请说明描述 |
contact — 通讯录
contact search — 搜索企业通讯录成员
按用户名搜索企业通讯录成员,支持通过职位或部门进一步过滤搜索结果。
tmeet contact search --username <用户名> [选项]
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--username | string | ✅ | — | 要搜索的用户名 |
--job-title | string | — | — | 当用户名搜索结果过多时,用于过滤的职位名称 |
--department-name | string | — | — | 当用户名搜索结果过多时,用于过滤的部门名称 |
示例:
# 按用户名搜索
tmeet contact search --username "张三"
# 用户名 + 职位过滤
tmeet contact search --username "张三" --job-title "工程师"
# 用户名 + 部门过滤
tmeet contact search --username "张三" --department-name "研发部"
contact lookup-by-email — 通过邮箱反查用户信息
通过邮箱地址反查用户详细信息,支持批量查询多个邮箱。
tmeet contact lookup-by-email --emails <邮箱地址列表>
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--emails | []string | ✅ | — | 邮箱地址列表,多个邮箱用逗号分隔或重复使用该参数,最多50个 例如:--emails user1@example.com,user2@example.com 或 --emails user1@example.com --emails user2@example.com |
示例:
# 查询单个邮箱
tmeet contact lookup-by-email --emails "user@example.com"
# 批量查询多个邮箱
tmeet contact lookup-by-email --emails "user1@example.com,user2@example.com,user3@example.com"
contact lookup-by-phone — 通过手机号反查用户信息
通过手机号反查用户详细信息,支持批量查询多个手机号。
tmeet contact lookup-by-phone --phones <手机号列表>
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--phones | []string | ✅ | — | 手机号列表,多个手机号用逗号分隔或重复使用该参数,最多50个 例如:--phones 13800138000,13900139000 或 --phones 13800138000 --phones 13900139000 |
示例:
# 查询单个手机号
tmeet contact lookup-by-phone --phones "13800138000"
# 批量查询多个手机号
tmeet contact lookup-by-phone --phones "13800138000,13900139000,13700137000"
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 50
report 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 50
report participants-export — 导出参会成员明细
异步导出会议参会成员明细,本命令仅提交导出任务并返回 job_id,需配合 report job-result 轮询任务状态获取下载链接。
tmeet report participants-export --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 |
--file-type | string | — | xlsx | 导出文件格式:xlsx 或 json |
响应关键字段:
| 字段 | 说明 |
|---|---|
job_id | 异步任务 ID(用于轮询任务状态) |
本命令仅返回
job_id,不会自动等待任务完成。获取job_id后,需每隔 5 秒调用report job-result轮询任务状态,直到 status 为 "成功" 时获取下载链接,或 status 非 "处理中" 时终止。
示例:
# 导出会议参会成员明细(默认 xlsx 格式)
tmeet report participants-export --meeting-id "6953553464429888300"
# 导出为 json 格式
tmeet report participants-export \
--meeting-id "6953553464429888300" \
--file-type "json"
# 导出周期性会议某个子会议的参会成员
tmeet report participants-export \
--meeting-id "6953553464429888300" \
--sub-meeting-id "200000001"
# 按时间范围过滤
tmeet report participants-export \
--meeting-id "6953553464429888300" \
--start "2026-04-10T14:00+08:00" \
--end "2026-04-10T15:00+08:00"
report job-result — 获取异步任务结果
查询异步导出任务的执行状态与结果。调用 participants-export 获取 job_id 后,需每隔 5 秒调用本命令轮询,直到任务完成或失败。
tmeet report job-result --job-id <任务ID>
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--job-id | string | ✅ | — | 任务 ID(从 participants-export 获取) |
响应关键字段:
| 字段 | 说明 |
|---|---|
status | 任务状态:"成功"、"失败"、"处理中" |
url | 文件下载链接(状态为 "成功" 时返回,有效期 2 小时) |
error_msg | 错误信息(状态为 "失败" 时返回) |
示例:
# 查询异步任务结果
tmeet report job-result --job-id "e1234567-f123-4d12-123a-12346192e332"
导出参会成员明细完整工作流:
1. 提交导出任务,获取 job_id
tmeet report participants-export --meeting-id "6953553464429888300"
2. 每隔 5 秒调用 job-result 轮询任务状态
tmeet report job-result --job-id <job_id>
3. 根据返回的 status 判断:
- status = "成功":返回文件下载链接 url(有效期 2 小时),流程结束
- status = "处理中":等待 5 秒后再次调用 job-result 继续轮询
- status = "失败" 或其他值:终止并返回 error_msg
control — 会中控制
会中控制相关命令,用于在会议进行中对参会成员执行呼叫、踢出等管理操作。受邀成员通过用户 open_id 指定,可通过 contact search 命令查询获得。
control call — 呼叫成员入会
会中邀请呼叫,向指定成员发起入会呼叫。
tmeet control call --meeting-id <会议ID> --users <open_id列表>
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--meeting-id | string | ✅ | — | 会议 ID |
--users | strings | ✅ | — | 待呼叫的成员 open_id 列表,支持英文逗号分隔或重复传入该参数,最多 20 个 |
示例:
# 通过英文逗号分隔传入多个 open_id
tmeet control call \
--meeting-id "6953553464429888300" \
--users "open_id1,open_id2"
# 重复传入 --users 参数
tmeet control call \
--meeting-id "6953553464429888300" \
--users "open_id1" \
--users "open_id2"
control waiting-room — 等候室管理
管理会议中等候室成员,支持三种操作类型:
- enter-meeting:主持人将等候室成员移入会议
- back-to-waiting:主持人将会中成员移回等候室
- expel:主持人将等候室成员移出(踢出会议)
tmeet control waiting-room --meeting-id <会议ID> --operate-type <操作类型> [选项]
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--meeting-id | string | ✅ | — | 会议 ID |
--operate-type | string | ✅ | — | 操作类型:enter-meeting(主持人将等候室成员移入会议)、back-to-waiting(主持人将会中成员移入等候室)、expel(主持人将等候室成员移出) |
--users | strings | 三选一 | — | 待操作的普通成员 open_id 列表(不含 Sip/Pstn 设备),支持英文逗号分隔或重复传入该参数 |
--sip-users | strings | 三选一 | — | 待操作的 Sip 设备 ms_open_id 列表,支持英文逗号分隔或重复传入该参数 |
--pstn-users | strings | 三选一 | — | 待操作的 Pstn 设备 ms_open_id 列表,支持英文逗号分隔或重复传入该参数 |
--allow-rejoin | bool | ❌ | — | 移出后是否允许再次加入会议(仅 --operate-type=expel 时生效); |
--users/--sip-users/--pstn-users三者至少必填一种,且三者总数合计最多 20 个。
示例:
# 将等候室成员移入会议
tmeet control waiting-room \
--meeting-id "6953553464429888300" \
--operate-type enter-meeting \
--users "open_id1,open_id2"
# 将会中成员移回等候室
tmeet control waiting-room \
--meeting-id "6953553464429888300" \
--operate-type back-to-waiting \
--users "open_id1,open_id2"
# 将等候室成员移出,不允许再次加入
tmeet control waiting-room \
--meeting-id "6953553464429888300" \
--operate-type expel \
--users "open_id1,open_id2"
# 将等候室成员移出,允许再次加入会议
tmeet control waiting-room \
--meeting-id "6953553464429888300" \
--operate-type expel \
--allow-rejoin \
--users "open_id1,open_id2"
# 将等候室成员移出,显式不允许再次加入会议
# 注意:bool 类型显式设为 false 时必须使用等号语法 --allow-rejoin=false,不能写成 --allow-rejoin false
tmeet control waiting-room \
--meeting-id "6953553464429888300" \
--operate-type expel \
--allow-rejoin=false \
--users "open_id1,open_id2"
# 同时操作 sip 设备和 pstn 设备
tmeet control waiting-room \
--meeting-id "6953553464429888300" \
--operate-type expel \
--sip-users "ms_open_id_sip1" \
--pstn-users "ms_open_id_pstn1"
control kick — 踢出会议成员
会中踢人,将指定成员从会议中踢出。
tmeet control kick --meeting-id <会议ID> [--users <open_id列表>] [--sip-users <ms_open_id列表>] [--pstn-users <ms_open_id列表>] [--allow-rejoin]
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--meeting-id | string | ✅ | — | 会议 ID |
--users | strings | 三选一 | — | 待踢出的普通成员 open_id 列表(不包含 Sip/Pstn 设备),支持英文逗号分隔或重复传入该参数 |
--sip-users | strings | 三选一 | — | 待踢出的 Sip 设备 ms_open_id 列表,支持英文逗号分隔或重复传入该参数 |
--pstn-users | strings | 三选一 | — | 待踢出的 Pstn 设备 ms_open_id 列表,支持英文逗号分隔或重复传入该参数 |
--allow-rejoin | bool | ❌ | true | 被踢出的成员是否允许重新加入会议;不传则默认 true(允许重新入会),传 --allow-rejoin=false 不允许重新入会 |
--users/--sip-users/--pstn-users三者至少必填一种,且三者总数合计最多 20 个。
示例:
# 踢出普通成员
tmeet control kick \
--meeting-id "6953553464429888300" \
--users "open_id1,open_id2"
# 同时踢出普通成员、Sip 设备、Pstn 设备(三者合计不超过 20)
tmeet control kick \
--meeting-id "6953553464429888300" \
--users "open_id1" \
--sip-users "ms_open_id_sip1" \
--pstn-users "ms_open_id_pstn1"
# 不允许被踢成员重新入会
tmeet control kick \
--meeting-id "6953553464429888300" \
--allow-rejoin=false \
--users "open_id1,open_id2"
tshoot — 问题排查
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
tshoot feedback — 上报问题排查反馈
将 Agent 在使用 CLI 过程中遇到的问题或建议上报至服务器,便于后续优化工具能力。
tmeet tshoot feedback --category <分类> --intent <原始意图> [选项]
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--category | string | ✅ | — | 反馈分类,可选值:tool_not_found(想做某事但找不到匹配工具)、tool_error(调用工具但返回错误)、tool_inadequate(工具存在但能力/参数不足)、unexpected_result(调用成功但结果未达预期)、suggestion(一般性建议或改进想法) |
--intent | string | ✅ | — | Agent 的原始意图,最多 200 字符 |
--actions-tried | string | — | — | Agent 已尝试过的动作,最多 500 字符 |
--result | string | — | — | 已尝试动作的结果或阻塞点,最多 500 字符 |
--tool-name | string | — | — | 使用的工具/命令名 |
--error-code | string | — | — | 工具返回的错误码 |
示例:
# 反馈:找不到匹配工具
tmeet tshoot feedback \
--category "tool_not_found" \
--intent "想批量导出某个时间段的所有会议纪要" \
--actions-tried "查看了 record 和 meeting 子命令" \
--result "未找到批量导出纪要的命令"
# 反馈:工具调用返回错误
tmeet tshoot feedback \
--category "tool_error" \
--intent "获取录制下载地址" \
--tool-name "record address" \
--error-code "200003" \
--result "接口返回权限不足"
# 反馈:一般性建议
tmeet tshoot feedback \
--category "suggestion" \
--intent "希望支持按主题模糊搜索会议"
该命令需要登录后才能使用。
安全与风险提示(使用前必读)
腾讯会议 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 开源。