专项能力 / Specialized
Slack 自动化
Slack 的网页版就是一个大型 Web 应用——chrome-use 把它当成普通页面来驱动:
连接已经登录的会话,读可访问性快照拿到带 @ref 的元素,
然后查未读、跳频道、搜会话、抽消息。全程走真实浏览器,
不碰 Slack API、不需要 OAuth、webhook 或机器人令牌。
skills get slack 拉出完整技能文档深入查阅。
快速开始
chrome-use 走扩展驱动你已登录的真实 Chrome,Slack 的登录直接复用,不用开调试端口 (Chrome 136+ 连调试端口每次都弹「Allow remote debugging?」,见 它怎么工作)。让它打开 Slack 网页版就行。
# 走扩展连你已登录的真实 Chrome,打开 Slack 网页版(登录直接复用)
$ chrome-use open https://app.slack.com
# 拿一张可交互快照,看看页面上有什么
$ chrome-use snapshot -i
snapshot -i 拿到带 refs 的元素 → 点击标签页、展开分组或进入频道 →
读数据或执行动作 → 需要留证据时 screenshot。每次导航后都要重新快照,
因为 refs 会随页面变化。
查未读消息
未读散落在几个地方:侧边栏顶部的 “More unreads” 按钮、Activity 标签页里的未读汇总、 以及带加粗/角标的频道名。先快照定位 refs,再逐个查。
# 接着上面打开的 Slack 标签
$ chrome-use snapshot -i
# 进 Activity 标签页看未读汇总(ref 每次可能不同)
$ chrome-use click @e14
$ chrome-use wait 1000
$ chrome-use screenshot activity-unreads.png
# 或者展开侧边栏的 “More unreads”
$ chrome-use click @e21
$ chrome-use wait 500
$ chrome-use screenshot expanded-unreads.png
想数一下未读频道有多少个,展开未读分组后按 treeitem 统计:
# 展开未读后,每个带频道名的 treeitem 算一个未读
$ chrome-use snapshot -i | grep -c "treeitem"
导航到频道
快照后在侧边栏列表里找频道名(如 engineering、product-design),
点它对应的 treeitem ref。进频道后用 wait --load networkidle 等内容加载完再操作。
$ chrome-use snapshot -i
# 点频道对应的 treeitem(示例 ref,以你的快照为准)
$ chrome-use click @e94
$ chrome-use wait --load networkidle
# 在消息区往下滚动加载更多历史
$ chrome-use scroll down 500
$ chrome-use screenshot channel-messages.png
chrome-use scroll down 300 --selector ".p-sidebar"。
搜索会话
用 Slack 自带搜索最省事:点搜索按钮,填关键词,回车,等结果加载。
$ chrome-use snapshot -i
$ chrome-use click @e5 # 搜索按钮
$ chrome-use fill @e_search "keyword"
$ chrome-use press Enter
$ chrome-use wait --load networkidle
$ chrome-use screenshot search-results.png
抽取数据
要程序化解析时,用 JSON 快照拿机器可读的可访问性树;要单个元素的文字,用 get text。
更系统的抽取模式见 提取数据。
# 整棵可访问性树导出为 JSON,便于解析
$ chrome-use snapshot --json > slack-snapshot.json
# 取某条消息 / 某个元素的纯文本
$ chrome-use get text @e_message_ref
# 当前页面的 URL 与标题,留作引用
$ chrome-use get url
$ chrome-use get title
解析 JSON 时留意这些字段的对应关系:
| 你要的东西 | 在快照里找 |
|---|---|
| 频道名 | treeitem 的 name 字段(子频道 level=2) |
| 消息内容 | listitem / document 元素 |
| 用户名 | 带用户信息的 button 元素 |
| 时间戳 | 带时间信息的 link 元素 |
常用 refs 与侧边栏结构
Slack 侧边栏大致是:Threads / Huddles / Drafts & sent / Directories, 接着是分组标题(Starred、Channels 等)下挂的频道 treeitem,然后是 Direct Messages、Apps, 底部有 “More unreads” 按钮。下面这些 ref 是常见位置,仅供参考,实际以你的快照为准。
主页标签页(通常)。
私信标签页。
动态标签页,显示未读数。
搜索按钮。
展开未读频道列表(每次会变)。
@e14、@e21 只是典型值,会随会话和页面状态变化。
永远先 snapshot -i 再点,不要硬编码 ref。
调试
本 stealth 分支默认关闭控制台/错误捕获——想用 console / errors,
得先带 AGENT_BROWSER_CAPTURE_CONSOLE=1 启动会话,否则返回空。
# 需要先以 AGENT_BROWSER_CAPTURE_CONSOLE=1 启动会话
$ chrome-use console
$ chrome-use errors
# 卡住时看看当前页面状态
$ chrome-use get url
$ chrome-use get title
$ chrome-use screenshot page-state.png
注意事项
- 纯浏览器自动化:不走 Slack API,也就没有 OAuth、webhook、机器人令牌这些东西。
- 会话绑定:截图和快照都绑在当前浏览器会话上。
- 可能被限流:操作太密集时 Slack 会限流,命令之间加
sleep 1或wait让 UI 跟上。 - 只操作你自己的工作区:无法跨工作区自动化。