Files
Starlight_Lancher/.agents/skills/lark-minutes/references/lark-minutes-speaker-replace.md

4.7 KiB
Raw Blame History

minutes +speaker-replace

替换妙记逐字稿中的说话人身份:把妙记逐字稿里"原说话人"对应的所有发言段,重新归属到"新说话人"。常用于解决妙记自动识别错说话人,或需要把外部/非飞书说话人改绑到正确飞书用户的场景。

本 skill 对应 shortcutlark-cli minutes +speaker-replace

典型触发表达

  • "把这条妙记里 A 的发言改成 B"
  • "妙记说话人识别错了,帮我把张三的部分换成李四"
  • "把妙记里外部说话人 / 非飞书说话人的发言改成某个飞书用户"
  • "妙记说话人修改 / 替换 / 重新归属"

完整工作流

识别到「修改妙记说话人」需求后,必须按以下顺序执行;禁止把展示名直接传给 --from-speaker-id

  1. 确认 minute_token

    • 从妙记 URL、搜索或 VC 链路取得 minute_token
  2. 查说话人列表(必须先做)

    • lark-cli api 直接调用内部 HTTP 接口:
      lark-cli api GET "/open-apis/minutes/v1/minutes/<minute_token>/transcript/speakerlist" --as user
      
    • 返回 data.speakers[],每项含 speaker_id(不透明 idname(逐字稿展示名)。示例:
      {
        "data": {
          "speakers": [
            {"speaker_id": "ENCRYPTED_TOKEN_ABC", "name": "说话人1"},
            {"speaker_id": "ENCRYPTED_TOKEN_DEF", "name": "说话人2"}
          ]
        }
      }
      
  3. 解析 --from-speaker-id

    • 根据用户描述的原说话人展示名如「说话人1」「张三」speakers[] 里按 name 精确匹配,取对应的 speaker_id 作为 --from-speaker-id 的值。
    • --from-speaker-id 只传 speaker_id,不传展示名。
    • 若同名有多条(name 相同、speaker_id 不同):不要擅自挑选。可结合 vc +notes --minute-tokens 对照各人发言内容,请用户确认后再用精确的 speaker_id
    • 若列表中无匹配展示名:告知用户并核对拼写,或请用户在妙记页面确认标签。
  4. 解析 --to-user-id

    • 新说话人必须是 ou_ 开头的 open_id。用户只给姓名时先用 lark-contact 解析。
  5. 执行替换

    lark-cli minutes +speaker-replace \
      --minute-token obcnxxxxxxxxxxxxxxxxxxxx \
      --from-speaker-id ENCRYPTED_TOKEN_ABC \
      --to-user-id ou_new_speaker_open_id
    

命令示例

# 1. 先查列表(裸调 HTTP
lark-cli api GET "/open-apis/minutes/v1/minutes/obcnxxxxxxxxxxxxxxxxxxxx/transcript/speakerlist" --as user

# 2. 再替换from-speaker-id 来自上一步的 speaker_id
lark-cli minutes +speaker-replace \
  --minute-token obcnxxxxxxxxxxxxxxxxxxxx \
  --from-speaker-id ENCRYPTED_TOKEN_ABC \
  --to-user-id ou_new_speaker_open_id

参数

参数 必填 说明
--minute-token <token> 妙记的唯一标识,可从妙记 URL 末尾路径提取
--from-speaker-id <id> 被替换的原说话人 speaker_id(来自 speakerlist API 的 data.speakers[].speaker_id
--to-user-id <ou_xxx> 新的说话人,必须是 ou_ 开头的 open_id,不支持用户名

核心约束

1. 必须先查 speakerlist再替换

Agent 必须先 lark-cli api GET .../speakerlist,再 +speaker-replace--from-speaker-id 只接受 speaker_id

+speaker-replace 不会自己请求 speakerlist--from-speaker-id 的值会原样发给替换接口。整条链路只在 Agent 一开始查一次 speakerlist务必传入上一步拿到的 speaker_id(不要传展示名,否则替换接口会返回 speaker-not-found

2. 新说话人必须是 open_id

--to-user-id 仅支持 ou_ 开头的 open_id不支持直接传姓名;如果用户只给了姓名,请先用 lark-contact 把姓名解析成 open_id

3. 历史参数

存在一个隐藏的历史参数 --from-user-id(飞书说话人的 open_id仅为向后兼容保留新流程请一律使用 --from-speaker-id + speaker_id

认证与权限

  • 所需 scopeminutes:minutes:readonly(内部解析说话人)、minutes:minutes:update(执行替换)。

输出结果

字段 说明
minute_token 被修改的妙记 Token与输入的 --minute-token 一致
from_speaker_id 实际用于替换的不透明说话人标识
to_user_id 替换后的新说话人 open_id与输入的 --to-user-id 一致

参考