agent-email
Agent 专用邮箱统一管理:让 Claude Code、Codex 等平台的 Agent 用一套命令收发邮件、整理收件箱、分发任务。支持网易 ClawEmail(claw.163.com)和腾讯 Agent Mail(QQ…
使用阿里云通义听悟进行云端音频/视频转录。本技能应在用户需要云端语音转文字、长音频转录、本地 ASR 不可用或需要更高精度时使用。不适用于无网络环境或需要完全离线的场景。
$ npx -y skills add cat-xierluo/legal-skills --skill tingwu-asr --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/tingwu-asrContext preview
The summary Claude sees to decide when to auto-load this skill.
使用阿里云通义听悟进行云端音频/视频转录。本技能应在用户需要云端语音转文字、长音频转录、本地 ASR 不可用或需要更高精度时使用。不适用于无网络环境或需要完全离线的场景。
name: tingwu-asr homepage: https://github.com/cat-xierluo/legal-skills author: 杨卫薪律师(微信ywxlaw) version: "0.4.7" license: MIT description: 使用阿里云通义听悟进行云端音频/视频转录。本技能应在用户需要云端语音转文字、长音频转录、本地 ASR 不可用或需要更高精度时使用。不适用于无网络环境或需要完全离线的场景。
通过逆向封装通义听悟网页端内部 REST API,实现云端音频/视频文件转录,输出与 `local-asr` 兼容的 Markdown 格式。
安装:
pip3 install -r skills/tingwu-asr/config/requirements.txt
**方式一(推荐)**:skill 内置 `login_pw.py`,一条命令完成"开浏览器 → 自动填凭证 → 等 登录 → cookie 落盘":
python3 skills/tingwu-asr/scripts/login_pw.py
**直接写入** `config/cookies.json`,cookie 值不经过 stdout/对话记录
**方式二(备用)**:Agent 用 MCP Playwright 浏览器工具手工流程:
1. 用 MCP Playwright 打开 `https://tingwu.aliyun.com/home` 2. 如果跳转到登录页,用账号密码或扫码登录 3. 登录成功后,将提取的 cookie 保存到文件(注意 `document.cookie` 拿不到 HttpOnly cookie,仅作兜底):
python3 skills/tingwu-asr/scripts/login.py --save-cookies '{"cna":"xxx",...}'账号密码可预配置在 `config/.env` 文件中(从 `config/.env.example` 复制)。
每天登录听悟网页可领取 2 小时免费转录额度。Agent 签到流程:
1. 运行内置登录脚本(会打开 `https://tingwu.aliyun.com/home` 触发每日额度并保存 Cookie):
python3 skills/tingwu-asr/scripts/login_pw.py
2. 运行检查脚本确认状态:
python3 skills/tingwu-asr/scripts/daily_checkin.py
可在 OpenClaw 中配置定时任务,让 Agent 每天自动执行此流程。
当用户要求转录音频/视频文件时,执行以下步骤:
python3 skills/tingwu-asr/scripts/check_auth.py
如果返回"无效",先运行 `login.py`。
# 直接给链接(自动 yt-dlp 下载,默认多人分离):小宇宙/YouTube/B站等 python3 skills/tingwu-asr/scripts/transcribe.py "https://www.xiaoyuzhoufm.com/episode/xxx" # 单文件转录(默认多人分离) python3 skills/tingwu-asr/scripts/transcribe.py /path/to/audio.mp3 --lang cn # 多文件并行转录(自动保存到文件所在目录 + archive 目录) python3 skills/tingwu-asr/scripts/transcribe.py /path/to/audio1.mp3 /path/to/audio2.mp3 /path/to/video.mp4 # 批量转录目录下所有文件(并行) python3 skills/tingwu-asr/scripts/transcribe.py /path/to/media_folder/ --batch # 指定并行数(默认3) python3 skills/tingwu-asr/scripts/transcribe.py /path/to/audio1.mp3 /path/to/audio2.mp3 --parallel 5
参数说明:
**关于「给链接转写」与说话人分离(重要设计取舍)**:传入链接时,skill 走「yt-dlp 下载 → 本地上传」路径,以保证说话人分离生效。听悟网页端的「播客链接转写」(底层 net_source 网络源通道)虽能省本地带宽,但实测其「区分发言人」选项不生效(提交时 roleSplitNum 被强制为 0,不做分离)。此外经实测,听悟 roleSplitNum **仅 `2` 为有效分离值(分 2 人)**,`0/1/3/4` 均不分离(原 skill 注释"4=多人"为误注,已更正)。故 skill 默认 `--speakers 2` 走本地上传通道,换取可靠的 2 人分离,代价是下载+上传的带宽。如只需纯文字稿不在乎分离,可自行调用听悟网页端播客链接转写。
转录结果会同时保存到两个位置: 1. **源文件所在目录**:例如 `/path/to/audio.mp3` → `/path/to/audio.md` 2. **archive 归档目录**:`archive/YYYYMMDD_HHMMSS_audio/audio.md`
这样做的好处是:
**PPT 幻灯片**: 视频文件会自动提取 PPT 幻灯片,图片保存在 `{文件名}_slides/` 子目录中(每个文件独立目录,避免同目录下多视频冲突)。
转录完成后,复用 local-asr 的 summary 模块:
python3 skills/local-asr/scripts/summary.py inject transcript.md summary.json python3 skills/local-asr/scripts/summary.py verify transcript.md
skills/tingwu-asr/
SKILL.md ← 本文件
scripts/
tingwu.py ← 核心 API 客户端
transcribe.py ← CLI 入口
format_output.py ← 听悟 JSON → Markdown 转换
login.py ← Cookie 保存工具
daily_checkin.py ← 额度检查 + 记录
check_auth.py ← 认证检查
config/
.env ← 账号密码凭证(gitignore,不提交)
.env.example ← 账号密码模板
cookies.json ← 登录 Cookie(gitignore,不提交)
cookie.example.json ← Cookie 文件模板
quota_history.jsonl ← 额度变更记录(gitignore,不提交)
requirements.txt ← Python 依赖
references/ ← API 文档和决策记录
archive/ ← 转录结果归档对于 1 小时以上的长视频,转录可能需要 20-30 分钟。使用异步模式上传后立即返回,后台自动轮询。
python3 skills/tingwu-asr/scripts/transcribe.py /path/to/video.mp4 --async --speakers 2
上传完成后立即返回任务 ID,任务信息保存到 `config/pending_tasks.json`。
监控进程的生命周期是关键差异点:**Agent 的后台进程普遍随会话结束被回收**(Hermes 会话切换界面、Claude Code 会话退出同理)。监控一死,Agent 就收不到"转录完成"信号,长任务静默搁浅。因此分两档:
**档位 A — 会话无关监控(推荐,长任务首选)**:让监控完全脱离 Agent 会话,进度写日志文件,Agent 回来只读状态、不持有进程。
# Claude Code / 任意运行时:nohup 脱离会话,日志落盘 nohup python3 skills/tingwu-asr/scripts/poll_tasks.py --monitor --timeout 7200 --interval 120 \ >> /tmp/tingwu_monitor.log 2>&1 & # 单任务高频盯梢(含 macOS 原生通知):watch_active.sh 本身就是会话无关的 nohup bash skills/tingwu-asr/scripts/watch_active.sh <task_id> >> /tmp/tingwu_watch.log 2>&1 &
Agent 恢复会话后按此顺序接管(不重新提交任务):
1. `cat skills/tingwu-asr/config/pending_tasks.json` — 非空即有未完任务,拿 trans_id 2. `python3 skills/tingwu-asr/scripts/poll_tasks.py`(一次性)— 已完成则当场触发 finish_task 收尾(下载 PPT/生成 Markdown/归档),未完成则打印状态与预计剩余时间 3. finish_task 收尾可能耗时数分钟(185 张幻灯片下载+压缩实测约 3 分钟):**用后台运行且不要设短超时**,或改用 watch_active.sh 接管 4. 需要持续监控再启动档位 A/B,重跑安全幂等(flock 防并发重复归档)
**档位 B — Agent 托管后台进程**:适合 Agent 会话确定存续的短等待。
**无论哪档,重跑 poll_tasks.py 都是安全的**:任务状态以云端为准,pending_tasks.jso
Agent 专用邮箱统一管理:让 Claude Code、Codex 等平台的 Agent 用一套命令收发邮件、整理收件箱、分发任务。支持网易 ClawEmail(claw.163.com)和腾讯 Agent Mail(QQ…
把一句自然语言(机票/高铁/开庭/会议/截止日期/聚会/看病等)或一张票据截图,自动变成苹果「日历」事件 + 一串按事件类型智能提前的「提醒事项」。在 macOS 上运行、经 iCloud 同步到 iPhone/iPad。当用户说「帮我加个日程/提醒」「机票…
律师案件看板。本地零依赖看板服务(案件总览、任务三态看板、期限预警、进度写回)+周研判分析。当用户说"打开看板/dashboard/案件面板/看下案件进度/给我案件周报研判"时使用。案件状态写入与上下文管理用 case-progress(/progress…
案件进度与状态台账管理。案件 case.yaml 的唯一写入引擎(新增任务、推进任务、登记期限、更新案件阶段、校验、存量迁移),Agent 会话的进度加载与写回契约,以及案件进度监控对账。当用户或 Agent…