Lark-workflow-feishu-cli lark-workflow-announce

群公告管理器:获取、设置、追加群公告内容,并通知群成员。当用户需要'群公告'、'发布公告'、'更新公告'、'设置群公告'、'追加公告'、'群通知'、'更新群公告'时使用。

install
source · Clone the upstream repo
git clone https://github.com/liangdabiao/lark-workflow-feishu-cli
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/liangdabiao/lark-workflow-feishu-cli "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/lark-workflow-announce" ~/.claude/skills/liangdabiao-lark-workflow-feishu-cli-lark-workflow-announce && rm -rf "$T"
manifest: .claude/skills/lark-workflow-announce/SKILL.md
source content

群公告管理器工作流

CRITICAL — 开始前 MUST 先用 Read 工具读取

../lark-shared/SKILL.md
,其中包含认证、权限处理

适用场景

  • "更新XX群的公告为..." / "设置群公告"
  • "在群公告末尾追加一条通知" / "追加公告"
  • "看看XX群现在的公告是什么" / "群公告"
  • "发布一条群公告,@所有人" / "发布公告"
  • "把项目里程碑更新到群公告" / "更新公告"

前置条件

仅支持 user 身份。执行前确保已授权:

lark-cli auth login --domain im

工作流

{chat_id + 操作类型(查看/设置/追加)+ 公告内容}
  │
  ├── im +chat-search ──────────────► 查找群聊(获取 chat_id)
  │
  ├── [查看] lark-cli api GET ──────► 读取当前群公告
  │
  ├── [追加] 先读取再合并 ─────────► 保留旧公告 + 追加新内容
  │
  ├── [设置] lark-cli api PATCH ────► 设置新公告(注意 revision)
  │
  └── [可选] im +messages-send ────► @全体成员通知公告更新

Step 1: 查找群聊

如果用户提供了群名称,先获取 chat_id:

lark-cli im +chat-search --query "<群名称>" --as user

从返回结果中提取

chat_id
oc_xxx
格式)。

Step 2: 查看当前群公告

群公告 API 未被 lark-cli 直接封装,使用

lark-cli api
调用:

# 读取当前群公告
MSYS_NO_PATHCONV=1 lark-cli api GET "/open-apis/im/v1/chats/<chat_id>/announcement" \
  --as user

返回结果包含:

  • content
    — 当前公告 HTML 内容
  • revision
    — 版本号(设置公告时必须传递,用于乐观并发控制)

如果返回

code: 0
data
为空,说明当前没有群公告。

Step 3: 设置群公告

覆盖模式

用新内容完全替换旧公告:

MSYS_NO_PATHCONV=1 lark-cli api PATCH "/open-apis/im/v1/chats/<chat_id>/announcement" \
  --data '{
    "revision": "<current_revision>",
    "requests": ["<HTML 公告内容>"]
  }' \
  --as user

追加模式

先读取当前公告,在末尾追加新内容:

MSYS_NO_PATHCONV=1 lark-cli api PATCH "/open-apis/im/v1/chats/<chat_id>/announcement" \
  --data '{
    "revision": "<current_revision>",
    "requests": ["<旧公告内容><br><br>---<br><br><新追加内容>"]
  }' \
  --as user

重要

  • revision
    字段必须传递当前的版本号,否则会返回错误
  • 公告内容格式为 HTML(不是 Markdown),支持
    <br>
    ,
    <b>
    ,
    <a href="">
    ,
    <font color="">
    等标签
  • requests
    是一个字符串数组,每个元素是一段 HTML 内容
  • 设置前必须先读取获取最新 revision

Markdown 转 HTML 参考

AI 需要将用户提供的 Markdown 内容转换为 HTML:

MarkdownHTML
**加粗**
<b>加粗</b>
# 标题
<font size="5"><b>标题</b></font>
- 列表项
列表项<br>
[链接](url)
<a href="url">链接</a>

Step 4: 通知群成员(可选)

lark-cli im +messages-send \
  --chat-id "<chat_id>" \
  --text '<at user_id="all"></at> 群公告已更新,请查看群公告。' \
  --as bot

降级策略

场景降级方案
群公告 API 失败用普通消息发送公告内容到群里
revision 冲突重新读取获取最新 revision,再设置
无群公告权限提示用户需要群管理员权限
群聊找不到提示用户确认群名称或提供 chat_id
@所有人受限改为发送普通消息通知

权限表

命令所需 scope
im +chat-search
im:chat:readonly
im/v1/chats/:id/announcement (GET)
im:chat:readonly
im/v1/chats/:id/announcement (PATCH)
im:chat
im +messages-send
im:message

参考